Go Down

Topic: Acelerometetro + gsm+gps (Read 430 times) previous topic - next topic

rik_ariel

Aug 08, 2017, 08:58 pm Last Edit: Aug 13, 2017, 10:32 pm by rik_ariel
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.

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);
}

}

rik_ariel

#1
Aug 08, 2017, 09:03 pm Last Edit: Aug 10, 2017, 12:58 am by surbyte Reason: Los errores tmb van con etiquetas </>
estos son los errores que se me presentan
Code: [Select]
sketch_aug07a:11: error: 'long' invalid for 'parameter'
sketch_aug07a:7: error: 'softwareSerial' does not name a type
sketch_aug07a.ino: In function 'void loop()':
sketch_aug07a:52: error: 'serialgps' was not declared in this scope
sketch_aug07a:67: error: 'failed' was not declared in this scope
sketch_aug07a:67: error: 'checksum' was not declared in this scope
sketch_aug07a:71: error: a function-definition is not allowed here before '{' token
sketch_aug07a:84: error: expected `}' at end of input
sketch_aug07a:84: error: expected `}' at end of input


Espero una mano.. Saludos

rodripelto

Hola,
Muchos error unos puden ser devidos a los otros, si indexaras bien el código verias que te sobran muchas{}
Quote
sketch_aug07a:11: error: 'long' invalid for 'parameter'
Este es debido a que en void enviar(float lat, float long) intentas mandar un float y long eso no puede ser  o float o long y nombre del parametro.

Quote
sketch_aug07a:52: error: 'serialgps' was not declared in this scope
sketch_aug07a:67: error: 'failed' was not declared in this scope
sketch_aug07a:67: error: 'checksum' was not declared in this scope
No tienes declaradas la variables en ningun sitio.

Quote
sketch_aug07a:71: error: a function-definition is not allowed here before '{' token
sketch_aug07a:84: error: expected `}' at end of input
sketch_aug07a:84: error: expected `}' at end of input
Code: [Select]
{
  if (ang_x < 50.0) //si inclinacion supera 50°
  delay(30000);     //espera 30 segundos
  serialgps.begin(9600); //inicia sensor gps
  {

Abres dos llaves, no se para que sirven
Code: [Select]
void enviar(float lat, float long){
    delay(500);
    Serialmodule.println("AT+CMGF=1");
    Serialmodule.write(byte(34));
    serialmodule.print("0985827445");
    serialmodule.write(byte(34));
    serialmodule.println();
    delay(500);
    serialmodule.print("lat/Long");
    serialmodule.print(Lat,5);
    serialmodule.print(" ");
    serialmodule.write(byte(26));
    delay(5000);
}

}

Te sobra la última }
Si alguna respuesta ha solucionado tu problema, da las gracias marcándola como solucionada.

Go Up