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.
Sensor/TweLite_Sensors.cpp@33:d939479e7b13, 2017-03-01 (annotated)
- Committer:
- naoya1687
- Date:
- Wed Mar 01 08:05:52 2017 +0000
- Revision:
- 33:d939479e7b13
- Parent:
- 31:cef6ee7af014
- Child:
- 34:770a6bbb4d63
BatteryChecker.h???twelite_sensors??
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
naoya1687 | 30:6d3a78bc1925 | 1 | #include "mbed.h" |
naoya1687 | 30:6d3a78bc1925 | 2 | #include "Global.h" |
naoya1687 | 31:cef6ee7af014 | 3 | #include "TweLite_Sensors.h" |
naoya1687 | 30:6d3a78bc1925 | 4 | #include <string> |
naoya1687 | 33:d939479e7b13 | 5 | #define CADENCEHEADER 0xf |
naoya1687 | 33:d939479e7b13 | 6 | #define ULTSONICHEADER 0xe |
naoya1687 | 33:d939479e7b13 | 7 | #define CADENCE 0 |
naoya1687 | 30:6d3a78bc1925 | 8 | #define ULTSONIC 1 |
naoya1687 | 33:d939479e7b13 | 9 | |
naoya1687 | 33:d939479e7b13 | 10 | std::string TweLite_Sensors::str; |
naoya1687 | 33:d939479e7b13 | 11 | |
naoya1687 | 33:d939479e7b13 | 12 | TweLite_Sensors::TweLite_Sensors(PinName tx, PinName rx) : twelite(tx,rx,9600){ |
naoya1687 | 33:d939479e7b13 | 13 | receivef=0; |
naoya1687 | 33:d939479e7b13 | 14 | request=0; |
naoya1687 | 33:d939479e7b13 | 15 | size=0; |
naoya1687 | 33:d939479e7b13 | 16 | twelite.attach(this,&TweLite_Sensors::twelite_rx,Serial::RxIrq); |
naoya1687 | 33:d939479e7b13 | 17 | flipper.attach(this,&TweLite_Sensors::flip, 0.25); |
naoya1687 | 30:6d3a78bc1925 | 18 | } |
naoya1687 | 30:6d3a78bc1925 | 19 | |
naoya1687 | 33:d939479e7b13 | 20 | void TweLite_Sensors::scan(){ |
naoya1687 | 33:d939479e7b13 | 21 | while(size<9){wait_ms(1);}//ここを空にするとループを抜けなくなる |
naoya1687 | 33:d939479e7b13 | 22 | if(str[0]==CADENCEHEADER){//ヘッダ |
naoya1687 | 33:d939479e7b13 | 23 | for(int i=0;i<8;i++){ |
naoya1687 | 33:d939479e7b13 | 24 | data[i]=str[i+1]; |
naoya1687 | 33:d939479e7b13 | 25 | } |
naoya1687 | 33:d939479e7b13 | 26 | for(int i=0;i<=size-9;i++) str[i]=str[i+9]; |
naoya1687 | 33:d939479e7b13 | 27 | size-=9; |
naoya1687 | 33:d939479e7b13 | 28 | cadencevalue = *(float*) data; |
naoya1687 | 33:d939479e7b13 | 29 | cadenceBattery = *(float*) (data+4); |
naoya1687 | 33:d939479e7b13 | 30 | Global::setcadence(cadencevalue); |
naoya1687 | 33:d939479e7b13 | 31 | Global::setcadencevolt(cadenceBattery); |
naoya1687 | 33:d939479e7b13 | 32 | }else if(str[0]==ULTSONICHEADER){ |
naoya1687 | 33:d939479e7b13 | 33 | for(int i=0;i<8;i++){ |
naoya1687 | 33:d939479e7b13 | 34 | data[i]=str[i+1]; |
naoya1687 | 33:d939479e7b13 | 35 | } |
naoya1687 | 33:d939479e7b13 | 36 | for(int i=0;i<=size-9;i++) str[i]=str[i+9]; |
naoya1687 | 33:d939479e7b13 | 37 | size-=9; |
naoya1687 | 33:d939479e7b13 | 38 | ultsonicvalue = *(float*) data; |
naoya1687 | 33:d939479e7b13 | 39 | ultsonicBattery = *(float*) (data+4); |
naoya1687 | 33:d939479e7b13 | 40 | Global::setultsonic(ultsonicvalue); |
naoya1687 | 33:d939479e7b13 | 41 | Global::setultsonicvolt(ultsonicBattery); |
naoya1687 | 33:d939479e7b13 | 42 | }else{ |
naoya1687 | 33:d939479e7b13 | 43 | for(int i=0;i<=size-9;i++) str[i]=str[i+9]; |
naoya1687 | 33:d939479e7b13 | 44 | size-=9; |
naoya1687 | 33:d939479e7b13 | 45 | } |
naoya1687 | 33:d939479e7b13 | 46 | //pc.printf("%d",size);//45以上になるとRTX error code: 0x00000001, task ID: 0x20000540 |
naoya1687 | 31:cef6ee7af014 | 47 | } |
naoya1687 | 31:cef6ee7af014 | 48 | |
naoya1687 | 33:d939479e7b13 | 49 | void TweLite_Sensors::twelite_rx() { |
naoya1687 | 33:d939479e7b13 | 50 | while(twelite.readable()==1){ |
naoya1687 | 33:d939479e7b13 | 51 | if(receivef==0) { |
naoya1687 | 33:d939479e7b13 | 52 | char c=twelite.getc(); |
naoya1687 | 33:d939479e7b13 | 53 | if(c==CADENCEHEADER){ |
naoya1687 | 33:d939479e7b13 | 54 | receivef=1; |
naoya1687 | 33:d939479e7b13 | 55 | str[size]=CADENCEHEADER;//pushできない size()は0のまま |
naoya1687 | 33:d939479e7b13 | 56 | size++; |
naoya1687 | 33:d939479e7b13 | 57 | }else if(c==ULTSONICHEADER){ |
naoya1687 | 33:d939479e7b13 | 58 | receivef=1; |
naoya1687 | 33:d939479e7b13 | 59 | str[size]=ULTSONICHEADER; |
naoya1687 | 33:d939479e7b13 | 60 | size++; |
naoya1687 | 33:d939479e7b13 | 61 | } |
naoya1687 | 33:d939479e7b13 | 62 | }else if(receivef==1) { |
naoya1687 | 33:d939479e7b13 | 63 | str[size]=twelite.getc(); |
naoya1687 | 33:d939479e7b13 | 64 | size++; |
naoya1687 | 33:d939479e7b13 | 65 | } else {}//先頭がheaderではないとき |
naoya1687 | 33:d939479e7b13 | 66 | if(size%9==0) receivef=0; |
naoya1687 | 33:d939479e7b13 | 67 | } |
naoya1687 | 33:d939479e7b13 | 68 | } |
naoya1687 | 33:d939479e7b13 | 69 | |
naoya1687 | 33:d939479e7b13 | 70 | void TweLite_Sensors::flip(){ |
naoya1687 | 33:d939479e7b13 | 71 | if(request==CADENCE){ |
naoya1687 | 33:d939479e7b13 | 72 | twelite.putc(CADENCE); |
naoya1687 | 33:d939479e7b13 | 73 | request=ULTSONIC; |
naoya1687 | 33:d939479e7b13 | 74 | }else if(request==ULTSONIC){ |
naoya1687 | 33:d939479e7b13 | 75 | twelite.putc(ULTSONIC); |
naoya1687 | 33:d939479e7b13 | 76 | request=CADENCE; |
naoya1687 | 33:d939479e7b13 | 77 | } |
naoya1687 | 33:d939479e7b13 | 78 | Global::led=!Global::led; |
naoya1687 | 33:d939479e7b13 | 79 | } |
naoya1687 | 33:d939479e7b13 | 80 | |
naoya1687 | 33:d939479e7b13 | 81 | void TweLite_Sensors::update(){ |
naoya1687 | 33:d939479e7b13 | 82 | scan(); |
naoya1687 | 30:6d3a78bc1925 | 83 | } |