Go Down

Topic: "if" no me va con GSM Shield  (Read 93 times) previous topic - next topic

zeus1971

Hola, estoy haciendo una aplicacion simple que lo que hace es enviar el valor de unas entradas analogicas cuando una de ellas supera un valor. Para ello leo el valor de las entradas y cuando la A0 supera un valor prefijado envia el SMS con los valores.
Bueno no se que pasa pero los envia siempre, haya el valor que haya, incluso si en la entrada hay 0V.
Os pego el codigo que es muy simple.

#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
int sensorPinA0 = 0;        // value read from the pot


int sensorPin0 = A0;    // select the input pin for the potentiometer
int sensorPin1 = A1;    // select the input pin for the potentiometer
int sensorPin2 = A2;    // select the input pin for the potentiometer
int sensorPin3 = A3;    // select the input pin for the potentiometer

int sensorValue0 = 0;  // variable to store the value coming from the sensor
int sensorValue1 = 0;  // variable to store the value coming from the sensor
int sensorValue2 = 0;  // variable to store the value coming from the sensor
int sensorValue3 = 0;  // variable to store the value coming from the sensor



 
void setup()
{
  SIM900.begin(19200);
  SIM900power(); 
  delay(20000);  // give time to log on to network.
}
 
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
}
 

 
void loop()
{
  sensorValue0 = analogRead(sensorPin0);
  sensorValue1 = analogRead(sensorPin1);
  sensorValue2 = analogRead(sensorPin2);
  sensorValue3 = analogRead(sensorPin3); 
 
   {
  if(sensorValue0 > 800)
 

 
 
  SIM900.print("AT+CMGF=1\r");                                                        // AT command to send SMS message
  delay(100);
  SIM900.println("AT + CMGS = \"+34617516793\"");                                     // recipient's mobile number, in international format
  delay(100);
  SIM900.println("AGRITRONIC LA SOLANA.");        // message to send
  SIM900.println("ANALOG 0 = ");        // message to send 
  SIM900.println(sensorValue0); 
  SIM900.println("ANALOG 1 = ");        // message to send
  SIM900.println(sensorValue1); 
  SIM900.println("ANALOG 2 = ");        // message to send
  SIM900.println(sensorValue2); 
  SIM900.println("ANALOG 3 = ");        // message to send
  SIM900.println(sensorValue3); 
 
  delay(100);
  SIM900.println((char)26);                       // End AT command with a ^Z, ASCII code 26
  delay(100);
  SIM900.println();
  delay(5000);                                     // give module time to send SMS
  SIM900power();                                   // turn off module
 
  do {} while (1);
 

}
 

}

zeus1971


noter

Hola, estoy haciendo una aplicacion simple que lo que hace es enviar el valor de unas entradas analogicas cuando una de ellas supera un valor. Para ello leo el valor de las entradas y cuando la A0 supera un valor prefijado envia el SMS con los valores.
Bueno no se que pasa pero los envia siempre, haya el valor que haya, incluso si en la entrada hay 0V.
Os pego el codigo que es muy simple.

Code: [Select]
#include <SoftwareSerial.h>
SoftwareSerial SIM900(7, 8);
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
int sensorPinA0 = 0;        // value read from the pot


int sensorPin0 = A0;    // select the input pin for the potentiometer
int sensorPin1 = A1;    // select the input pin for the potentiometer
int sensorPin2 = A2;    // select the input pin for the potentiometer
int sensorPin3 = A3;    // select the input pin for the potentiometer

int sensorValue0 = 0;  // variable to store the value coming from the sensor
int sensorValue1 = 0;  // variable to store the value coming from the sensor
int sensorValue2 = 0;  // variable to store the value coming from the sensor
int sensorValue3 = 0;  // variable to store the value coming from the sensor



 
void setup()
{
  SIM900.begin(19200);
  SIM900power(); 
  delay(20000);  // give time to log on to network.
}
 
void SIM900power()
// software equivalent of pressing the GSM shield "power" button
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
}
 

 
void loop()
{
  sensorValue0 = analogRead(sensorPin0);
  sensorValue1 = analogRead(sensorPin1);
  sensorValue2 = analogRead(sensorPin2);
  sensorValue3 = analogRead(sensorPin3); 
 
   {
  if(sensorValue0 > 800)
 

 
 
  SIM900.print("AT+CMGF=1\r");                                                        // AT command to send SMS message
  delay(100);
  SIM900.println("AT + CMGS = \"+34617516793\"");                                     // recipient's mobile number, in international format
  delay(100);
  SIM900.println("AGRITRONIC LA SOLANA.");        // message to send
  SIM900.println("ANALOG 0 = ");        // message to send 
  SIM900.println(sensorValue0); 
  SIM900.println("ANALOG 1 = ");        // message to send
  SIM900.println(sensorValue1); 
  SIM900.println("ANALOG 2 = ");        // message to send
  SIM900.println(sensorValue2); 
  SIM900.println("ANALOG 3 = ");        // message to send
  SIM900.println(sensorValue3); 
 
  delay(100);
  SIM900.println((char)26);                       // End AT command with a ^Z, ASCII code 26
  delay(100);
  SIM900.println();
  delay(5000);                                     // give module time to send SMS
  SIM900power();                                   // turn off module
 
  do {} while (1);
 

}
 

}

Mira qué bonito queda tu código metiéndolo entre etiquetas code. Además aparece un botoncito arriba para seleccionar (y poder copiar) todo que es comodísimo. Por favor; siempre que pongáis código utilizad las etiquetas code. Es muy sencillo y no duele  :smiley-mr-green:

Ahora la respuesta:

¿No debería ir el if ANTES de la apertura de llaves?

ahernandovalbuena

Uf ¿Ese código te compila?  :$
Alvaro Hernando Valbuena

surbyte

lo mismo que dijo Noter

Code: [Select]
if(sensorValue0 > 800) {
    ///   lo que sigue.......

} // cierro llaves

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy