Re: Problema già postato![RISOLTO]

Come già postato in precedenza (quando inizializzo Arduino)
il problema e quando uso le uscite digitali mi scattano i relè!
risolto con le uscite analogiche......ma se usando A0 in combinazione con un tasto in7
funziona alla meraviglia , nel caso del secondo bottone in8 con combinazione A1 :roll_eyes:
il relè resta acceso!
e possibile la combinazione fatta nello sketch???
ho cmbiato pin con pin1 :.

#include <LiquidCrystal.h>

int in= 7;         //+
int in2=8;        //+
int in3=9;        //-
int in4=10;       //- 
 
const int buttonPin =7;            // numero interruttore 1
const int RelePin =A0;            // Numero Relè         <-----------funzionante
const int buttonPin1 =8;         // numero interruttore 2
const int RelePin1 =A1;           // Numero Relè2        <------------il relè rimane acceso

int buttonState = 0;         
int buttonState1 =0; 

int a = 0;
int b = 0;
int c=  0;
int d = 0;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);



void setup() {
  
   pinMode(in,INPUT);              //entrate Lcd
  lcd.begin(16, 2);
  lcd.print("Il MioSat");
  delay(2000); lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Oriz.");
  lcd.setCursor(0, 1);
  lcd.print("Vert.");
  pinMode(RelePin, OUTPUT);      // uscita relè
  pinMode(buttonPin, INPUT);     // funzione bottone
  pinMode(RelePin1, OUTPUT);      // uscita relè2
  pinMode(buttonPin1, INPUT);     // funzione bottone2
  
    
}

void loop(){  
                                                 
  
   c=digitalRead(in);
  if ( c== 1){b=b+1; delay(200);}
  c=digitalRead(in3);
  if ( c== 1){b=b-1; delay(500);}
  d=digitalRead(in2);
  if ( d== 1){a=a+1;delay(500);}
  d=digitalRead(in4);
  if ( d== 1){a=a-1;delay(500);}
 
 
  lcd.setCursor(6, 0);
  lcd.print(a); lcd.print("    ");
  lcd.setCursor(6, 1); 
  lcd.print(b); lcd.print("    "); 
  
  
                                                                           // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
   if (buttonState == LOW) {                                               // check if the pushbutton is pressed.
   digitalWrite(RelePin, HIGH);                                              // 
   
} 
 else { digitalWrite(RelePin, LOW);   

  buttonState1 = digitalRead(buttonPin1);
   if (buttonState == LOW)                                                // check if the pushbutton is pressed.
   digitalWrite(RelePin1, HIGH);                                              // 
   

 else { digitalWrite(RelePin1, LOW);   
 
   
      
  }}
 }

Forse hai fatto un po di casino con gli else in fondo? :grin:

Doveva essere qualcosa del genere mi sa:

  buttonState = digitalRead(buttonPin);                                   // read the state of the pushbutton value:
   if (buttonState == LOW) {                                               // check if the pushbutton is pressed.
     digitalWrite(RelePin, HIGH);                                              // 
  } 
  else { 
    digitalWrite(RelePin, LOW);   
  }

  buttonState1 = digitalRead(buttonPin1);
  if (buttonState1 == LOW)  {                                              // check if the pushbutton is pressed.
   digitalWrite(RelePin1, HIGH);                                              // 
  }
  else { 
    digitalWrite(RelePin1, LOW);         
  }

@leen15 ha ragione, ricorda che quando usi degli if - else multipli devi usare una sintassi simile :

if(cond1) {
....
}else if(cond2){
....
....
}else if(condN-1){
....
}else{
....
}

"else if" non mi é mai tanto piacciuto.
Normalmente riesco sempre a evitarli facendo i controlli in modo opportuno.

Ciao Uwe

Risolto c'è da stare attento quando si copia
tra } ben staccati XD
leen15 hai ragione adesso funziona!
Lo avevo già intravisto e corretto ho anche trovato il sistema
di usare tutti 4 i canali in piu due Analogici!
Grazie

Bene meglio cosi! :wink: