Go Down

Topic: Leds tienen otro comportamiento al agregar código para mandar SMS (Read 144 times) previous topic - next topic

MarianaJacoboG

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:
1. 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)

2. 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;
Code: [Select]

#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  :)

MarianaJacoboG

Ya pude corregir el comportamiento de los leds :) el problema venía de los "else", aquí les comparto el código nuevo:

Code: [Select]

#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) == 0) {
    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) == 0) {
    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) == 0) {
    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);
  }

  if (digitalRead(Port8) == 0) {
    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) == 0) {
    digitalWrite(led9, HIGH);
    digitalWrite(led10, HIGH);
    SIM900.println("AT+CMGS=\"xxxxxxxxxx\"");
    SIM900.println("Doble blanco");
    SIM900.println((char)26);
    SIM900.println();
    delay(1000);
  }

}

Go Up