FlashAir Developers Summit OSAKA 2019 handson step2
Dependencies: mbed ADT7410 FlashAir_iSDIO SDFileSystem USBDevice
main.cpp
- Committer:
- hogejun
- Date:
- 2019-01-19
- Revision:
- 9:e4bd6b88187d
- Parent:
- 8:49dfc9ab1950
File content as of revision 9:e4bd6b88187d:
#include "mbed.h" #include "FlashAir_iSDIO.h" #include "USBSerial.h" #include "ADT7410.h" #define USE_ADT7410 //------------------------------------------------------------------------------- //Port Settings DigitalOut led1(LED1); //DigitalOut led2(P1_13,0); InterruptIn sw(P1_20); InterruptIn isp(P0_1); DigitalOut sA1(P0_13,0); DigitalOut sA2(P1_21,0); DigitalOut sB(P0_9,0); DigitalOut sC(P0_20,0); DigitalOut sD1(P0_14,0); DigitalOut sD2(P1_26,0); DigitalOut sE(P0_16,0); DigitalOut sF(P0_11,0); DigitalOut sG1(P0_23,0); DigitalOut sG2(P0_8,0); DigitalOut sJ(P0_12,0); DigitalOut sK(P1_28,0); DigitalOut sL(P1_31,0); DigitalOut sP(P1_23,0); DigitalOut sN(P1_27,0); DigitalOut sM(P0_2,0); DigitalOut sDP(P1_25,0); DigitalOut SD_VEN(P1_16); //Serial console(P0_19, P0_18); // TX, RX //FlashAir_iSDIO sd(P0_21, P0_22, P1_15, P0_17, "sd", &console); // mosi(CMD), miso(DAT0), sclk(CLK), cs(DAT3) FlashAir_iSDIO sd(P0_21, P0_22, P1_15, P0_17, "sd"); // mosi(CMD), miso(DAT0), sclk(CLK), cs(DAT3) USBSerial serial; #ifdef USE_ADT7410 ADT7410 sensor(P0_5, P0_4, 0x90, 100000); #else int dummyval[] = {0,1,2,3,4,5,6,7,8,9}; #define DUMMYVALLEN (sizeof(dummyval)/sizeof(dummyval[0])) #endif int sense_int; float senseval; //------------------------------------------------------------------------------- //Program int wlan_connected = 0; uint32_t sequenceId ; void sw_int(){ serial.printf("sw_int\n"); if(wlan_connected==1){ // disconnect // 1. get sequenceID // 2. issue disconnect command // 3. wait response serial.printf("disconnect\n"); sequenceId = sd.getNextSequenceId(); sd.wlan_disconnect(sequenceId); sd.waitResponse(sequenceId); wlan_connected =0; // led1 = 0; sDP = 0; wait(5.0); }else{ // establish // 1. get sequenceID // 2. issue establish command // 3. wait resoonse serial.printf("establish\n"); sequenceId = sd.getNextSequenceId(); sd.wlan_establish(sequenceId, "isdiotest", "12345678", FlashAir_iSDIO::ENCMODE_WPA2PSK_AES); sd.waitResponse(sequenceId); // led1 = 1; sDP = 1; wlan_connected =1; wait(5.0); } } void isp_int(){ #define TESTDATA "deadbeaf" char testdata[] = TESTDATA; uint8_t data[sizeof(testdata)]; memcpy(data, &testdata, sizeof(data)); sd.write_shared_mem(0x0, data, sizeof(data)); wait(3.0); } #if 1 void write_shmem(float val) { char data[255]; sprintf(data, "%.02f", val); sd.write_shared_mem(0x0, (uint8_t*)data, sizeof(data)); wait(1.0); } #endif void seg_disp(int val){ switch((val/10)%10){ case 0:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=0;sL=1;break; case 1:sA1=1;sA2=1;sB=0;sF=0;sJ=0;sK=0;sL=0;break; case 2:sA1=0;sA2=0;sB=0;sF=1;sJ=1;sK=0;sL=1;break; case 3:sA1=0;sA2=0;sB=0;sF=0;sJ=1;sK=1;sL=1;break; case 4:sA1=1;sA2=1;sB=1;sF=0;sJ=0;sK=1;sL=0;break; case 5:sA1=0;sA2=1;sB=1;sF=0;sJ=1;sK=1;sL=0;break; case 6:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=0;break; case 7:sA1=0;sA2=0;sB=0;sF=0;sJ=1;sK=0;sL=1;break; case 8:sA1=1;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=1;break; case 9:sA1=0;sA2=1;sB=0;sF=0;sJ=1;sK=1;sL=1;break; default:sA1=0;sA2=0;sB=0;sF=0;sJ=0;sK=0;sL=0;break; } switch(val%10){ case 0:sC=1;sD1=1;sD2=1;sE=1;sG1=1;sG2=1;sN=0;break; case 1:sC=0;sD1=1;sD2=1;sE=0;sG1=0;sG2=0;sN=0;break; case 2:sC=1;sD1=0;sD2=1;sE=1;sG1=1;sG2=0;sN=1;break; case 3:sC=1;sD1=1;sD2=1;sE=1;sG1=0;sG2=0;sN=1;break; case 4:sC=0;sD1=1;sD2=1;sE=0;sG1=0;sG2=1;sN=1;break; case 5:sC=1;sD1=1;sD2=0;sE=1;sG1=0;sG2=1;sN=1;break; case 6:sC=1;sD1=1;sD2=0;sE=1;sG1=1;sG2=1;sN=1;break; case 7:sC=1;sD1=1;sD2=1;sE=0;sG1=0;sG2=0;sN=0;break; case 8:sC=1;sD1=1;sD2=1;sE=1;sG1=1;sG2=1;sN=1;break; case 9:sC=1;sD1=1;sD2=1;sE=1;sG1=0;sG2=1;sN=1;break; default:sC=0;sD1=0;sD2=0;sE=0;sG1=0;sG2=0;sN=0;break; } } void out_file(float val) { FILE *fd = fopen("/sd/test.text", "a"); fprintf(fd, "%.02f\n\r", val); fclose(fd); led1 = 1; wait(0.5); led1 = 0; } int main() { serial.printf("Hello FlashAir_iSDIO_16seg_ADT7410\n"); wait(1.0); SD_VEN = 1; // Initialize card FILE *fp = fopen("/sd/isdio.txt", "w"); fclose(fp); #ifdef USE_ADT7410 sensor.reset(); #endif // disconnect anyway sequenceId = sd.getNextSequenceId(); sd.wlan_disconnect(sequenceId); sd.waitResponse(sequenceId); // register interrupt handler sw.rise(&sw_int); isp.rise(&isp_int); int i=0; while(1) { #ifdef USE_ADT7410 senseval = sensor.getTemp(); sense_int = (int)sensor.getTemp(); #else sense_int = dummyval[i]; #endif seg_disp(sense_int); out_file(senseval); write_shmem(senseval); serial.printf("%f\n",senseval); i++; #ifndef USE_ADT7410 if(i>=DUMMYVALLEN) i=0; #endif wait(0.3); } }