1
resposta

[Projeto] Circuito de alarme

Galera, estou tentando construir um circuito com Tinkercad. Estou usando um controlador Arduino e programando os componentes em C++

Acontece o seguinte, toda vez que eu faço a configuração para instalar meu monitor LCD, o restante do código para de funcionar. Alguma ideia de qual pode ser o problema?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (32, 16, 2);

// Variáveis

int luzSirene = 4;     // LED
int somSirene = 7;     // Piezo
int botaoPorta = 1;    // Botão (4 pinos)
int botaoJanela = 2;   // Botão (4 pinos)
float sensorMovim = A0;    // Sensor PIR
float sensorLumno = A4;     // Fotorresistor



void setup() {
 
  
  pinMode(luzSirene, OUTPUT);
  pinMode(somSirene, OUTPUT);
  pinMode(botaoPorta, INPUT_PULLUP);
  pinMode(botaoJanela, INPUT_PULLUP);
  pinMode(sensorMovim, INPUT);
  pinMode(sensorLumno, INPUT);
  
  
  lcd.begin(16, 2);  // Inicializa o LCD com 16 colunas e 2 linhas
  lcd.backlight();   // Liga o backlight do LCD
  lcd.init();        // Inicializa o LCD (não é necessário se já foi chamado o lcd.begin())
  lcd.clear();       // Limpa o conteúdo do LCD
  
}

void loop() {
  if (digitalRead(botaoPorta) == HIGH ){
    digitalWrite(luzSirene, HIGH); // Acende o LED	
    tone(somSirene, 1000); // liga a cirene e como não tem duração definida a sirene não desliga
  }
  
  if (digitalRead(botaoJanela) == HIGH ){
    digitalWrite(luzSirene, HIGH); // Acende o LED	
    tone(somSirene, 1000); // liga a cirene
  }
  
  
 int movimento = digitalRead(3);// Variavel pra verificar se tem movimento ou não
  
  if  (movimento == HIGH){
    digitalWrite(luzSirene, HIGH); // Acende o LED	
    tone(somSirene, 1000); // liga a cirene
  }
}

Tirei o LCD da tela pra testar, mas estava com ele conectado e o problema persistia... Alguém pra me dar uma luz ? kkkk

1 resposta

Oii, Nicole, tudo bem com você?

Vi que você usou a biblioteca LiquidCrystal_I2C para controlar o LCD: está certinho. No entanto, a inicialização do objeto lcd parece estar errada.

Você está passando os parâmetros (32, 16, 2), mas normalmente esses parâmetros deveriam ser o endereço I2C do LCD, o número de colunas e o número de linhas, respectivamente.

Como não tenho acesso a seu projeto, vou deixar algumas sugestões para te ajudar a solucionar o problema, ok? :)

  • Endereço I2C: como comentei anteriormente, o endereço I2C do seu LCD é realmente 32.

  • Inicialização do LCD: a chamada lcd.init(); não é necessária se você já chamou com o lcd.begin(16, 2);. Você pode remover a linha lcd.init();.

  • Conflito de Pinos: verifique se não há conflitos de pinos entre o LCD e outros componentes do circuito. Observe se todos os pinos que você está usando no Arduino não estão sendo compartilhados entre o LCD e outros componentes.

  • Alimentação: veja, por favor, se o LCD e os outros componentes estão sendo alimentados direitinho. A falta de energia pode causar comportamentos erráticos.

  • Teste de Componentes: faça um teste isolado com o LCD, sem outros componentes conectados, para garantir que o LCD está funcionando da maneira certa com o código básico de inicialização.

  • Código de Teste: use um exemplo básico de código que apenas inicializa o LCD e exibe uma mensagem para garantir que o problema não está no restante do seu código. Neste link tem um exemplo do tinkercad apenas usando LCD que pode te ajudar.

Se outra dúvida surgir, estamos disponíveis aqui no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software