Sono nuovo, non riesco ad accendere il mio LED RGB come vorrei con pulsanti

Ciao a tutti,

Sto provando di giocare con Arduino Uno per capire come funziona, non ho nessuna formazione in elettronica o programmazione purtroppo.

Ho provato a fare un circuito in cui 3 pulsanti accendono ogni uno un colore diverso sul LED RGB, altrimenti dovrebbe rimanere spento.
Ma ottengo come risultato un LED acceso rosso e i pulsanti non fanno cambiare il colore… non capisco qual’è il problema? nel codice o nel cablaggio?

questo è il mio sketch

int switchstateblue=0;
int switchstategreen=0;
int switchstatered=0;

const int blueLEDPin=10;
const int greenLEDPin=9;
const int redLEDPin=11;

int blueValue=0;
int greenValue=0;
int redValue=0;

void setup(){
  for(int pinNumber=2; pinNumber<5; pinNumber++){
    pinMode(pinNumber, INPUT);
  }
  pinMode(blueLEDPin, OUTPUT);
  pinMode(greenLEDPin, OUTPUT);
  pinMode(redLEDPin, OUTPUT);
}

void loop(){
  switchstateblue=digitalRead(blueValue);
  delay(5);
  switchstategreen=digitalRead(greenValue);
  delay(5);
  switchstatered=digitalRead(redValue);
  delay(5);
  
  if (switchstateblue==HIGH){
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  digitalWrite(9, LOW);
 }else if (switchstategreen==HIGH) {
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(9, HIGH);
 }else if (switchstatered==HIGH){
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(9, LOW);
 }
 }

Questo è il cablaggio:

Benvenuto. :) Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0

I pulsanti non li puoi collegare così direttamente. Scheda numero 1 del primo link.

Ciao nid e grazie per la risposta!

Purtroppo non capisco cosa intendi, perché è sbagliato il collegamento dei pulsanti? Scusami tanto sono un vero e proprio noob, ho guardato i schemi che mi hai indicato (grazie) purtroppo non capisco dove sbaglio?

Come avrai capito sicuramente sto seguendo i progetti dello starter kit, cercando di modificarli per riutilizzare cose appena imparate e applicarle in un'altro modo, sbagliare e imparare... ma non è semplice da solo!

Ciao, hai collegato il cavo che va da gnd nella solita fila del cavo che va al pin di arduino, questo fa si che il pulsante è come se non ci fosse, tutti e tre i pin di arduino sono costantemente a massa. Devi spostare i cavi che vanno da gnd al pulsante sull’altro piedino del pulsante o se ti torna meglio sposta i cavi che vanno ai pin di arduino sull’altro piedino del pulsante

Se guardi la scheda numero 1 in basso a sinistra c'e' come si deve collegare un pulsante (titolo pushbutton to 5V) Ci va un resistenza tra GND e pushbutton. Poi prelevi il segnale tra resistenza e pushbutton.

Anche se i pulsanti fossero collegati correttamente... non funzionerebbe. Non vedo un punto del programma in cui leggi lo stato dei pulsanti. Vedo leggere solo tre volte lo stato del pin 0... i pulsanti dovrebbero essere sui pin 2 - 3 - 4

Paulus dici qui?

int blueValue=0;
int greenValue=0;
int redValue=0;

Yes, @Paulus dice bene. Hai dichiarato 9 cose, 6 sono pin, 3 sono variabili per contenere le letture.

int switchstateblue=0;
int switchstategreen=0;
int switchstatered=0;

const int blueLEDPin=10;
const int greenLEDPin=9;
const int redLEDPin=11;

int blueValue=0;
int greenValue=0;
int redValue=0;

Perciò le ultime tre sono i pin di dove colleghi i pulsanti. Sarebbe meglio anche a loro dare un nome consono, blueValuePin ad esempio. Inoltre anche loro possono essere const ancora meglio [u]const byte[/u] e non [u]const int[/u]

Dai ragazzi non cosí negativi. Ha messo delle resisenze sui LED. ;) ;) ;) ;)

Ciao Uwe

Wado: Sto provando di giocare con Arduino Uno per capire come funziona, non ho nessuna formazione in elettronica o programmazione purtroppo.

Qui due utili manualetti in italiano, pubblicati dalla prof. Marsella Tiziana Marsella_Tiziana Applicazioni e ProgrammazioneArduino

Qui invece manuali in inglese su Arduino, free per uso personale. Ci sono almeno 2 getting started (manuali per iniziare). http://it-ebooks.info/search/?q=arduino&type=title

Grazie mille Nid!

Per info ho risolto con un po’ di aiuto il mio problema.

Abbiamo fatto cosi :

int switchstateblue=0;
int switchstategreen=0;
int switchstatered=0;

const int blueLEDPin=10;
const int greenLEDPin=9;
const int redLEDPin=11;

int blueValue=0;
int greenValue=0;
int redValue=0;

void setup(){
  Serial.begin(9600);
  
  for(int pinNumber=2; pinNumber<5; pinNumber++){
    pinMode(pinNumber, INPUT);
  }
  pinMode(blueLEDPin, OUTPUT);
  pinMode(greenLEDPin, OUTPUT);
  pinMode(redLEDPin, OUTPUT);
}

void loop(){
  switchstateblue=digitalRead(2);
  delay(5);
  switchstategreen=digitalRead(3);
  delay(5);
  switchstatered=digitalRead(4);
  delay(5);
  
  /*Serial.print("Blue:");
  Serial.println(switchstateblue);
  
  Serial.print("Green:");
  Serial.println(switchstategreen);
  
  Serial.print("Red:");
  Serial.println(switchstatered);
  
  Serial.println("------------");*/

  if (switchstateblue==HIGH){
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(9, LOW);
  }
  else if (switchstategreen==HIGH) {
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(9, HIGH);
  }
  else if (switchstatered==HIGH){
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(9, LOW);
  } else {
    digitalWrite(9,LOW);
    digitalWrite(10,LOW); 
    digitalWrite(11,LOW);
  }
  
}