お盆用コードだよ
Dependencies: Servo mbed-rtos mbed
main.cpp@1:17b3afbf9278, 2014-06-24 (annotated)
- Committer:
- Hatter
- Date:
- Tue Jun 24 09:05:13 2014 +0000
- Revision:
- 1:17b3afbf9278
- Parent:
- 0:72dbc49bd254
- Child:
- 2:0edba6ddfd48
Fixed a performance regression
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Hatter | 0:72dbc49bd254 | 1 | /* |
Hatter | 0:72dbc49bd254 | 2 | * Servo motor program for OBON by Tomoki Hokida |
Hatter | 0:72dbc49bd254 | 3 | * |
Hatter | 0:72dbc49bd254 | 4 | * Use rtos in this program |
Hatter | 0:72dbc49bd254 | 5 | * |
Hatter | 0:72dbc49bd254 | 6 | * RTOSをバリバリ使用しているのであしあらず |
Hatter | 0:72dbc49bd254 | 7 | * サーボを4つ使うことになったらSERVO_4をdefineしましょう |
Hatter | 0:72dbc49bd254 | 8 | */ |
Hatter | 0:72dbc49bd254 | 9 | |
Hatter | 0:72dbc49bd254 | 10 | #include "mbed.h" |
Hatter | 0:72dbc49bd254 | 11 | #include "Servo.h" |
Hatter | 0:72dbc49bd254 | 12 | #include "rtos.h" |
Hatter | 0:72dbc49bd254 | 13 | |
Hatter | 0:72dbc49bd254 | 14 | #define DEFAULT_R 50 |
Hatter | 0:72dbc49bd254 | 15 | #define DEFAULT_L 50 |
Hatter | 0:72dbc49bd254 | 16 | #define DEFAULT_U 50 |
Hatter | 0:72dbc49bd254 | 17 | #define DEFAULT_D 50 |
Hatter | 0:72dbc49bd254 | 18 | |
Hatter | 1:17b3afbf9278 | 19 | //#define SERVO_4 |
Hatter | 1:17b3afbf9278 | 20 | |
Hatter | 0:72dbc49bd254 | 21 | DigitalOut led1(LED1); |
Hatter | 0:72dbc49bd254 | 22 | DigitalOut led2(LED2); |
Hatter | 0:72dbc49bd254 | 23 | |
Hatter | 0:72dbc49bd254 | 24 | #ifdef SERVO_4 |
Hatter | 0:72dbc49bd254 | 25 | DigitalOut led3(LED3); |
Hatter | 0:72dbc49bd254 | 26 | DigitalOut led4(LED4); |
Hatter | 0:72dbc49bd254 | 27 | #endif |
Hatter | 0:72dbc49bd254 | 28 | |
Hatter | 0:72dbc49bd254 | 29 | DigitalIn swU(p17); |
Hatter | 0:72dbc49bd254 | 30 | DigitalIn swD(p18); |
Hatter | 0:72dbc49bd254 | 31 | DigitalIn swR(p19); |
Hatter | 0:72dbc49bd254 | 32 | DigitalIn swL(p20); |
Hatter | 0:72dbc49bd254 | 33 | |
Hatter | 0:72dbc49bd254 | 34 | Servo obonU(p21); |
Hatter | 0:72dbc49bd254 | 35 | Servo obonR(p22); |
Hatter | 0:72dbc49bd254 | 36 | |
Hatter | 0:72dbc49bd254 | 37 | #ifdef SERVO_4 |
Hatter | 0:72dbc49bd254 | 38 | Servo obonD(p23); |
Hatter | 0:72dbc49bd254 | 39 | Servo obonL(p24); |
Hatter | 0:72dbc49bd254 | 40 | #endif |
Hatter | 0:72dbc49bd254 | 41 | |
Hatter | 0:72dbc49bd254 | 42 | void obonThreadR(void const *argument){ |
Hatter | 0:72dbc49bd254 | 43 | |
Hatter | 0:72dbc49bd254 | 44 | for(int j=DEFAULT_R;;){ |
Hatter | 0:72dbc49bd254 | 45 | |
Hatter | 0:72dbc49bd254 | 46 | obonR = j/100.0; |
Hatter | 0:72dbc49bd254 | 47 | |
Hatter | 0:72dbc49bd254 | 48 | if((!swR)&&(j<100.0)){j++;} |
Hatter | 0:72dbc49bd254 | 49 | if((!swL)&&(j>0)){j--;} |
Hatter | 0:72dbc49bd254 | 50 | |
Hatter | 0:72dbc49bd254 | 51 | led1 = !led1; |
Hatter | 0:72dbc49bd254 | 52 | |
Hatter | 0:72dbc49bd254 | 53 | Thread::wait(10); |
Hatter | 0:72dbc49bd254 | 54 | } |
Hatter | 0:72dbc49bd254 | 55 | } |
Hatter | 0:72dbc49bd254 | 56 | |
Hatter | 0:72dbc49bd254 | 57 | void obonThreadU(void const *argument){ |
Hatter | 0:72dbc49bd254 | 58 | for(int k=DEFAULT_U; ;){ |
Hatter | 0:72dbc49bd254 | 59 | |
Hatter | 0:72dbc49bd254 | 60 | obonU = k/100.0; |
Hatter | 0:72dbc49bd254 | 61 | |
Hatter | 0:72dbc49bd254 | 62 | if((!swU)&&(k<100.0)){k++;} |
Hatter | 0:72dbc49bd254 | 63 | if((!swD)&&(k>0)){k--;} |
Hatter | 0:72dbc49bd254 | 64 | |
Hatter | 0:72dbc49bd254 | 65 | led2 = !led2; |
Hatter | 0:72dbc49bd254 | 66 | |
Hatter | 0:72dbc49bd254 | 67 | Thread::wait(10); |
Hatter | 0:72dbc49bd254 | 68 | } |
Hatter | 0:72dbc49bd254 | 69 | } |
Hatter | 0:72dbc49bd254 | 70 | |
Hatter | 0:72dbc49bd254 | 71 | #ifdef SERVO_4 |
Hatter | 0:72dbc49bd254 | 72 | |
Hatter | 0:72dbc49bd254 | 73 | void obonThreadL(void const *argument){ |
Hatter | 0:72dbc49bd254 | 74 | for(int i=DEFAULT_L;;){ |
Hatter | 0:72dbc49bd254 | 75 | |
Hatter | 0:72dbc49bd254 | 76 | obonL = i/100.0; |
Hatter | 0:72dbc49bd254 | 77 | |
Hatter | 0:72dbc49bd254 | 78 | if((!swL)&&(i<100.0)){i++;} |
Hatter | 0:72dbc49bd254 | 79 | if((!swR)&&(i>0)){i--;} |
Hatter | 0:72dbc49bd254 | 80 | |
Hatter | 0:72dbc49bd254 | 81 | led3 = !led3; |
Hatter | 0:72dbc49bd254 | 82 | |
Hatter | 0:72dbc49bd254 | 83 | Thread::wait(10); |
Hatter | 0:72dbc49bd254 | 84 | } |
Hatter | 0:72dbc49bd254 | 85 | } |
Hatter | 0:72dbc49bd254 | 86 | |
Hatter | 0:72dbc49bd254 | 87 | void obonThreadD(void const *argument){ |
Hatter | 0:72dbc49bd254 | 88 | for(int l=DEFAULT_D;;){ |
Hatter | 0:72dbc49bd254 | 89 | |
Hatter | 0:72dbc49bd254 | 90 | obonL = l/100.0; |
Hatter | 0:72dbc49bd254 | 91 | |
Hatter | 0:72dbc49bd254 | 92 | if((!swD)&&(l<=100.0)){l++;} |
Hatter | 0:72dbc49bd254 | 93 | if((!swU)&&(l>=0)){l--;} |
Hatter | 0:72dbc49bd254 | 94 | |
Hatter | 0:72dbc49bd254 | 95 | led4 = !led4; |
Hatter | 0:72dbc49bd254 | 96 | |
Hatter | 0:72dbc49bd254 | 97 | Thread::wait(10); |
Hatter | 0:72dbc49bd254 | 98 | } |
Hatter | 0:72dbc49bd254 | 99 | } |
Hatter | 0:72dbc49bd254 | 100 | |
Hatter | 0:72dbc49bd254 | 101 | |
Hatter | 0:72dbc49bd254 | 102 | #endif |
Hatter | 0:72dbc49bd254 | 103 | |
Hatter | 0:72dbc49bd254 | 104 | int main() { |
Hatter | 0:72dbc49bd254 | 105 | |
Hatter | 0:72dbc49bd254 | 106 | swU.mode(PullUp); |
Hatter | 0:72dbc49bd254 | 107 | swD.mode(PullUp); |
Hatter | 0:72dbc49bd254 | 108 | swL.mode(PullUp); |
Hatter | 0:72dbc49bd254 | 109 | swR.mode(PullUp); |
Hatter | 0:72dbc49bd254 | 110 | |
Hatter | 0:72dbc49bd254 | 111 | Thread thread1(obonThreadU); |
Hatter | 0:72dbc49bd254 | 112 | Thread thread2(obonThreadR); |
Hatter | 0:72dbc49bd254 | 113 | |
Hatter | 0:72dbc49bd254 | 114 | #ifdef SERVO_4 |
Hatter | 0:72dbc49bd254 | 115 | |
Hatter | 0:72dbc49bd254 | 116 | Thread thread3(obonThreadD); |
Hatter | 0:72dbc49bd254 | 117 | Thread thread4(obonThreadL); |
Hatter | 0:72dbc49bd254 | 118 | |
Hatter | 0:72dbc49bd254 | 119 | #endif |
Hatter | 0:72dbc49bd254 | 120 | for(;;); |
Hatter | 0:72dbc49bd254 | 121 | |
Hatter | 0:72dbc49bd254 | 122 | } |