Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
No desenvolvimento de projetos com Arduino, é comum encontrar situações onde o código precisa realizar múltiplas tarefas simultaneamente. O uso de código bloqueante, como a função delay()
, pode impedir que outras tarefas sejam executadas de forma eficiente. O código não bloqueante permite que o Arduino execute várias tarefas ao mesmo tempo, melhorando a responsividade e a eficiência do sistema. Este artigo aborda a importância do código não bloqueante e como implementá-lo em projetos com Arduino.
Project: Neste exemplo, vamos criar um projeto que controla um LED e monitora um sensor de temperatura simultaneamente, sem usar código bloqueante. O objetivo é piscar um LED a intervalos regulares enquanto lemos a temperatura de um sensor e exibimos os valores no monitor serial.
Components List:
Examples:
// Definição dos pinos
const int ledPin = 13; // Pino digital para o LED
const int sensorPin = A0; // Pino analógico para o sensor de temperatura
// Variáveis para controle do tempo
unsigned long previousMillis = 0;
const long interval = 1000; // Intervalo de 1 segundo
void setup() {
// Configuração dos pinos
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Inicializa a comunicação serial
}
void loop() {
// Obter o tempo atual
unsigned long currentMillis = millis();
// Verificar se é hora de alternar o estado do LED
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // Atualiza o tempo anterior
// Alterna o estado do LED
int ledState = digitalRead(ledPin);
digitalWrite(ledPin, !ledState);
}
// Ler o valor do sensor de temperatura
int sensorValue = analogRead(sensorPin);
float temperature = sensorValue * (5.0 / 1023.0) * 100.0; // Conversão para graus Celsius
// Exibir a temperatura no monitor serial
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.println(" C");
// Outras tarefas podem ser adicionadas aqui sem bloquear o código
}
Comentários detalhados:
const int ledPin = 13;
e const int sensorPin = A0;
: Definem os pinos usados para o LED e o sensor de temperatura.unsigned long previousMillis = 0;
e const long interval = 1000;
: Variáveis para controlar o tempo de piscar do LED.void setup()
: Configura os pinos e inicializa a comunicação serial.void loop()
: Executa o código continuamente, alternando o estado do LED a cada segundo e lendo a temperatura do sensor.Este exemplo ilustra como usar a função millis()
para criar um código não bloqueante que permite a execução simultânea de múltiplas tarefas.