Como piscar sem usar a função de atraso no Arduino

Como piscar sem usar a função de atraso no Arduino
Pisca sem atraso () é o projeto Arduino mais simples para uma melhor compreensão dos iniciantes e do Arduino, há uma função interna de atraso () que gera um atraso de um tempo especificado (em milissegundos). Então, por que é necessário fazer um projeto de LEDs piscantes sem uma função de atraso ()? Nesta redação, tentaremos descobrir a resposta para esta pergunta e discutiremos o método pelo qual podemos piscar sem usar a função de atraso () em Arduino.

Por que precisamos piscar sem usar a função de atraso () em Arduino

A função de atraso () produz um atraso de um tempo definido na execução de declarações ou podemos dizer que a função de atraso () faz uma pausa para todo o programa e nenhuma declaração será executada até que o atraso () não chegue ao fim.

Isso significa que não podemos realizar qualquer outra tarefa até que o atraso não seja concluído, essa é a principal preocupação por que às vezes é desencorajado a usar a função de atraso (). Vamos considerar o exemplo de um courier-homem, ele vai para a casa e não encontra ninguém em casa, disseram os vizinhos, que a pessoa em questão estará de volta à sua casa em uma hora. Agora, o que o courier-homem deve fazer? Ou ele pode esperar ou entregar as parcelas dos clientes vizinhos e voltar depois de uma hora para entregar o pacote dessa pessoa.

Da mesma forma, na programação, não recomendamos o uso da função de atraso () e fazer uma pausa no programa inteiro por algum tempo, em vez disso, preferimos executar alguma outra tarefa enquanto o piscar de LED do LED.

Piscar sem usar o código de função de atraso () em Arduino

Em Arduino, podemos piscar os LEDs sem usar a função de atraso () por um código muito simples. Antes de passar pelo código, vamos explicar o objetivo de algumas funções internas que estão sendo usadas no código:

Funções Propósito
pinmode () Esta função é usada para definir o pino específico para atuar como uma saída ou entrada
DigitalWrite () Esta função é usada para configurar o pino de acordo com estados altos ou baixos
Serial.começar() Esta função é usada para a comunicação serial
milis () Esta função é usada para extrair o tempo de execução do código em milissegundos

Considere o seguinte código:

int led = 13;
int x = 1;
não assinado D1, D2;
Void Setup ()
pinmode (LED, saída);
DigitalWrite (LED, 1);
Serial.começar (9600);

Void Loop ()
d2 = millis ();
if (d2-d1> = 1000)
x = 1-x;
d1 = millis ();
DigitalWrite (LED, X);

A explicação do código acima é:

  • Definimos uma variável "x" com um tipo de dados inteiro e será usado para alterar o estado do LED.
  • Também definimos um LED variável com um tipo de dados inteiro e armazenamos 13. Este 13 será usado para o treze pinos numéricos de Arduino.
  • Duas variáveis ​​D1 e D2 são definidas com o tipo de dados longo não assinado. O tipo de dados “não assinado” é usado para armazenar 32 bits de número e pode armazenar até 4.294.967.295 números e o que é necessário para dizer é que esse tipo de dados não armazena números negativos nele nele.
  • No void setup (), primeiro, usamos a função pinmode () e declaramos o pino 13 como um pino de saída.
  • Em seguida, usamos a função DigitalWrite () para tornar o estado do pino 13 alto.
  • Por fim, usamos a comunicação serial a uma taxa de transmissão de 9600.
  • No loop void (), digitamos o código de piscar de LEDs porque queremos repeti -lo por um período de tempo infinito.
  • Extraímos o tempo de execução do código até agora e armazenamos o valor na variável d2.
  • Então, usando a instrução IF, verificamos a condição se (d2-d1> 1000), se for verdade, mudará o valor de x.
  • Em seguida, armazenamos o outro valor da execução do código em D1.
  • Por fim, usando a função DigitalWrite (), mudou o estado do LED usando o valor de x.
  • Isso continuará por um tempo infinito (porque o valor de D2-D1 não será maior que 1000 em qualquer caso).

Simulação

Vamos executar esse código na simulação do Proteus, abriremos o Proteus e encontraremos os seguintes componentes:

  1. Arduino Uno R3
  2. LIDERADO
  3. Resistor
  4. Chão

Conecte o terminal único do resistor com o pino 13 de Arduino, conecte o terminal positivo do LED com o outro terminal do resistor e conecte o solo ao terminal negativo do LED. Depois que o circuito for concluído, clique duas vezes em Arduino e envie um arquivo "hexadecimal" do código Arduino.

Jogue o projeto e o LED começará a piscar como mostrado abaixo:

Configuração de hardware

O mesmo circuito que é simulado no proteus será montado na placa de ensaio. Usamos fios de jumper para conectar os componentes que são LED, Arduino e Resistor:

O fio do jumper preto é conectado ao solo do Arduino e ao terminal negativo do LED. Em seguida, um resistor (220 ohms) está conectado ao terminal positivo do LED e outra perna do resistor (220 ohms) está conectada ao pino 13 de Arduino usando o fio de saltador vermelho. O código já está carregado no Arduino, o funcionamento do projeto é:

O LED está piscando com sucesso sem usar a função de atraso ().

Conclusão

A função pisca sem atraso () em Arduino é o projeto de nível para iniciantes, que é usado para demonstrar como o projeto pode ser executado sem usar a função de atraso (). Sem usar a função de atraso (), não somos restritos a uma única tarefa e podemos executar outras instruções do código. Neste artigo, explicamos o piscar liderado sem a função () em Arduino com a ajuda de uma demonstração de sua simulação, bem como sua configuração de hardware.