estou tentando fazendo um trabalho da faculdade... quando eu faço a simulação no tikercard o programa funciona normalmente mas quando coloco no arduino uno
// C++ code
//
#include <LiquidCrystal.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
int PIRentrada = 2;
int PIRsaida = 0;
int led_red = 8;
int led_green = 12;
int led_yellow = 4;
int led_blue = 11;
int pir_entrada = 2;
int pir_saida = 7;
int detecta_1 =0;
int valor_acumulado_1 =0;
int detecta_2 =0;
int valor_acumulado_2 =0;
int falta;
int pushbutton = 10;
int botao = 10;
int estado_botao = 0;
int flag_botao = 0;
int estado_led = 1;
//Define os pinos que serão utilizados para ligação ao display
LiquidCrystal lcd(0,1,3,5,6,9);
void setup()
{
pinMode(led_red, OUTPUT);//declara led vermelha como saida
pinMode(led_green, OUTPUT);//declara led verde como saida
pinMode(led_yellow, OUTPUT);//declara amarelo como saida
pinMode(pir_entrada, INPUT);//declara o sensor PIR como Entrada
pinMode(pir_saida,INPUT);//declara o sensor PIR de N7 como Entrada
lcd.begin(16,2); //especificar numero de colunas e linhas
//Serial.begin(9600);
bateria();
}
void loop()
{
//botao_();
led();
// bateria();
}
void botao_()
{
estado_botao = digitalRead(botao);// ATRIBUI O PINO DE ENTRADA BOTAO A VARIAVEL estado_botao
if(( estado_botao == 1 )&&( flag_botao == 0 )) // TESTA A VARIALVEL SE É 1
{
flag_botao = 1;
if( estado_led == 1)
{
estado_led=0;
digitalWrite( led_blue, HIGH );
lcd.clear();
lcd.print("Ligado");
while(estado_led == 0){
led();
}
}
else if( estado_led == 0)
{
estado_led=1;
detecta_1 = 0;
detecta_2 = 0;
digitalWrite( led_blue, LOW );
lcd.clear();
lcd.print("desligado");
//Serial.println("DESLIGADO");
//PIRentrada == LOW;
//PIRsaida == LOW;
digitalWrite (led_red, LOW);
digitalWrite (led_green, LOW);
}
delay(50);
}// fim
if( estado_botao == 0 )
{
flag_botao=0;
delay(50);
}
}
void led()
{
PIRentrada = digitalRead(pir_entrada);//Le o valor de entrada 2
PIRsaida = digitalRead(pir_saida);//Le o valor de entrada 7
if(PIRentrada == HIGH )//Se o Sensor enviar o valor HIGH(presença) e na entrada
{
digitalWrite (led_green, HIGH);//Acende o LED Verde
contagem_1();
}
if(PIRsaida == HIGH)
{
digitalWrite (led_red, HIGH);//Acende o LED VERMELHO
contagem_2();
}
if (PIRentrada == LOW)
{
digitalWrite (led_green, LOW);//Apaga o LED Verde
//lcd.clear();
}
if (PIRsaida == LOW)
{
digitalWrite (led_red, LOW);//Apaga o LED Vermelho
//lcd.clear();
}
if( estado_led == 0)
{
//detecta_1 = 0;
//detecta_2 = 0;
//botao_();
}
}
void contagem_1()
{
valor_acumulado_1=detecta_1+1;
detecta_1 = valor_acumulado_1;
lcd.setCursor(0,1);
lcd.print("entrada: " + String(detecta_1));
//Serial.println(detecta_1);
delay(5000);
}
void contagem_2()
{
valor_acumulado_2 = detecta_2+1;
detecta_2 = valor_acumulado_2;
lcd.setCursor(0,1);
lcd.print("saida: " + String(detecta_2));
//Serial.println(detecta_2);
if(detecta_1 > detecta_2)
{
lcd.clear();
falta = detecta_1 - detecta_2 ;
digitalWrite(led_yellow, HIGH);//Acende o led amarelo
//Serial.println("A quantidade de entrada nao corresponde a saida");
//Serial.println("Quantidade em falta:" + String(falta));
lcd.setCursor(0,0);
lcd.print("A quantidade de entrada nao corresponde a saida");
lcd.scrollDisplayLeft();
delay(400);
//lcd.setCursor(0,1);
//lcd.print("Quantidade em falta:" + String(falta));
//lcd.scrollDisplayLeft();
}
if(detecta_1 == detecta_2)
{
digitalWrite(led_yellow, LOW);
}
delay(5000);
}
void bateria() {
int v = 0;
v = map(analogRead(A0), 0, 1023,0, 100); // metodo para converter de analogico para digital
//se bateria menor que 60%
if(v>60){
//lcd.clear();
lcd.print( "bateria em" + String(v) + "%");
}
// bateria menor que 30%
else if ( v < 30){
//lcd.clear();
lcd.print( "bateria em" + String(v) + "%");
}
// bateria menor que 10%
else if ( v < 10){
//lcd.clear();
lcd.print( "bateria em" + String(v) + "%");
}
//MENOR QUE 5%
else if ( v < 5){
//lcd.clear();
lcd.print( "bateria em" + String(v) + "%");
}
else{
}
//
}