Olá pessoal, tudo bem? hoje vou mostrar uma técnica para acionar mais LEDs utilizando menos pinos do Arduino. O nome da técnica é charlieplexing, e utiliza-se de colocar pinos como entrada ou saída, dependendo da necessidade no momento. Abaixo é possível ver em ação o exemplo que vamos fazer.
O circuito completo está abaixo.
O código completo está abaixo, e todos os arquivos (PCI, código, fotos) estão neste Github.
void setup() {
// set the digital pin as output:
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
led1();
delay(62);
led5();
delay(62);
led2();
delay(62);
led6();
delay(62);
led3();
delay(62);
led7();
delay(62);
led4();
delay(62);
led8();
delay(62);
}
void led1(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
}
void led2(){
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, INPUT);
pinMode(5, INPUT);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
}
void led3(){
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
}
void led4(){
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
pinMode(5, INPUT);
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
}
void led5(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
}
void led6(){
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, INPUT);
pinMode(5, INPUT);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
}
void led7(){
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
void led8(){
pinMode(4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, INPUT);
pinMode(5, INPUT);
digitalWrite(4, LOW);
digitalWrite(2, HIGH);
}
Quer aprender a soldar melhor? veja este artigo.
Deixe um comentário