Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed X_NUCLEO_53L0A1
main.cpp
00001 #include "mbed.h" 00002 #include "XNucleo53L0A1.h" 00003 #include <stdio.h> 00004 00005 00006 00007 00008 DigitalOut enable(p18); 00009 BusOut answer(p19,p20); 00010 BusOut myleds(LED1, LED2, LED3, LED4); 00011 DigitalOut myled1(LED1); 00012 DigitalOut myled2(LED2); 00013 DigitalOut myled3(LED3); 00014 DigitalOut myled4(LED4); 00015 00016 DigitalIn lidar_enable(p9); 00017 00018 // READING DATA BETWEEN MBEDS 00019 DigitalIn other_player(p15); 00020 DigitalOut my_player(p16); 00021 00022 Serial blue(p13, p14); // tx, rx 00023 00024 Serial pc(USBTX,USBRX); 00025 DigitalOut shdn(p26); 00026 // This VL53L0X board test application performs a range measurement in polling mode 00027 // Use 3.3(Vout) for Vin, p28 for SDA, p27 for SCL, P26 for shdn on mbed LPC1768 00028 00029 //I2C sensor pins 00030 #define VL53L0_I2C_SDA p28 00031 #define VL53L0_I2C_SCL p27 00032 static XNucleo53L0A1 *board=NULL; 00033 00034 int msg = -1; 00035 char bnum = 0; //button number variable 00036 char bhit = 0; 00037 00038 00039 void bluetooth() //function that is called after lidar distance <70 to get bluetooth inputs 00040 { 00041 while(1) { 00042 pc.printf("Start bluetooth |"); 00043 while (blue.readable()) { 00044 blue.getc(); 00045 } 00046 if (blue.getc()=='!') { 00047 if (blue.getc()=='B') { //button data 00048 bnum = blue.getc(); //button number 00049 bhit = blue.getc(); //1=hit, 0=release 00050 if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { 00051 blue.getc(); 00052 while (blue.readable()) { 00053 blue.getc(); 00054 } 00055 switch (bnum) { 00056 case '1': //number button 1 00057 if (bhit=='1') { 00058 msg = 1; 00059 myled1 = 1; 00060 } else { 00061 msg = 0; 00062 myled1 = 1; 00063 } 00064 break; 00065 case '2': //number button 2 00066 if (bhit=='1') { 00067 msg = 2; 00068 myled2 = 1; 00069 } else { 00070 msg = 0; 00071 myled2 = 1; 00072 } 00073 break; 00074 case '3': //number button 3 00075 if (bhit=='1') { 00076 msg = 3; 00077 myled3 = 1; 00078 } else { 00079 msg = 0; 00080 myled3 = 1; 00081 } 00082 break; 00083 case '4': //number button 4 00084 if (bhit=='1') { 00085 msg = 4; 00086 myled4 = 1; 00087 } else { 00088 msg = 0; 00089 myled4 = 1; 00090 } 00091 break; 00092 default: 00093 break; 00094 00095 } 00096 //device.putc(msg); 00097 return; 00098 } 00099 } 00100 } 00101 00102 //device.putc(msg); 00103 wait(1); 00104 } 00105 } 00106 00107 int main() 00108 { 00109 00110 int status; 00111 uint32_t distance; 00112 DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL); 00113 /* creates the 53L0A1 expansion board singleton obj */ 00114 board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2); 00115 shdn = 0; //must reset sensor for an mbed reset to work 00116 wait(0.1); 00117 shdn = 1; 00118 wait(0.1); 00119 /* init the 53L0A1 board with default values */ 00120 status = board->init_board(); 00121 while (status) { 00122 pc.printf("Failed to init board! \r\n"); 00123 status = board->init_board(); 00124 } 00125 //loop taking and printing distance 00126 00127 while (1) { 00128 msg = 0; 00129 status = board->sensor_centre->get_distance(&distance); 00130 if (status == VL53L0X_ERROR_NONE) { 00131 00132 00133 if (distance < 70) { 00134 // once master mbed as already printed the question 00135 if (lidar_enable){ 00136 00137 my_player = 1; 00138 00139 if (!other_player) { //if the other player has not pressed buzzer yet 00140 myleds = 15; // all leds on player mbed light up using BUSOUT 00141 wait(0.5); 00142 myleds = 0; 00143 bluetooth(); 00144 if (msg > 0 && msg < 5) { 00145 answer = msg - 1;//send answer to master 00146 enable = 1; //let master mbed know youre ready 00147 wait(1); 00148 } 00149 } 00150 } 00151 } else { 00152 //reset values 00153 msg = -1; 00154 enable = 0; 00155 myleds = 0; 00156 my_player = 0; 00157 00158 } 00159 } 00160 } 00161 00162 }
Generated on Sat Aug 6 2022 14:40:02 by
1.7.2