100% akira
/
summer_robocon_syudouki
夏ロボ@手動機
Revision 1:797913662b1f, committed 2018-07-15
- Comitter:
- AK1412
- Date:
- Sun Jul 15 09:12:49 2018 +0000
- Parent:
- 0:845a9290c7e8
- Commit message:
Changed in this revision
diff -r 845a9290c7e8 -r 797913662b1f kbt.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kbt.lib Sun Jul 15 09:12:49 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/AK1412/code/kbt/#2e1d8ef6e6a2
diff -r 845a9290c7e8 -r 797913662b1f syudouki.c --- a/syudouki.c Sat Jun 30 05:50:15 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -#include "mbed.h" -
diff -r 845a9290c7e8 -r 797913662b1f syudouki.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syudouki.cpp Sun Jul 15 09:12:49 2018 +0000 @@ -0,0 +1,126 @@ +#include "mbed.h" +#include "kbt.h" + +KBT kbt(PA_9,PA_10); +Serial pc(USBTX,USBRX); + +PwmOut rifrpl (PC_12); +PwmOut rifrmi (PA_13); +PwmOut ribapl (PA_14); +PwmOut ribami (PA_15); +PwmOut lefrpl (PB_7); +PwmOut lefrmi (PC_13); +PwmOut lebapl (PF_0); +PwmOut lebami (PC_2); +PwmOut servo (PC_3); +DigitalOut air (PB_10); + +double map(double x, double in_min, double in_max, double out_min, double out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +double Abs ( double value ){ + if ( value < 0 ) + value = value*(-1); + return value; + } + +int main() { + + kbt.init(2400); + pc.baud(9600); + + while(1) { + double Larpow = kbt.Stick[L_around]; + double Luppow = kbt.Stick[L_updown]; + + int dir; + + double pow = 0; + + double Larpowabs = Abs(Larpow); + double Luppowabs = Abs(Luppow); + + if (Larpowabs > Luppowabs){ + if (Larpow < 0){ + dir = 0; + pow = Larpow*(-1); + } + else if (Larpow > 0){ + dir = 1; + pow = Larpow; + } + } + else { + if (Luppow < 0){ + dir = 2; + pow = Luppow*(-1); + } + else if (Luppow > 0){ + dir = 3; + pow = Luppow; + } + } + + pow = map(pow,0.0,255.0,0.0,1.0); + + switch (dir){ + case 0 : + rifrpl = 0; + rifrmi = pow; + ribapl = pow; + ribami = 0; + lefrpl = pow; + lefrmi = 0; + lebapl = 0; + lebami = pow; + break; + case 1 : + rifrpl = pow; + rifrmi = 0; + ribapl = 0; + ribami = pow; + lefrpl = 0; + lefrmi = pow; + lebapl = pow; + lebami = 0; + break; + case 2 : + rifrpl = 0; + rifrmi = pow; + ribapl = 0; + ribami = pow; + lefrpl = 0; + lefrmi = pow; + lebapl = 0; + lebami = pow; + break; + case 3 : + rifrpl = pow; + rifrmi = 0; + ribapl = pow; + ribami = 0; + lefrpl = pow; + lefrmi = 0; + lebapl = pow; + lebami = 0; + break; + } + + bool ser = kbt.Button[circle]; + servo.period_ms(20); + if (ser == 1){ + servo.pulsewidth_us(700); + wait(8); + servo.pulsewidth_us(1500); + wait(8); + } + + bool ai = kbt.Button[triangle]; + if (ai == 1) + air = 1; + else + air = 0; + } +} \ No newline at end of file