Skip to content

Depuração

Estevam edited this page Jun 1, 2024 · 1 revision

Dicas de depuração para resolver problemas comuns

Problema: O LCD não exibe as informações corretamente

  1. Verifique as conexões:

    • Certifique-se de que todos os fios estão conectados corretamente.
    • Confira se o endereço I2C do LCD está correto no código. O endereço padrão é geralmente 0x27, mas pode variar.
  2. Ajuste o contraste:

    • Utilize o potenciômetro (se houver) para ajustar o contraste do LCD.
  3. Inicialização correta:

    • Verifique se o método lcd.begin(16, 2) está corretamente configurado para o seu LCD de 16x2.
  4. Teste o LCD:

    • Utilize um código de exemplo básico para testar se o LCD funciona corretamente.
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>

hd44780_I2Cexp lcd;

void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello, World!");
}

void loop() {}

Problema: O botão na porta 13 não altera as informações no LCD

  1. Verifique a conexão do botão:
  • Certifique-se de que o botão está conectado corretamente à porta 13 e ao GND.
  1. Debouncing:
  • Implemente um mecanismo de debouncing para evitar leituras erradas do botão.
  1. Testar o botão:
  • Utilize um código de exemplo básico para testar se o botão está funcionando corretamente.
const int buttonPin = 13;
int buttonState = 0;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {
    Serial.println("Button pressed");
    delay(500); // Simple debouncing
  }
}

Problema: Os dados de temperatura, umidade ou nível de água não são publicados no broker MQTT

  1. Verifique as credenciais:
  • Certifique-se de que SSID, senha, endereço do broker, usuário e senha do MQTT estão corretos.
  1. Verifique a conexão WiFi:
  • Certifique-se de que o dispositivo está conectado à rede WiFi.
  1. Verifique a conexão MQTT:
  • Utilize ferramentas como MQTT Explorer ou MQTT.fx para verificar se as mensagens estão sendo publicadas no broker.
  1. Teste a publicação MQTT:
  • Utilize um código de exemplo básico para testar a publicação de mensagens MQTT.
#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* mqtt_broker = "broker_address";
const char* topic = "test/topic";
const char* mqtt_username = "your_MQTT_username";
const char* mqtt_password = "your_MQTT_password";
const int mqtt_port = 1883;

WiFiClient wifiClient;
PubSubClient client(wifiClient);

void setup() {
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  client.setServer(mqtt_broker, mqtt_port);
  while (!client.connected()) {
    Serial.println("Connecting to MQTT...");
    if (client.connect("ArduinoClient", mqtt_username, mqtt_password)) {
      Serial.println("Connected to MQTT");
    } else {
      Serial.print("Failed to connect, state: ");
      Serial.println(client.state());
      delay(2000);
    }
  }
  client.publish(topic, "Hello from Arduino");
}

void loop() {}

Problema: Os valores lidos dos sensores parecem errados

  1. Verifique as conexões:
  • Certifique-se de que os sensores estão conectados corretamente aos pinos especificados no código.
  1. Teste individual dos sensores:
  • Utilize códigos de exemplo específicos para testar cada sensor individualmente.

Problema: O relé não liga ou desliga a cafeteira

  1. Verifique as conexões:
  • Certifique-se de que o relé está conectado corretamente ao microcontrolador e à cafeteira.
  1. Verifique a lógica de controle:
  • Certifique-se de que a lógica para ligar e desligar o relé está correta no código.
  1. Teste o relé:
  • Utilize um código de exemplo básico para testar o funcionamento do relé.
const int relayPin = 2;

void setup() {
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW); // Desliga o relé inicialmente
}

void loop() {
  digitalWrite(relayPin, HIGH); // Liga o relé
  delay(1000); // Aguarda 1 segundo
  digitalWrite(relayPin, LOW); // Desliga o relé
  delay(1000); // Aguarda 1 segundo
}

Clone this wiki locally