Sample Program for Marutsu-elec MAPLE-mini TypeA board(MARM02-BASE)
Dependencies: LSM303DLHC RX8025 SDFileSystem TextLCD TouchSense mbed
マルツで販売している MAPLE-mini TypeA基板上のデバイス用のライブラリを集めてみました。
以下の点で不満が残っているので、今後改良する予定です。
- RTCチップの INTA,INTBが結線されていますが、このライブラリには含まれていません。
- タッチパッドは裏側を触ればOnになりますが、これが基板の仕様なのかどうか不明です。
- 圧電ブザーはp20に結線されていて mbed1768ではp20はPWMが使えませんので、DigitalOut で使っています。
2016/06/11 9:54 LCDでアイコンの表示を付け加えました
2016/06/12 SDカードの CD1を利用するようにしました。加速度センサのライブラリを書き直して温度も取得できるようにしました。
main.cpp
- Committer:
- jk1lot
- Date:
- 2016-06-05
- Revision:
- 1:707a0a314781
- Parent:
- 0:06047ad53505
- Child:
- 3:aae83c4bd9a0
File content as of revision 1:707a0a314781:
/* Sample for MAPLE-mini TypeA board(marutsu-elec MARM02-BASE) * マルツの MAPLE-mini TypeA基板(型番MARM02-BASE)用の動作確認用のプログラムです。 */ #include "mbed.h" //液晶モジュール MI2CLCD-01 I2C(p28,p27) #include "TextLCD.h" //RTC RX-8025SA I2C(p28,p27) INTA-p25 INTB-p26 #include "RX8025.h" //地磁気+加速度センサモジュール MLSM303DLHC I2C(p28,p27) #include "LSM303DLH.h" //microSD card slot SPI(P5,p6,p7,CS-p22 CD1-p29) #include "SDFileSystem.h" //基板に作り込みの静電式タッチパッド p15~18 #include "TouchSense.h" //圧電スピーカ p20 //TypeB,C基板接続用コネクタ UART(p9,p10) I2C(p28,p27) DigitalOut myled(LED1); I2C i2c(p28,p27); // SDA, SCL TextLCD_I2C_N lcd(&i2c, ST7032_SA, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); RX8025 rtc(i2c); LSM303DLH compass(p28, p27); SDFileSystem sd(p5, p6, p7, p22, "sd"); //基板の裏側に触らないと ONにならない //構造的にそういう仕様っぽいけど、どうなんだろ? TouchSense sw1(p15),sw2(p16),sw3(p17),sw4(p18); //圧電スピーカかp20に繋がっている //このボードのメインターゲットの MyARM基板では p20をPWMに出来るらしいけど //mbed1768では PWMに出来ないので DigitalOutで使用 class MmASpeaker : public DigitalOut { public: MmASpeaker(PinName p) : DigitalOut(p) {} void beep(int32_t hz=1000, int32_t ms=100) { for(int i=0; i<hz*ms/1000; i++) { write(1); wait_us(1000*1000/hz/2); write(0); wait_us(1000*1000/hz/2); } } }; MmASpeaker speaker(p20); int main() { 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); */ 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(); speaker.beep(); 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); lcd.locate(0,0); lcd.printf("%d %d %d %d ",s1,s2,s3,s4); lcd.locate(0,1); lcd.printf("%02X:%02X:%02X %.2f", t.hours, t.minutes, t.seconds, hdg); myled = 1; wait(0.2); myled = 0; wait(0.2); } }