Publish_MAPLEminiA
Dependencies: LSM303DLHC RX8025 SDFileSystem TextLCD TouchSense mbed
Fork of MAPLEminiA by
Diff: main.cpp
- Revision:
- 4:faf01cf17d60
- Parent:
- 3:aae83c4bd9a0
--- a/main.cpp Sat Jun 11 00:41:33 2016 +0000 +++ b/main.cpp Sun Jun 12 15:03:15 2016 +0000 @@ -9,7 +9,7 @@ //RTC RX-8025SA I2C(p28,p27) INTA-p25 INTB-p26 #include "RX8025.h" //地磁気+加速度センサモジュール MLSM303DLHC I2C(p28,p27) -#include "LSM303DLH.h" +#include "LSM303DLHC.h" //microSD card slot SPI(P5,p6,p7,CS-p22 CD1-p29) #include "SDFileSystem.h" //基板に作り込みの静電式タッチパッド p15~18 @@ -30,9 +30,21 @@ {0x07,0x10},{0x07,0x08},{0x09,0x10},{0x0b,0x10}, {0x0d,0x1e},{0x0d,0x1a},{0x0d,0x12},{0x0d,0x02}, {0x0f,0x10} }; + RX8025 rtc(i2c); -LSM303DLH compass(p28, p27); -SDFileSystem sd(p5, p6, p7, p22, "sd"); +LSM303DLHC compass(&i2c); + +/* SD filesystem with card detection + */ +class SDFileSystemCD : public SDFileSystem { + DigitalIn card_detect; +public: + SDFileSystemCD(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName cd, const char* name) + : SDFileSystem(p5, p6, p7, p22, "sd"), card_detect(cd, PullUp) { + } + bool cardExist(void) { return card_detect==0; } +}; +SDFileSystemCD sd(p5, p6, p7, p22, p29, "sd"); //基板の裏側に触らないと ONにならない //構造的にそういう仕様っぽいけど、どうなんだろ? @@ -56,48 +68,47 @@ MmASpeaker speaker(p20); int main() { + lcd.setContrast(32); lcd.cls(); - lcd.printf("Hello World!\n"); -/* SDカードのテストをするときにはコメントを外してね - mkdir("/sd/mydir", 0777); - FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); - if(fp == NULL) { - error("Could not open file for write\n"); - } - fprintf(fp, "Hello fun SD Card World!"); - fclose(fp); -*/ + lcd.printf("Hello World!"); + lcd.locate(0,1); + if(sd.cardExist()) { + lcd.printf("SDcard Exist"); + mkdir("/sd/mydir", 0777); + FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); + if(fp == NULL) { + error("Could not open file for write\n"); + } + fprintf(fp, "Hello fun SD Card World!"); + fclose(fp); + } else lcd.printf("No SDcard"); Times t={0,0,0,0,0,0,0}; rtc.setTIME(t); - compass.setOffset(0.00, 0.00, 0.00); - compass.setScale(1.00, 1.00, 1.00); sw1.calibration(); sw2.calibration(); sw3.calibration(); sw4.calibration(); + wait(3.0); speaker.beep(); int iconcounter=0; while(1) { Times t=rtc.getTIME(); - float hdg = compass.heading(); - bool s1=sw1.sense(),s2=sw2.sense(),s3=sw3.sense(),s4=sw4.sense(); - - if(s1) speaker.beep(200); - else if(s2) speaker.beep(400); - else if(s3) speaker.beep(800); - else if(s4) speaker.beep(1600); + compass.getAccel(); + compass.getMagnet(); + int sw=(((sw1.sense()<<1 | sw2.sense())<<1) | sw3.sense())<<1 |sw4.sense(); + speaker.beep(1600/sw); lcd.locate(0,0); - lcd.printf("%d %d %d %d ",s1,s2,s3,s4); + lcd.printf("%1x %.1f %d ", sw, compass.temperature(), compass.accelX()); lcd.locate(0,1); - lcd.printf("%02X:%02X:%02X %.2f", t.hours, t.minutes, t.seconds, hdg); + lcd.printf("%02X:%02X:%02X %.1f", t.hours, t.minutes, t.seconds, compass.orientation()); + lcd.clrIcon(); lcd.setIcon(icons[iconcounter].address,icons[iconcounter].data); + if(++iconcounter >= MAXICONS) iconcounter=0; myled = 1; wait(0.2); myled = 0; wait(0.2); - lcd.setIcon(icons[iconcounter].address,0); - if(++iconcounter >= MAXICONS) iconcounter=0; } }