Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Código Não Bloqueante no Arduino

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:

  1. Arduino Uno (1 unidade)
  2. LED (1 unidade)
  3. Resistor de 220 ohms (1 unidade)
  4. Sensor de temperatura LM35 (1 unidade)
  5. Protoboard (1 unidade)
  6. Jumpers (vários)

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.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.