F742ZG
Dependencies: mbed X_NUCLEO_IKS01A2 mbed-rtos
Dependents: ros_button_2021 test test2
Diff: main.cpp
- Revision:
- 1:54d03a42740a
- Parent:
- 0:4e088cbb2dbf
diff -r 4e088cbb2dbf -r 54d03a42740a main.cpp --- a/main.cpp Mon Oct 23 07:11:35 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,237 +0,0 @@ -#include "mbed.h" -#include "rtos/rtos.h" -#include "Teseo-LIV3F.h" -#include <cstdlib> -#include <vector> -#include "XNucleoIKS01A2.h" - -/*cose per gps*/ -static Thread t1; -static Thread t2; - -static Mutex data_access; - -static Timer system_timer; -static Serial usb_serial(USBTX, USBRX, 9600); -static Serial *serial_debug= &usb_serial; - - -static Teseo_LIV3F Teseo(D8, D13, D6, PE_7, PE_8, &usb_serial); - - -struct gps_coordinate{ - float lat; - char lat_cardinal; - float longitud; - char long_cardinal; - bool valid; - - - - }; - - gps_coordinate myPosition; - - - -/*cose per sensori*/ - -static Thread t3; - -static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5); - - -/* Retrieve the composing elements of the expansion board */ -static LSM303AGRMagSensor *magnetometer = mems_expansion_board->magnetometer; -static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor; -static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor; -static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro; -static LSM303AGRAccSensor *accelerometer = mems_expansion_board->accelerometer; - -void f1 (){ - - enum nmea_msg_id id; - - - - - - Teseo.Reset(serial_debug); - Teseo.startListener(serial_debug); - - while(1) { - osEvent evt = Teseo.queue.get(); - if (evt.status == osEventMessage) { - struct teseo_msg *message = (struct teseo_msg *)evt.value.p; - if (message->len){ - id = Teseo.MsgDetect(message->buf, message->len, serial_debug); - - } - - if (id==1){ - - - - - //da qui converto il messaggio in coordinate// - data_access.lock(); - - vector<char> pos; - - - //latitudine - // printf ("latitudine="); - - int cursor; - for (int i=7;;i++){ - cursor=i; - if (message->buf[i] == ',') - break; - pos.push_back(message->buf[i]); - - - } - - - //ma quanto è cool? conversione da vector ad array e poi a float - myPosition.lat= atof (&pos[0]); - // printf ("%f",myPosition.lat); - // printf (" "); - - myPosition.lat_cardinal= message->buf[cursor+1]; - // printf ("%c ",myPosition.lat_cardinal); - - pos.clear(); - - - // printf ("longitudine="); - - - for (int i=cursor+3;;i++){ - cursor=i; - if (message->buf[i] == ',') - break; - pos.push_back(message->buf[i]); - - - } - - - - myPosition.longitud= atof (&pos[0]); - // printf ("%f",myPosition.longitud); - // printf (" "); - - myPosition.long_cardinal= message->buf[cursor+1]; - // printf ("%c ",myPosition.long_cardinal); - - for (int i=cursor+3;;i++){ - cursor=i; - if (message->buf[i] == 'A' ){ - myPosition.valid=true; - break; - }else if (message->buf[i] == 'V' ) { - myPosition.valid=false; - break; - - } - - - - } - - if (myPosition.valid==true){ - // printf ("Valid"); - } - - - if (myPosition.valid==false){ - //printf ("Not Valid"); - } - - - data_access.unlock(); - - // printf ("\n\r"); - - } - - - Teseo.mpool.free(message); - } - - } - -} - - - -void f2 (){ - Thread::wait (1000); - - Thread::wait (2000); - while (true){ - Thread::wait (3000); - data_access.lock(); - - printf ("lat:%f %c, lon:%f %c, %d\n\r",myPosition.lat,myPosition.lat_cardinal, myPosition.longitud, myPosition.long_cardinal, myPosition.valid ); - - - - data_access.unlock(); - } - -} - - -void accgyro_thread(){ - - uint8_t id; - float value1, value2; - char buffer1[32], buffer2[32]; - int32_t axes[3]; - int32_t axesOld[3]; - float odr =208.0f; - - - /* Enable all sensors */ - - accelerometer->enable(); - acc_gyro->enable_x(); - acc_gyro->enable_g(); - acc_gyro->set_g_odr (odr); - - while (true){ - - Thread::wait (5000); - - - acc_gyro->get_g_axes(axes); - printf("LSM6DSL [gyro/mdps]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]); - - - acc_gyro->get_x_axes(axes); - printf("LSM6DSL [acc/mg]: %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]); - - - - } - - -} - - - - -int main() { - - t1.start(f1); - - t2.start (f2); - - t3.start (accgyro_thread); - - - - -}