Sensor de movimento

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{
  }

//

}

????????

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.