お盆用コードだよ

Dependencies:   Servo mbed-rtos mbed

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?

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