check my code, it is working
#include <SoftwareSerial.h>
#include <String.h>
#include <Wire.h>
#include “LowPower.h”
#include “RTClib.h”
#include “SIM900.h”
#include “sms.h”
SMSGSM sms;
RTC_DS1307 RTC;
//Sensor
#define MEDIA_VELOCIDAD_SONIDO 0.017175 // Mitad de la velocidad del sonido a 20 °C expresada en cm/µs
#define PIN_TRIGGER 5
#define PIN_ECHO 6
#define ESPERA_ENTRE_LECTURAS 1000 // tiempo entre lecturas consecutivas en milisegundos
#define TIMEOUT_PULSO 25000 // la espera máxima de es 30 ms o 30000 µs
float distancia;
unsigned long tiempo;
unsigned long cronometro;
unsigned long reloj=0;
//2G
byte counter = 1;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
//debug begin
char sms_position;
char phone_number[20]; // array for the phone number string
char sms_text[100]="";
int i;
//Bateria
const int bateria = 0; // analog 0 conectado a voltage de baterias
float voltimetro = 0;
int porcevolt = 0;
//Puerta electrica
const int sencender = 5; //encender sensores
//Tiempos
int dia = 0;
int mes = 0;
void setup()//-------------*******************************----------------------------------
{
Serial.begin(9600);
Wire.begin();
RTC.begin();
//descomentar ajusta la hora y la fecha con la del ordenador (se ajusta siempre que enciende el arduino)
//RTC.adjust(DateTime(DATE, TIME));
//encender SIM800L y sensor HY-SRF05
pinMode(sencender, OUTPUT);
//Sensor
pinMode(PIN_ECHO,INPUT);
pinMode(PIN_TRIGGER,OUTPUT);
digitalWrite(PIN_TRIGGER,LOW); // Para «limpiar» el pulso del pin trigger del módulo
delayMicroseconds(2);
}
void dormir (){
Serial.println(“A dormir…”);
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
void sensardistancia(){
cronometro=millis()-reloj;
if(cronometro>ESPERA_ENTRE_LECTURAS)
{
digitalWrite(PIN_TRIGGER,HIGH); // Un pulso a nivel alto…
delayMicroseconds(20); // …durante 10 µs y
digitalWrite(PIN_TRIGGER,LOW); // …volver al nivel bajo
tiempo=pulseIn(PIN_ECHO,HIGH,TIMEOUT_PULSO); // Medir el tiempo que tarda en llegar un pulso
distancia=MEDIA_VELOCIDAD_SONIDO*tiempo;
Serial.print(distancia);
Serial.println(" cm");
reloj=millis();
}
}
void medirvolt(){
voltimetro= analogRead(bateria);
voltimetro=voltimetro*5/1024;
Serial.print(voltimetro);
Serial.print(" Volts “);
/* porcevolt = (voltimetro / 4.2) * 100 + 3.3;
Serial.print(porcevolt);
Serial.print(”% de 5V");*/
Serial.println();
}
void imprimirdia(){
//imprimir tiempo
DateTime now = RTC.now();
//Imprimimos el dia
Serial.print(now.day(), DEC);
Serial.print(’/’);
//Imprimimos el mes
Serial.print(now.month(), DEC);
Serial.print(’/’);
//Imprimimos el año
Serial.print(now.year(), DEC);
Serial.print(’ ‘);
//Imprimimos la hora
Serial.print(now.hour(), DEC);
Serial.print(’:’);
//Imprimimos los minutos
Serial.print(now.minute(), DEC);
Serial.print(’:’);
//Imprimimos los segundos
Serial.print(now.second(), DEC);
Serial.println();
}
void enviarsms()
{
char distanciast[10];
char voltimetrost[10];
dtostrf(distancia,1,2,distanciast); // float to string
dtostrf(voltimetro,1,2,voltimetrost); // float to string
sprintf(sms_text,“Botellas: %s cm, baterias: %s v”, distanciast,voltimetrost);
sms.SendSMS("+56955147132",sms_text);
Serial.println(sms_text);
Serial.println("\nSMS sent OK");
}
void loop()//-------------*******************************----------------------------------
{
//digitalWrite(sencender,HIGH);
//digitalWrite(sencender,LOW);
//se sensó hoy? > leer epromm >
//SI > sleep 8s
//NO > encender sistemas> delay 2000 (esperar conectarse a la red) >
//medir distancia > medir voltaje > enviar SMS > escribir el dia en la epromm
if(counter==1){
Serial.println(“GSM Shield testing.”);
if (gsm.begin(4800))
{
Serial.println("\nstatus = READY");
//enviarsms();
}
// else
//Serial.println("\nstatus = IDLE");
// digitalWrite(sencender,HIGH);
//imprimirdia();
medirvolt();
sensardistancia();
enviarsms();
counter =0;
}
// digitalWrite(sencender,LOW);
//dormir();
imprimirdia();
medirvolt();
sensardistancia();
char distanciast[10];
char voltimetrost[10];
dtostrf(distancia,1,2,distanciast); // float to string
dtostrf(voltimetro,1,2,voltimetrost); // float to string
sprintf(sms_text,“Botellas: %s cm, baterias: %s v”, distanciast,voltimetrost);
Serial.println(sms_text);
delay(5000);
}