Hello, I want your help to do this please (I've multiplexed 3 LED's):
One of the two buttons allow you to select the module you want to display (only displayed 1 simultaneously), ie, each press will advance to the next module, considering that there are 3 modules are numbered from 1 to 3. The other button, when clicked, will increase by 1 the value of the selected display to the previous button. The program should remember that value had each of the displays.
-All displays start in first round '0' and when the first round is over, each display will remember their value, starting with that value. For example:
First round [ 0,0,0] We put: [2,5,8] So: Second round will start [2,5,8]
I tried putting how to turn on each display with button 2 (P2) but I couldn't check it, I would fail to do that and to remember the value, I have been told that it works with a vector
nt num = 0;
int delayTime;
int counter=1;
// estadoBoton1 será el que pulse para contar
//estadoBoton2 será el que cambie entre módulos
int estadoBoton1 = 0;
int estadoBoton2 = 0;
int P1 = 3;
int P2 = 2;
//Displays multiplexados
int LED1=4;
int LED2=5;
int LED3=6;
void setup (){
//Entradas digitales de los Botones
pinMode(P2, INPUT);
pinMode(P1, INPUT);
//Salidas digitales
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
//3 Leds multiplexados
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop(){
estadoBoton1 = digitalRead(P1);
estadoBoton2 = digitalRead(P2);
Serial.println(estadoBoton1);
delay(50);
Serial.println(estadoBoton2);
delay(50);
//Contador del 1 al 9 y vuelve al 0
if (estadoBoton1 == HIGH) {
num = num+ 1;
}
if (num >= 10){
num=0;
}
//A partir de aqui lo he copiado de internet que se supone que es para cambiar entre displays, pero no he comprobado si funciona
if (estadoBoton2 == HIGH) {
counter + 1;
}
//resetear contador
if(counter == 4) {
counter = 1;
}
}
if(counter == 1)
{
delayTime = 250;
}
else if(counter == 2)
{
delayTime = 100;
}
else if(counter == 3)
{
delayTime = 50;
}
//Light show!
digitalWrite(LED4, HIGH);
delay(delayTime);
digitalWrite(LED4, LOW);
digitalWrite(LED5, HIGH);
delay(delayTime);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
delay(delayTime);
digitalWrite(LED6, LOW);
delay(delayTime);
}
//Esto ya lo teniamos de antes, es para mostrar cada uno de los numeros
switch (num) {
case 0:
limpiar();
cero();
break;
case 1:
limpiar();
uno();
break;
case 2:
limpiar();
dos();
break;
case 3:
limpiar();
tres();
break;
case 4:
limpiar();
cuatro();
break;
case 5:
limpiar();
cinco();
break;
case 6:
limpiar();
seis();
break;
case 7:
limpiar();
siete();
break;
case 8:
limpiar();
ocho();
break;
case 9:
limpiar();
nueve();
}
}
void cero(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
}
void uno(){
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
void dos(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(13,HIGH);
}
void tres(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(13,HIGH);
}
void cuatro(){
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
void cinco(){
digitalWrite(7,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
void seis(){
digitalWrite(7,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
void siete(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
}
void ocho(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
void nueve(){
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
void limpiar(){
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}