ciao ragazzi volevo chiedervi info circa questo piccolo problema in cui mi son imbattuto..da premettere sono un principiante a riguardo.
su la guida "primi passi con arduino" mi richiede, al fine del capitolo che tratta i led e il potenziometro ,l'accensione di uno solo dei tre led in base alla posizione del cursore del potenziometro..ora volevo chiedervi qual fosse la soluzione migliore e in paritcolare quale struttura di controllo usare per adempiere a tale obiettivo..io pensavo a switch,case considerando che dovrei dividere il valore massimo del tempo di accensione (1024)in 3 parti e quindi far accendere il primo led tra i valori di 0 e 340 il secondo tra 341e 681 e il terzo tra 682 e 1023..Potete aiutarmi??
Per favore, modifica il titolo e NON mettere il maiuscolo, equivale a urlare su qualunque forum.
L'idea è giusta.
Arduino, che utilizza il compilatore gcc, è ammessa la sintassi con dei range (meglio mettere quegli spazi prima e dopo i 3 puntini) :
switch(valore)
{ case 0 ... 500:
case 501 ... 1000:
}
Non tutti i compilatori C/C++ accettano tale sintassi.
Sarebbe preferibile (e quindi più "portabile" ovvero compilabile da qualunque compilatore) questa sintassi:
if(valore>=0 && valore<=500)
{
}
else if(valore>=501 && valore <=1000)
{
}
mi scuso non l'avevo notato.....comunque il codice che ho utilizzato è questo:
int Pin1=9 ; // inizializzo le variabili
int Pin2=10 ;
int Pin3=11 ;
int Pausa=1000;
void setup(){
pinMode(Pin1,OUTPUT);
pinMode(Pin2,OUTPUT);
pinMode(Pin3,OUTPUT);
}
void loop(){
Pausa = analogRead(0); //leggo il potenziometro e da qui assegno il valore a PAUSA DOVE (PIN)=(0) =si sta usando il pin A0
switch (Pausa) {
case Pausa>0 && Pausa<341 :
digitalWrite(Pin1,HIGH);
delay(500);
digitalWrite(Pin1,LOW);
delay(500);
break;
case Pausa>341 && Pausa<681:
digitalWrite(Pin2,HIGH);
delay(500);
digitalWrite(Pin2,LOW);
delay(500);
break;
case Pausa>682 && Pausa<1000:
digitalWrite(Pin3,HIGH);
delay(500);
digitalWrite(Pin3,LOW);
delay(500);
break;
}
}
ma risulta un errore e non capisco su cosa come risolvo?
errore:
PROGETTO_7.ino: In function 'void loop()':
PROGETTO_7:15: error: 'Pausa' cannot appear in a constant-expression
PROGETTO_7:15: error: 'Pausa' cannot appear in a constant-expression
PROGETTO_7:22: error: 'Pausa' cannot appear in a constant-expression
PROGETTO_7:22: error: 'Pausa' cannot appear in a constant-expression
PROGETTO_7:29: error: 'Pausa' cannot appear in a constant-expression
PROGETTO_7:29: error: 'Pausa' cannot appear in a constant-expression
ok ho risolto cosi come mi hai consigliato ti ringrazio tantissimo..
int Pin1=9 ; // inizializzo le variabili
int Pin2=10 ;
int Pin3=11 ;
int Pausa=1000;
void setup(){
pinMode(Pin1,OUTPUT);
pinMode(Pin2,OUTPUT);
pinMode(Pin3,OUTPUT);
}
void loop(){
Pausa = analogRead(0); //leggo il potenziometro e da qui assegno il valore a PAUSA DOVE (PIN)=(0) =si sta usando il pin A0
switch (Pausa) {
case 0 ... 340 :
digitalWrite(Pin1,HIGH);
delay(500);
digitalWrite(Pin1,LOW);
delay(500);
break;
case 341 ... 681 :
digitalWrite(Pin2,HIGH);
delay(500);
digitalWrite(Pin2,LOW);
delay(500);
break;
case 682 ... 1000 :
digitalWrite(Pin3,HIGH);
delay(500);
digitalWrite(Pin3,LOW);
delay(500);
break;
}
}
comunque avevo a riguardo un'altra richiesta. Volevo chiedere se ci fosse una guida, un libro, manuale che spiegasse in maniera esauriente tutte le strutture di controllo e i vari modi come usarle per Arduino
in realtà dovresti modificare il titolo del post di apertura, altrimenti non risolvi la questione, i nuovi post sono sempre in maiuscolo....
skizzo942:
comunque avevo a riguardo un'altra richiesta. Volevo chiedere se ci fosse una guida, un libro, manuale che spiegasse in maniera esauriente tutte le strutture di controllo e i vari modi come usarle per Arduino
Io ho trovato questo pdf molto ben fatto.
E' stato fatto da Prof.ssa TIZIANA MARSELLA, qui il suo sito. C'è a destra un link "Programmare Arduino" per il pdf.
http://www.itisvoltafr.it/~marsella/