お盆用コードだよ
Dependencies: Servo mbed-rtos mbed
Diff: main.cpp
- Revision:
- 0:72dbc49bd254
- Child:
- 1:17b3afbf9278
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jun 24 09:04:21 2014 +0000 @@ -0,0 +1,120 @@ +/* +* Servo motor program for OBON by Tomoki Hokida +* +* Use rtos in this program +* +* RTOSをバリバリ使用しているのであしあらず +* サーボを4つ使うことになったらSERVO_4をdefineしましょう +*/ + +#include "mbed.h" +#include "Servo.h" +#include "rtos.h" + +#define DEFAULT_R 50 +#define DEFAULT_L 50 +#define DEFAULT_U 50 +#define DEFAULT_D 50 + +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +#ifdef SERVO_4 +DigitalOut led3(LED3); +DigitalOut led4(LED4); +#endif + +DigitalIn swU(p17); +DigitalIn swD(p18); +DigitalIn swR(p19); +DigitalIn swL(p20); + +Servo obonU(p21); +Servo obonR(p22); + +#ifdef SERVO_4 +Servo obonD(p23); +Servo obonL(p24); +#endif + +void obonThreadR(void const *argument){ + + for(int j=DEFAULT_R;;){ + + obonR = j/100.0; + + if((!swR)&&(j<100.0)){j++;} + if((!swL)&&(j>0)){j--;} + + led1 = !led1; + + Thread::wait(10); + } +} + +void obonThreadU(void const *argument){ + for(int k=DEFAULT_U; ;){ + + obonU = k/100.0; + + if((!swU)&&(k<100.0)){k++;} + if((!swD)&&(k>0)){k--;} + + led2 = !led2; + + Thread::wait(10); + } +} + +#ifdef SERVO_4 + +void obonThreadL(void const *argument){ + for(int i=DEFAULT_L;;){ + + obonL = i/100.0; + + if((!swL)&&(i<100.0)){i++;} + if((!swR)&&(i>0)){i--;} + + led3 = !led3; + + Thread::wait(10); + } +} + +void obonThreadD(void const *argument){ + for(int l=DEFAULT_D;;){ + + obonL = l/100.0; + + if((!swD)&&(l<=100.0)){l++;} + if((!swU)&&(l>=0)){l--;} + + led4 = !led4; + + Thread::wait(10); + } +} + + +#endif + +int main() { + + swU.mode(PullUp); + swD.mode(PullUp); + swL.mode(PullUp); + swR.mode(PullUp); + + Thread thread1(obonThreadU); + Thread thread2(obonThreadR); + + #ifdef SERVO_4 + + Thread thread3(obonThreadD); + Thread thread4(obonThreadL); + + #endif + for(;;); + +} \ No newline at end of file