Arduino: Temporizadores e Interrupcoes: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 20: Linha 20:
Uma aplicação interessante da função <code>millis()</code> é poder realizar temporizações sem pausar o programa em execução.
Uma aplicação interessante da função <code>millis()</code> é poder realizar temporizações sem pausar o programa em execução.


;Exemplo: Programa Blink sem pausar programa <ref>https://randomnerdtutorials.com/interrupts-timers-esp8266-arduino-ide-nodemcu/</ref>.
;Exemplo: Programa '''Blink''' sem pausar programa <ref>https://randomnerdtutorials.com/interrupts-timers-esp8266-arduino-ide-nodemcu/</ref>.
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
/*
/*

Edição das 15h37min de 9 de novembro de 2021

Arduíno: Temporizadores e Interrupções

Temporizadores

O Arduíno possui várias funções que permitem implementar temporizadores e realizar medidas de tempo.

Funções de pausa temporizada no programa
delay(ms)
Pausa o programa por uma quantidade de tempo especificada como parâmetro em milissegundos. (onde 1000 milissegundos é 1 segundo).
delayMicroseconds(us)
Equivalente ao delay() com tempo especificado microssegundos.
Funções para medidas de tempo
millis()
Retorna o número de milissegundos decorridos desde que a placa Arduíno foi iniciada com o programa atual.
micros()
Equivalente ao millis() retornando o número de microssegundos.

Temporização sem pausar o programa

Uma aplicação interessante da função millis() é poder realizar temporizações sem pausar o programa em execução.

Exemplo
Programa Blink sem pausar programa [1].
/*
 * Blink sem delay();
 */
const int ledPin =  13;           // pino do led
int ledState = LOW;               // estado do led
unsigned long previousMillis = 0; // tempo anterior no qual o led foi chaveado
const long interval = 1000;       // intervalo para piscar led (milliseconds)

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    // salva o último tempo em que o led foi chaveado
    previousMillis = currentMillis;
    // chaveia o led:
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
    // atualiza estado do led:
    digitalWrite(ledPin, ledState);
  }
}

Laboratório 1: Comunicação serial entre dois Arduínos

Monitor Serial
O monitor serial permite enviar dados do computador ao Arduíno pela interface serial USB.

Procedimentos:

  1. Carregar programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel e acionar o led do pino 13 a partir de comandos H e L enviados pelo monitor serial.
Comunicação entre dois Arduínos

Procedimentos:

  1. Conectar com um par de fios os dois Arduínos através das portas seriais de ambos os microcontroladores: TX->RX e RX<-TX;
  2. Carregar no receptor o programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel;
  3. Carregar no emissor o código abaixo;
  4. Observar a comunicação serial a partir do led piscando no receptor e também monitorar a troca de mensagens a partir do monitor serial.

Referências


Evandro.cantu (discussão) 09h51min de 9 de novembro de 2021 (-03)