Hola ¡buen día!
Estoy realizando un proyecto con un Arduino Mega 2560 y un módulo GSM SIM900.
Mi proyecto consiste en 10 leds que son prendidos mediante un toggle switch de 3 posiciones (cada dos leds hay un toggle switch, por lo que estoy utilizando 10 leds y 5 switches). Los leds prenden de la siguiente forma:
Primera Posición del switch : prende un led
Segunda posición del switch: prenden dos leds
Mis problemas son:
-
Me gustaría que se mandara un sólo mensaje cada vez que se prende el led (ahora mismo cuando prendo el led me manda muchos mensajes)
-
Al insertar el código para mandar mensaje, cuando prendo todos los leds en la primera posición del switch se prenden en secuencia (el 1 siginifca el led prendido y los 0 los leds apagados).
En la segunda posición no tengo ese mismo problema.
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Aquí inserto mi código;
#include <SoftwareSerial.h>
SoftwareSerial SIM900(10, 11);
int led1 = 44;
int led2 = 45;
int led3 = 46;
int led4 = 47;
int led5 = 48;
int led6 = 49;
int led7 = 50;
int led8 = 51;
int led9 = 52;
int led10 = 53;
int Port1 = 22;
int Port2 = 23;
int Port3 = 22;
int Port4 = 23;
int Port5 = 22;
int Port6 = 23;
int Port7 = 22;
int Port8 = 23;
int Port9 = 22;
int Port10 = 23;
void setup() {
Serial.begin(19200);
SIM900.begin(19200);
pinMode(Port1, INPUT_PULLUP);
pinMode(Port2, INPUT_PULLUP);
pinMode(Port3, INPUT_PULLUP);
pinMode(Port4, INPUT_PULLUP);
pinMode(Port5, INPUT_PULLUP);
pinMode(Port6, INPUT_PULLUP);
pinMode(Port7, INPUT_PULLUP);
pinMode(Port8, INPUT_PULLUP);
pinMode(Port9, INPUT_PULLUP);
pinMode(Port10, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
}
void loop() {
if (digitalRead(Port1) == 0) {
digitalWrite(led2, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Rojo");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
if (digitalRead(Port2) == 1) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
else {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Doble rojo");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
if (digitalRead(Port3) == 0) {
digitalWrite(led4, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Amarillo");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
else {
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}
if (digitalRead(Port4) == 1) {
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}
else {
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Doble amarillo");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
if (digitalRead(Port5) == 0) {
digitalWrite(led6, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Verde");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
else {
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
}
if (digitalRead(Port6) == 1) {
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
}
else {
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Doble verde");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
if (digitalRead(Port7) == 0) {
digitalWrite(led8, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Azul");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
else {
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
}
if (digitalRead(Port8) == 1) {
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
}
else {
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Doble azul");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
if (digitalRead(Port9) == 0) {
digitalWrite(led2, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Blanco");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
else {
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
if (digitalRead(Port10) == 1) {
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else {
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
SIM900.println("Doble blanco");
SIM900.println((char)26);
SIM900.println();
delay(1000);
}
}
Gracias por su tiempo! Saludos ![]()