yamanouti_purogram_zyouhannsinn
Dependencies: mbed MotorDrivers
main.cpp
- Committer:
- sink
- Date:
- 2020-10-07
- Revision:
- 0:a6f29afbd285
- Child:
- 1:2e084048b5f9
File content as of revision 0:a6f29afbd285:
#include "mbed.h" #include "string" #include "Sabertooth_Serial.h" #define INT_TIME 0.02 #define ADRS 130 #define UP 0b00000001 #define DOWN 0b00000010 #define HANDR 0b00000100 #define HANDL 0b00001000 #define OTHER 0b00010000 Ticker timer; RawSerial Master(p28, p27, 115200); SaberSerial MD(115200, p13, p14); DigitalOut hund_fetR(p23); DigitalOut hund_fetL(p24); string Master_recv = ""; char buttons = 0b00000000, pre_buttons = 0b00000000; void recv_interrupt(){ char recv_c = Master.getc(); if (recv_c == '\n'){ buttons = Master_recv[0]; Master_recv = ""; } else{ Master_recv += recv_c; if(Master_recv.size() == 2) Master_recv = ""; } } void timer_interrupt(){ int saber_speed = 0, saber_def = 0; int hundR_counter = 0, hundL_counter = 0; if(~buttons & HANDR && pre_buttons & HANDR) hundR_counter++; if(~buttons & HANDL && pre_buttons & HANDL) hundL_counter++; hund_fetR.write(hundR_counter % 2); hund_fetL.write(hundL_counter % 2); if(buttons & UP){ saber_speed = 50; saber_def = 0; } else if(buttons & DOWN){ saber_speed = 50; saber_def = 1; } else saber_speed = 0; MD.Serial(ADRS,saber_def,saber_speed); pre_buttons = buttons; } int main() { timer.attach(&timer_interrupt,INT_TIME); Master.attach(&recv_interrupt, RawSerial::RxIrq); while(true) {} }