Acelerometetro + gsm+gps
buenas, estoy trabajando en un proyecto en el cual. necesito tener leer un estado alto en un boton y una inclicacion mas de 50°. en ese caso se deberá enviar un mensaje de texto con las coordenadas en que se encuentra el dispositivo.
hasta ahora este es mi codigo.
hasta ahora este es mi codigo.
code: [select]
#include <softwareserial.h> //incluimos softwareserial
#include <tinygps.h> //incluimos tinygps
#include "i2cdev.h"
#include "mpu6050.h"
#include "wire.h"
softwareserial serial(4,3), serialsms(tx,rx);
const int buttonpin = 5; //variables
int buttonstate = 0;
mpu6050 sensor; // declaro el objeto mpu6050
int ax, ay, az;
int gx, gy, gz;
long tiempo_prev;
float dt;
float ang_x, ang_y;
float ang_x_prev, ang_y_prev;
tinygps gps; // declaro el objeto gps
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long chars;
unsigned short sentences, failed_checksum; //declaro la variables para la obtención de datos
void setup()
{
pinmode(buttonpin, input); //boton como entrada
wire.begin(); //iniciando i2c
sensor.initialize(); //iniciando el sensor acelerometro
}
void loop() {
buttonstate = digitalread(buttonpin);
if (buttonstate == high)
sensor.getacceleration(&ax, &ay, &az); // leer las aceleraciones y velocidades angulares
sensor.getrotation(&gx, &gy, &gz);
dt = (millis()-tiempo_prev)/1000.0;
tiempo_prev=millis();
float accel_ang_x=atan(ay/sqrt(pow(ax,2) + pow(az,2)))*(180.0/3.14); //calcular los ángulos con acelerometro
float accel_ang_y=atan(-ax/sqrt(pow(ay,2) + pow(az,2)))*(180.0/3.14);
ang_x = 0.98*(ang_x_prev+(gx/131)*dt) + 0.02*accel_ang_x; //calcular angulo de rotación con giroscopio y filtro complemento
ang_y = 0.98*(ang_y_prev+(gy/131)*dt) + 0.02*accel_ang_y;
ang_x_prev=ang_x;
ang_y_prev=ang_y;
{
if (ang_x < 50.0) //si inclinacion supera 50°
delay(30000); //espera 30 segundos
serialgps.begin(9600); //inicia sensor gps
{
while(serialgps.available()) //chequea si modulo esta habilitado
{
int c=serial.read(); //lee modulo gps
if(gps.encode(c)) //decodifica
{
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
serial.print("lat/long: ");
serial.print(latitude,5);
serial.print(" , ");
serial.println(longitude,5);
enviar(latitude,longitude);
gps.stats(&chars, &sentences,&failed-checksum);
}
}
}
void enviar(float lat, float long){
delay(500);
serialmodule.println("at+cmgf=1");
serialmodule.write(byte(34));
serialmodule.print("00000000");
serialmodule.write(byte(34));
serialmodule.println();
delay(500);
serialmodule.print("lat/long");
serialmodule.print(lat,5);
serialmodule.print(" ");
serialmodule.write(byte(26));
delay(5000);
}
}
estos son los errores que se me presentan
espero una mano.. saludos
code: [select]
sketch_aug07a:11: error: 'long' invalid 'parameter'
sketch_aug07a:7: error: 'softwareserial' not name type
sketch_aug07a.ino: in function 'void loop()':
sketch_aug07a:52: error: 'serialgps' not declared in scope
sketch_aug07a:67: error: 'failed' not declared in scope
sketch_aug07a:67: error: 'checksum' not declared in scope
sketch_aug07a:71: error: function-definition not allowed here before '{' token
sketch_aug07a:84: error: expected `}' @ end of input
sketch_aug07a:84: error: expected `}' @ end of input
espero una mano.. saludos
Arduino Forum > International > Español (Moderators: surbyte, Hector_A) > Acelerometetro + gsm+gps
arduino
Comments
Post a Comment