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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 51: Linha 51:
</syntaxhighlight>
</syntaxhighlight>


===Laboratório 1: Comunicação serial entre dois Arduínos===
===Laboratório 1: Blink sem pausar o programa em execução===
 
*Carregar e testar programa exemplo '''Blink''' sem pausar o programa.
;Monitor Serial: O '''monitor serial''' permite enviar dados do '''computador''' ao '''Arduíno''' pela '''interface serial USB'''.
 
Procedimentos:
#Carregar programa exemplo '''[http://www.arduino.cc/en/Tutorial/PhysicalPixel 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:
:[[Arquivo:SerialArduino.jpg | 300px]]
 
Procedimentos:
#Conectar com um par de fios os dois Arduínos através das '''portas seriais''' de ambos os microcontroladores: TX->RX e RX<-TX;
#Carregar no '''receptor''' o programa exemplo '''[http://www.arduino.cc/en/Tutorial/PhysicalPixel Arquivo/Exemplos/Communication/PhysicalPixel]''';
#Carregar no '''emissor''' o código abaixo;
#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==
==Referências==

Edição das 15h39min 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: Blink sem pausar o programa em execução

  • Carregar e testar programa exemplo Blink sem pausar o programa.

Referências


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