yamanouti_purogram_zyouhannsinn
Dependencies: mbed MotorDrivers
main.cpp@0:a6f29afbd285, 2020-10-07 (annotated)
- Committer:
- sink
- Date:
- Wed Oct 07 07:49:21 2020 +0000
- Revision:
- 0:a6f29afbd285
- Child:
- 1:2e084048b5f9
reserve
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sink | 0:a6f29afbd285 | 1 | #include "mbed.h" |
sink | 0:a6f29afbd285 | 2 | #include "string" |
sink | 0:a6f29afbd285 | 3 | #include "Sabertooth_Serial.h" |
sink | 0:a6f29afbd285 | 4 | #define INT_TIME 0.02 |
sink | 0:a6f29afbd285 | 5 | #define ADRS 130 |
sink | 0:a6f29afbd285 | 6 | #define UP 0b00000001 |
sink | 0:a6f29afbd285 | 7 | #define DOWN 0b00000010 |
sink | 0:a6f29afbd285 | 8 | #define HANDR 0b00000100 |
sink | 0:a6f29afbd285 | 9 | #define HANDL 0b00001000 |
sink | 0:a6f29afbd285 | 10 | #define OTHER 0b00010000 |
sink | 0:a6f29afbd285 | 11 | |
sink | 0:a6f29afbd285 | 12 | |
sink | 0:a6f29afbd285 | 13 | Ticker timer; |
sink | 0:a6f29afbd285 | 14 | |
sink | 0:a6f29afbd285 | 15 | RawSerial Master(p28, p27, 115200); |
sink | 0:a6f29afbd285 | 16 | |
sink | 0:a6f29afbd285 | 17 | SaberSerial MD(115200, p13, p14); |
sink | 0:a6f29afbd285 | 18 | |
sink | 0:a6f29afbd285 | 19 | DigitalOut hund_fetR(p23); |
sink | 0:a6f29afbd285 | 20 | DigitalOut hund_fetL(p24); |
sink | 0:a6f29afbd285 | 21 | |
sink | 0:a6f29afbd285 | 22 | string Master_recv = ""; |
sink | 0:a6f29afbd285 | 23 | char buttons = 0b00000000, pre_buttons = 0b00000000; |
sink | 0:a6f29afbd285 | 24 | |
sink | 0:a6f29afbd285 | 25 | void recv_interrupt(){ |
sink | 0:a6f29afbd285 | 26 | char recv_c = Master.getc(); |
sink | 0:a6f29afbd285 | 27 | |
sink | 0:a6f29afbd285 | 28 | if (recv_c == '\n'){ |
sink | 0:a6f29afbd285 | 29 | buttons = Master_recv[0]; |
sink | 0:a6f29afbd285 | 30 | Master_recv = ""; |
sink | 0:a6f29afbd285 | 31 | } |
sink | 0:a6f29afbd285 | 32 | else{ |
sink | 0:a6f29afbd285 | 33 | Master_recv += recv_c; |
sink | 0:a6f29afbd285 | 34 | if(Master_recv.size() == 2) Master_recv = ""; |
sink | 0:a6f29afbd285 | 35 | } |
sink | 0:a6f29afbd285 | 36 | } |
sink | 0:a6f29afbd285 | 37 | |
sink | 0:a6f29afbd285 | 38 | void timer_interrupt(){ |
sink | 0:a6f29afbd285 | 39 | |
sink | 0:a6f29afbd285 | 40 | int saber_speed = 0, saber_def = 0; |
sink | 0:a6f29afbd285 | 41 | int hundR_counter = 0, hundL_counter = 0; |
sink | 0:a6f29afbd285 | 42 | |
sink | 0:a6f29afbd285 | 43 | if(~buttons & HANDR && pre_buttons & HANDR) hundR_counter++; |
sink | 0:a6f29afbd285 | 44 | if(~buttons & HANDL && pre_buttons & HANDL) hundL_counter++; |
sink | 0:a6f29afbd285 | 45 | |
sink | 0:a6f29afbd285 | 46 | hund_fetR.write(hundR_counter % 2); |
sink | 0:a6f29afbd285 | 47 | hund_fetL.write(hundL_counter % 2); |
sink | 0:a6f29afbd285 | 48 | |
sink | 0:a6f29afbd285 | 49 | if(buttons & UP){ |
sink | 0:a6f29afbd285 | 50 | saber_speed = 50; |
sink | 0:a6f29afbd285 | 51 | saber_def = 0; |
sink | 0:a6f29afbd285 | 52 | } |
sink | 0:a6f29afbd285 | 53 | else if(buttons & DOWN){ |
sink | 0:a6f29afbd285 | 54 | saber_speed = 50; |
sink | 0:a6f29afbd285 | 55 | saber_def = 1; |
sink | 0:a6f29afbd285 | 56 | } |
sink | 0:a6f29afbd285 | 57 | else saber_speed = 0; |
sink | 0:a6f29afbd285 | 58 | |
sink | 0:a6f29afbd285 | 59 | MD.Serial(ADRS,saber_def,saber_speed); |
sink | 0:a6f29afbd285 | 60 | |
sink | 0:a6f29afbd285 | 61 | pre_buttons = buttons; |
sink | 0:a6f29afbd285 | 62 | } |
sink | 0:a6f29afbd285 | 63 | |
sink | 0:a6f29afbd285 | 64 | int main() { |
sink | 0:a6f29afbd285 | 65 | |
sink | 0:a6f29afbd285 | 66 | timer.attach(&timer_interrupt,INT_TIME); |
sink | 0:a6f29afbd285 | 67 | |
sink | 0:a6f29afbd285 | 68 | Master.attach(&recv_interrupt, RawSerial::RxIrq); |
sink | 0:a6f29afbd285 | 69 | |
sink | 0:a6f29afbd285 | 70 | while(true) {} |
sink | 0:a6f29afbd285 | 71 | } |