Gente, necesito ayuda.
He diseñado una app en app inventor la cual posee 34 comandos.
16 encienden un módulo de relés, otros 16 los desconectan y además tengo 2 botones para seleccionar qué sketch va a correr arduino.
En el botón de la foto pretendo que ponga en modo secuencia el módulo. (Solo en 12 canales )
Tengo un sketch que simplemente recibe estos 32 mensajes activando y desactivando relés.
Probado y funcionando perfecto, salvo por un detalle que no entiendo por-qué pasa. (Los relés arrancan energizados todos )
Tengo otro sketch que pone en modo secuencial los mismos relés, solo necesito que secuencien 12.
Probado y funcionando perfecto también.
Siendo muy novato en esto, he intentado con hacer funcionar ambos sketch mediante la selección con esos dos botones pero sin éxito.
He aquí con if pero de la misma manera lo hice con if else, aunque leyendo, quizás sea mejor con switch case, pero no sé manejarlo tampoco.
También probé llamando subrutinas, pero se ve que no estoy diagramando de forma correcta las órdenes.
Para comenzar, no sé si estoy eligiendo bien cómo hacerlo.
Este es el control remoto bt:
Este es el secuenciador:
Este es mi doble sketch:
El botón de secuencia manda un "7" y el botón del control remoto manda un "8"
He diseñado una app en app inventor la cual posee 34 comandos.
16 encienden un módulo de relés, otros 16 los desconectan y además tengo 2 botones para seleccionar qué sketch va a correr arduino.
En el botón de la foto pretendo que ponga en modo secuencia el módulo. (Solo en 12 canales )
Tengo un sketch que simplemente recibe estos 32 mensajes activando y desactivando relés.
Probado y funcionando perfecto, salvo por un detalle que no entiendo por-qué pasa. (Los relés arrancan energizados todos )
Tengo otro sketch que pone en modo secuencial los mismos relés, solo necesito que secuencien 12.
Probado y funcionando perfecto también.
Siendo muy novato en esto, he intentado con hacer funcionar ambos sketch mediante la selección con esos dos botones pero sin éxito.
He aquí con if pero de la misma manera lo hice con if else, aunque leyendo, quizás sea mejor con switch case, pero no sé manejarlo tampoco.
También probé llamando subrutinas, pero se ve que no estoy diagramando de forma correcta las órdenes.
Para comenzar, no sé si estoy eligiendo bien cómo hacerlo.
Este es el control remoto bt:
C++:
int rele1=6;
int rele2=A4;
int rele3=7;
int rele4=A3;
int rele5=8;
int rele6=A2;
int rele7=9;
int rele8=A1;
int rele9=10;
int rele10=2;
int rele11=11;
int rele12=3;
int rele13=12;
int rele14=4;
int rele15=13;
int rele16=5;
int estado=0;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
}
void loop() {
if (Serial.available()>0){
estado=Serial.read();
if (estado == 'a'){
digitalWrite(rele1,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'b'){
digitalWrite(rele1,HIGH);
}
if (estado == 'c'){
digitalWrite(rele2,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'd'){
digitalWrite(rele2,HIGH);
}
if (estado == 'e'){
digitalWrite(rele3,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'f'){
digitalWrite(rele3,HIGH);
}
if (estado == 'g'){
digitalWrite(rele4,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'h'){
digitalWrite(rele4,HIGH);
}
if (estado == 'i'){
digitalWrite(rele5,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'j'){
digitalWrite(rele5,HIGH);
}
if (estado == 'k'){
digitalWrite(rele6,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'l'){
digitalWrite(rele6,HIGH);
}
if (estado == 'm'){
digitalWrite(rele7,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'n'){
digitalWrite(rele7,HIGH);
}
if (estado == 'o'){
digitalWrite(rele8,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'p'){
digitalWrite(rele8,HIGH);
}
if (estado == 'q'){
digitalWrite(rele9,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'r'){
digitalWrite(rele9,HIGH);
}
if (estado == 's'){
digitalWrite(rele10,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 't'){
digitalWrite(rele10,HIGH);
}
if (estado == 'u'){
digitalWrite(rele11,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'v'){
digitalWrite(rele11,HIGH);
}
if (estado == 'w'){
digitalWrite(rele12,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'x'){
digitalWrite(rele12,HIGH);
}
if (estado == 'y'){
digitalWrite(rele13,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'z'){
digitalWrite(rele13,HIGH);
}
if (estado == '1'){
digitalWrite(rele14,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == '2'){
digitalWrite(rele14,HIGH);
}
if (estado == '3'){
digitalWrite(rele15,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == '4'){
digitalWrite(rele15,HIGH);
}
if (estado == '5'){
digitalWrite(rele16,LOW);
digitalWrite(rele1,HIGH);
digitalWrite(rele2,HIGH);
digitalWrite(rele3,HIGH);
digitalWrite(rele4,HIGH);
digitalWrite(rele5,HIGH);
digitalWrite(rele6,HIGH);
digitalWrite(rele7,HIGH);
digitalWrite(rele8,HIGH);
digitalWrite(rele9,HIGH);
digitalWrite(rele10,HIGH);
digitalWrite(rele11,HIGH);
digitalWrite(rele12,HIGH);
digitalWrite(rele13,HIGH);
digitalWrite(rele14,HIGH);
digitalWrite(rele15,HIGH);
}
if (estado == '6'){
digitalWrite(rele16,HIGH);
}
}
}
C++:
int rele1=6;
int rele2=A4;
int rele3=7;
int rele4=A3;
int rele5=8;
int rele6=A2;
int rele7=9;
int rele8=A1;
int rele9=10;
int rele10=2;
int rele11=11;
int rele12=3;
int rele13=12;
int rele14=4;
int rele15=13;
int rele16=5;
void setup()
{
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
pinMode(rele5, OUTPUT);
pinMode(rele6, OUTPUT);
pinMode(rele7, OUTPUT);
pinMode(rele8, OUTPUT);
pinMode(rele9, OUTPUT);
pinMode(rele10, OUTPUT);
pinMode(rele11, OUTPUT);
pinMode(rele12, OUTPUT);
pinMode(rele13, OUTPUT);
pinMode(rele14, OUTPUT);
pinMode(rele15, OUTPUT);
pinMode(rele16, OUTPUT);
}
void loop(){
digitalWrite(rele1,HIGH);
delay(60);
digitalWrite(rele2,HIGH);
delay(60);
digitalWrite(rele3,HIGH);
delay(60);
digitalWrite(rele4,HIGH);
delay(60);
digitalWrite(rele5,HIGH);
delay(60);
digitalWrite(rele6,HIGH);
delay(60);
digitalWrite(rele7,HIGH);
delay(60);
digitalWrite(rele8,HIGH);
delay(60);
digitalWrite(rele9,HIGH);
delay(60);
digitalWrite(rele10,HIGH);
delay(60);
digitalWrite(rele11,HIGH);
delay(60);
digitalWrite(rele12,HIGH);
delay(60);
digitalWrite(rele13,HIGH);
digitalWrite(rele14,HIGH);
digitalWrite(rele15,HIGH);
digitalWrite(rele16,HIGH);
digitalWrite(rele1, HIGH);
delay(60);
digitalWrite(rele1, LOW);
delay(60);
digitalWrite(rele2, HIGH);
delay(60);
digitalWrite(rele2, LOW);
delay(60);
digitalWrite(rele3, HIGH);
delay(60);
digitalWrite(rele3, LOW);
delay(60);
digitalWrite(rele4, HIGH);
delay(60);
digitalWrite(rele4, LOW);
delay(60);
digitalWrite(rele5, HIGH);
delay(60);
digitalWrite(rele5, LOW);
delay(60);
digitalWrite(rele6, HIGH);
delay(60);
digitalWrite(rele6, LOW);
delay(60);
digitalWrite(rele7, HIGH);
delay(60);
digitalWrite(rele7, LOW);
delay(60);
digitalWrite(rele8, HIGH);
delay(60);
digitalWrite(rele8, LOW);
delay(60);
digitalWrite(rele9, HIGH);
delay(60);
digitalWrite(rele9, LOW);
delay(60);
digitalWrite(rele10, HIGH);
delay(60);
digitalWrite(rele10, LOW);
delay(60);
digitalWrite(rele11, HIGH);
delay(60);
digitalWrite(rele11, LOW);
delay(60);
digitalWrite(rele12, HIGH);
delay(60);
digitalWrite(rele12, LOW);
delay(60);
}
El botón de secuencia manda un "7" y el botón del control remoto manda un "8"
C++:
int rele1=6;
int rele2=A4;
int rele3=7;
int rele4=A3;
int rele5=8;
int rele6=A2;
int rele7=9;
int rele8=A1;
int rele9=10;
int rele10=2;
int rele11=11;
int rele12=3;
int rele13=12;
int rele14=4;
int rele15=13;
int rele16=5;
int estado=0;
void setup()
{
pinMode(rele1, OUTPUT);
pinMode(rele2, OUTPUT);
pinMode(rele3, OUTPUT);
pinMode(rele4, OUTPUT);
pinMode(rele5, OUTPUT);
pinMode(rele6, OUTPUT);
pinMode(rele7, OUTPUT);
pinMode(rele8, OUTPUT);
pinMode(rele9, OUTPUT);
pinMode(rele10, OUTPUT);
pinMode(rele11, OUTPUT);
pinMode(rele12, OUTPUT);
pinMode(rele13, OUTPUT);
pinMode(rele14, OUTPUT);
pinMode(rele15, OUTPUT);
pinMode(rele16, OUTPUT);
delay(10000);
}
void loop() {
if (Serial.available()>0){
estado=Serial.read();
}
if (estado == '7'){ //AQUI SELECCIONO SECUENCIA
digitalWrite(rele1,HIGH);
delay(60);
digitalWrite(rele2,HIGH);
delay(60);
digitalWrite(rele3,HIGH);
delay(60);
digitalWrite(rele4,HIGH);
delay(60);
digitalWrite(rele5,HIGH);
delay(60);
digitalWrite(rele6,HIGH);
delay(60);
digitalWrite(rele7,HIGH);
delay(60);
digitalWrite(rele8,HIGH);
delay(60);
digitalWrite(rele9,HIGH);
delay(60);
digitalWrite(rele10,HIGH);
delay(60);
digitalWrite(rele11,HIGH);
delay(60);
digitalWrite(rele12,HIGH);
delay(60);
digitalWrite(rele13,HIGH);
digitalWrite(rele14,HIGH);
digitalWrite(rele15,HIGH);
digitalWrite(rele16,HIGH);
digitalWrite(rele1, HIGH);
delay(60);
digitalWrite(rele1, LOW);
delay(60);
digitalWrite(rele2, HIGH);
delay(60);
digitalWrite(rele2, LOW);
delay(60);
digitalWrite(rele3, HIGH);
delay(60);
digitalWrite(rele3, LOW);
delay(60);
digitalWrite(rele4, HIGH);
delay(60);
digitalWrite(rele4, LOW);
delay(60);
digitalWrite(rele5, HIGH);
delay(60);
digitalWrite(rele5, LOW);
delay(60);
digitalWrite(rele6, HIGH);
delay(60);
digitalWrite(rele6, LOW);
delay(60);
digitalWrite(rele7, HIGH);
delay(60);
digitalWrite(rele7, LOW);
delay(60);
digitalWrite(rele8, HIGH);
delay(60);
digitalWrite(rele8, LOW);
delay(60);
digitalWrite(rele9, HIGH);
delay(60);
digitalWrite(rele9, LOW);
delay(60);
digitalWrite(rele10, HIGH);
delay(60);
digitalWrite(rele10, LOW);
delay(60);
digitalWrite(rele11, HIGH);
delay(60);
digitalWrite(rele11, LOW);
delay(60);
digitalWrite(rele12, HIGH);
delay(60);
digitalWrite(rele12, LOW);
delay(60);
}
if (estado == '8'){ //AQUI SELECCIONO CONTROL REMOTO
if (estado == 'a'){
digitalWrite(rele1,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'b'){
digitalWrite(rele1,HIGH);
}
if (estado == 'c'){
digitalWrite(rele2,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'd'){
digitalWrite(rele2,HIGH);
}
if (estado == 'e'){
digitalWrite(rele3,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'f'){
digitalWrite(rele3,HIGH);
}
if (estado == 'g'){
digitalWrite(rele4,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'h'){
digitalWrite(rele4,HIGH);
}
if (estado == 'i'){
digitalWrite(rele5,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'j'){
digitalWrite(rele5,HIGH);
}
if (estado == 'k'){
digitalWrite(rele6,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'l'){
digitalWrite(rele6,HIGH);
}
if (estado == 'm'){
digitalWrite(rele7,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'n'){
digitalWrite(rele7,HIGH);
}
if (estado == 'o'){
digitalWrite(rele8,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'p'){
digitalWrite(rele8,HIGH);
}
if (estado == 'q'){
digitalWrite(rele9,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'r'){
digitalWrite(rele9,HIGH);
}
if (estado == 's'){
digitalWrite(rele10,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 't'){
digitalWrite(rele10,HIGH);
}
if (estado == 'u'){
digitalWrite(rele11,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'v'){
digitalWrite(rele11,HIGH);
}
if (estado == 'w'){
digitalWrite(rele12,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'x'){
digitalWrite(rele12,HIGH);
}
if (estado == 'y'){
digitalWrite(rele13,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == 'z'){
digitalWrite(rele13,HIGH);
}
if (estado == '1'){
digitalWrite(rele14,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == '2'){
digitalWrite(rele14,HIGH);
}
if (estado == '3'){
digitalWrite(rele15,LOW);
digitalWrite(rele16,HIGH);
}
if (estado == '4'){
digitalWrite(rele15,HIGH);
}
if (estado == '5'){
digitalWrite(rele16,LOW);
digitalWrite(rele1,HIGH);
digitalWrite(rele2,HIGH);
digitalWrite(rele3,HIGH);
digitalWrite(rele4,HIGH);
digitalWrite(rele5,HIGH);
digitalWrite(rele6,HIGH);
digitalWrite(rele7,HIGH);
digitalWrite(rele8,HIGH);
digitalWrite(rele9,HIGH);
digitalWrite(rele10,HIGH);
digitalWrite(rele11,HIGH);
digitalWrite(rele12,HIGH);
digitalWrite(rele13,HIGH);
digitalWrite(rele14,HIGH);
digitalWrite(rele15,HIGH);
}
if (estado == '6'){
digitalWrite(rele16,HIGH);
}
}
}