Go Down

Topic: controllo ruote con sensori di prossimità (Read 9 times) previous topic - next topic

pakino

Salve ragazzi,
sto realizzando un progetto che prevede dei sensori su ogni ruota che mi segnalano eventuali rigonfiamenti dello pneumatico. In situazione regolare ho un costante ritorno di tensione dei sensori, nel caso in cui uno dei 4 sensori non legge piu (quindi rileva anomalia), arduino mi deve accendere il led corrispondente alla ruota in errore e deve suonare un cicalino. Ho previsto un tasto reset che nel caso in cui non si verificano più anomalie si spegnono led e cicalino, ma solo dopo aver premuto reset.
Ho collegato arduino uno ad una shield con 5 relais, il problema è che nonostante io prema il pulsante reset il relais rimane in errore. All'ingresso di ogni sensore ho inserito una resistenza da 1kohm e una resistenza a massa da 5.5kohm per avere un riferimento di potenziale. Ho perso una serata, ma non riesco a capire dove sbaglio,confido in un vostro aiuto. grazie

int antsx=0;
int antdx=0;
int postsx=0;
int postdx=0;
boolean allarme= false;

void setup() {
 pinMode (antsx , INPUT);  /* pin digitale 2 ingresso sensore ant sx*/
 pinMode (antdx , INPUT);  /* pin digitale 3 ingresso sensore ant dx*/
 pinMode (postsx, INPUT);  /* pin digitale 4 ingresso sensore post sx*/
 pinMode (postdx, INPUT);  /* pin digitale 5 ingresso sensore post dx*/
 pinMode (6, OUTPUT);/* pin digitale 6 uscita buzzer*/
 pinMode (7, OUTPUT);       /* pin digitale 7 uscita led ant sx */
 pinMode (8, OUTPUT);       /* pin digitale 8 uscita led ant dx */     
 pinMode (9, OUTPUT);       /* pin digitale 9 uscita led post sx */
 pinMode (10, OUTPUT);      /* pin digitale 10 uscita led post sx */
 pinMode (11, INPUT);          /* pin digitale 11 reset*/
 
 }
 
 void loop(){
   if ((digitalRead(2)== LOW) or (digitalRead(3)== LOW) or (digitalRead(4)== LOW) or (digitalRead(5)== LOW)){
         if (digitalRead(2)== LOW){
            antsx =1;
            Serial.println("antsx");
            }
           if (digitalRead(3)== LOW) {
            antdx = 1;
            }
           if (digitalRead(4) == LOW){
            postsx = 1;
            }
           if (digitalRead(5)== LOW ){
            postdx = 1;
            }
            allarme = true;
       }     
           
         if ( allarme == true){     /*suona buzzer*/
            digitalWrite((6), LOW);
            }
           if( antsx=1){            /*accende il led antsx*/
             digitalWrite((7), LOW);
             }           
           if( antdx=1){            /*accende il led antdx*/
             digitalWrite((8), LOW);
             }
           if( postsx=1){           /*accende il led postsx*/
             digitalWrite((9), LOW);
             }
           if( postdx=1){           /*accende il led postsx*/
             digitalWrite((10), LOW);
             } 
             
         if ( digitalRead(11) == HIGH){ /* quando si preme il tasto reset*/
                if (digitalRead(2)== HIGH){
                  antsx=0;
                 digitalWrite(7, HIGH);
                 }
                if (digitalRead(3)== HIGH){
                  antdx =0;
                  digitalWrite(8, HIGH);
                  }
                if (digitalRead(4)== HIGH){
                  postsx =0;
                  digitalWrite(9, HIGH);
                  }
                if (digitalRead(5)== HIGH){
                  postdx =0;
                digitalWrite(10, HIGH);
                  }
 if ((antsx == 0) and (antdx==0) and (postsx==0) and (postdx==0)) {
   allarme=false;
 }
 }
 Serial.println(allarme);
     }   
       
           
     
     

Go Up