Praticamente per far illuminare un certo LED do L al pin che é collegato al catodo di quel LED e do H al pin che é collegato al Anodo. Gli altri pin gli faccio entrata perché cosí hanno un impedenza alta e nessun altro led si illumina.
Esempio prendendo il Tuo schema:
voglio far illuminare LED1:
do H al pin 6
do L al pin 5
i pin 4 e 3 li definisco entrate.
io proprio non riesco a farlo funzionare, concettualmente e' banale, ma do il singolo comando come scritto da te uwe ma nulla
qui ho un esempio di 3 pin / 6 led funzionante, ma proprio non riesco ad accenderli se faccio lo sketch io con + di 3 pin
int previousByte;
int incomingByte; //variable used for storing incoming data
void setup(){
Serial.begin(9600); //start serial communication
}
void loop(){
if(Serial.available() > 0){ //if there is data available...
previousByte = incomingByte; //store the old data as previousbyte
incomingByte = Serial.read(); //read the new data
incomingByte = incomingByte - 48; //Subtract 48 form it - 0 has the ASCII value 48, so to get it back to 0, we take away 48
Serial.flush(); //clear the serial 'data bank'
}
if(incomingByte != previousByte){ //if the new data is different to the old suuff...
//turn all pins to output, so we can turn them to low.
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
digitalWrite(2, LOW); //turn all the pins low
digitalWrite(3, LOW);
digitalWrite(4, LOW);
switch(incomingByte){ //turn on the correct pins for the LED selected:
case 1:
pinMode(4, INPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
break;
case 2:
pinMode(4, INPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
break;
case 3:
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
break;
case 4:
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
break;
case 5:
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
break;
case 6:
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
break;
default:
Serial.println("Please select a number between 1 and 6");
break;
}
previousByte = incomingByte; //this makes the code more efficient, by only repeating the above when needed
}
}