yamanouti_purogram_zyouhannsinn

Dependencies:   mbed MotorDrivers

Committer:
sink
Date:
Wed Oct 07 07:49:21 2020 +0000
Revision:
0:a6f29afbd285
Child:
1:2e084048b5f9
reserve

Who changed what in which revision?

UserRevisionLine numberNew 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 }