dad
Dependencies: mbed-os FXAS21000 LED_Bar FXOS8700Q
main.cpp
- Committer:
- maeconn
- Date:
- 2022-04-26
- Revision:
- 3:9ab65e6d4cd4
- Parent:
- 2:d08625231a9f
- Child:
- 4:91893b37450e
File content as of revision 3:9ab65e6d4cd4:
#include "mbed.h" #include "FXOS8700Q.h" #include "FXAS21000.h" #include "hcsr04.h" #include "LED_Bar.h" I2C i2c(PTE25, PTE24); Serial pc(USBTX,USBRX); FXOS8700QAccelerometer acc(i2c, FXOS8700CQ_SLAVE_ADDR1); // Configured for the FRDM-K64F with onboard sensors FXOS8700QMagnetometer mag(i2c, FXOS8700CQ_SLAVE_ADDR1); FXAS21000 gyro(D14,D15); HCSR04 usensor1(D8,D9); //ECHO Pin=D9, TRIG Pin=D8 HCSR04 usensor2(D7,D6); //ECHO Pin=D7, TRIG Pin=D6 LED_Bar bar(D5,D4); DigitalOut buzzer(D2); int buzz_on=1, buzz_off=0; int main(void) { int num = 0; int distance1, distance2; int led_speed; float dist_remaining1, dist_percent1, dist_remaining2, dist_percent2; char snd[255],rcv[1000]; //snd: send command to ESP8266 //rcv: receive response from ESP8266 //Ultrasound Sensor (HC-SR04) #1 Initialization int a = 30; float gyro_data[3]; motion_data_units_t acc_data, mag_data; motion_data_counts_t acc_raw, mag_raw; float faX, faY, faZ, fmX, fmY, fmZ, tmp_float; int16_t raX, raY, raZ, rmX, rmY, rmZ, tmp_int; acc.enable(); mag.enable(); //DigitalOut Red(LED1); // Red=1; // DigitalOut Blue(LED3); // DigitalOut Green(LED2); // Blue=1; // Green=1; while (true) { // counts based results acc.getAxis(acc_raw); mag.getAxis(mag_raw); acc.getX(raX); acc.getY(raY); acc.getZ(raZ); mag.getX(rmX); mag.getY(rmY); mag.getZ(rmZ); // unit based results acc.getAxis(acc_data); mag.getAxis(mag_data); acc.getX(faX); acc.getY(faY); acc.getZ(faZ); mag.getX(fmX); mag.getY(fmY); mag.getZ(fmZ); pc.printf("FXOSQ8700Q ACC: X=%1.4f Y=%1.4f Z=%1.4f", acc.getX(faX),acc.getY(faY),acc.getZ(faZ)); pc.printf(" MAG: X=%4.1f Y=%4.1f Z=%4.1f\r\n", mag.getX(fmX),mag.getY(fmY), mag.getZ(fmZ)); gyro.ReadXYZ(gyro_data); pc.printf("FXAS21000 Gyro: X=%6.2f Y=%6.2f Z=%6.2f\r\n", gyro_data[0],gyro_data[1], gyro_data[2]); usensor1.start(); wait_ms(500); //Calculating Distance Percentage Remaining for Sensor # 1 distance1 = usensor1.get_dist_cm(); dist_remaining1 = a-distance1; dist_percent1 = (dist_remaining1/30)*100; ////LED and Tera Term Output // if (distance1<30 && distance2<30) { // // pc.printf("You are colse!\n\r"); while(1) { // pc.putc(pc.getc() + 1);} // //printf("Percent remaining: %f\r", dist_percent1 && dist_percent2); // } else { // //GLed = 1; //// BLed = 1; //// RLed = 0; // pc.printf("You are far!\n\r"); while(1) { // pc.putc(pc.getc() + 1);} // } if((abs(acc.getX(faX)) > 1.5 || abs(acc.getZ(faZ)) > 1.3 || abs(acc.getY(faY)) > 0.1) || (distance1<30 && distance2<30)) { //Red = 0; // Blue = 1; // Green = 1; // pc.printf("Going too fast!\n\r"); //while(1) { // pc.putc(pc.getc() + 1);} buzzer=buzz_on; wait(0.5); buzzer=buzz_off; wait(0.5); for(led_speed=0; led_speed<=10; led_speed++){ bar.setLevel(led_speed); wait(0.001); } } else{ //Red = 1; // Green = 0; // Blue = 1; // pc.printf("You are safe!\n\r"); while(1) { // pc.putc(pc.getc() + 1);} for(led_speed=0; led_speed<=10; led_speed++){ bar.setLevel(led_speed); wait(0.2); } }; wait(1.0f); } }