お盆用コードだよ

Dependencies:   Servo mbed-rtos mbed

Committer:
Hatter
Date:
Tue Jun 24 09:04:21 2014 +0000
Revision:
0:72dbc49bd254
Child:
1:17b3afbf9278
OBON;

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 0:72dbc49bd254 19 DigitalOut led1(LED1);
Hatter 0:72dbc49bd254 20 DigitalOut led2(LED2);
Hatter 0:72dbc49bd254 21
Hatter 0:72dbc49bd254 22 #ifdef SERVO_4
Hatter 0:72dbc49bd254 23 DigitalOut led3(LED3);
Hatter 0:72dbc49bd254 24 DigitalOut led4(LED4);
Hatter 0:72dbc49bd254 25 #endif
Hatter 0:72dbc49bd254 26
Hatter 0:72dbc49bd254 27 DigitalIn swU(p17);
Hatter 0:72dbc49bd254 28 DigitalIn swD(p18);
Hatter 0:72dbc49bd254 29 DigitalIn swR(p19);
Hatter 0:72dbc49bd254 30 DigitalIn swL(p20);
Hatter 0:72dbc49bd254 31
Hatter 0:72dbc49bd254 32 Servo obonU(p21);
Hatter 0:72dbc49bd254 33 Servo obonR(p22);
Hatter 0:72dbc49bd254 34
Hatter 0:72dbc49bd254 35 #ifdef SERVO_4
Hatter 0:72dbc49bd254 36 Servo obonD(p23);
Hatter 0:72dbc49bd254 37 Servo obonL(p24);
Hatter 0:72dbc49bd254 38 #endif
Hatter 0:72dbc49bd254 39
Hatter 0:72dbc49bd254 40 void obonThreadR(void const *argument){
Hatter 0:72dbc49bd254 41
Hatter 0:72dbc49bd254 42 for(int j=DEFAULT_R;;){
Hatter 0:72dbc49bd254 43
Hatter 0:72dbc49bd254 44 obonR = j/100.0;
Hatter 0:72dbc49bd254 45
Hatter 0:72dbc49bd254 46 if((!swR)&&(j<100.0)){j++;}
Hatter 0:72dbc49bd254 47 if((!swL)&&(j>0)){j--;}
Hatter 0:72dbc49bd254 48
Hatter 0:72dbc49bd254 49 led1 = !led1;
Hatter 0:72dbc49bd254 50
Hatter 0:72dbc49bd254 51 Thread::wait(10);
Hatter 0:72dbc49bd254 52 }
Hatter 0:72dbc49bd254 53 }
Hatter 0:72dbc49bd254 54
Hatter 0:72dbc49bd254 55 void obonThreadU(void const *argument){
Hatter 0:72dbc49bd254 56 for(int k=DEFAULT_U; ;){
Hatter 0:72dbc49bd254 57
Hatter 0:72dbc49bd254 58 obonU = k/100.0;
Hatter 0:72dbc49bd254 59
Hatter 0:72dbc49bd254 60 if((!swU)&&(k<100.0)){k++;}
Hatter 0:72dbc49bd254 61 if((!swD)&&(k>0)){k--;}
Hatter 0:72dbc49bd254 62
Hatter 0:72dbc49bd254 63 led2 = !led2;
Hatter 0:72dbc49bd254 64
Hatter 0:72dbc49bd254 65 Thread::wait(10);
Hatter 0:72dbc49bd254 66 }
Hatter 0:72dbc49bd254 67 }
Hatter 0:72dbc49bd254 68
Hatter 0:72dbc49bd254 69 #ifdef SERVO_4
Hatter 0:72dbc49bd254 70
Hatter 0:72dbc49bd254 71 void obonThreadL(void const *argument){
Hatter 0:72dbc49bd254 72 for(int i=DEFAULT_L;;){
Hatter 0:72dbc49bd254 73
Hatter 0:72dbc49bd254 74 obonL = i/100.0;
Hatter 0:72dbc49bd254 75
Hatter 0:72dbc49bd254 76 if((!swL)&&(i<100.0)){i++;}
Hatter 0:72dbc49bd254 77 if((!swR)&&(i>0)){i--;}
Hatter 0:72dbc49bd254 78
Hatter 0:72dbc49bd254 79 led3 = !led3;
Hatter 0:72dbc49bd254 80
Hatter 0:72dbc49bd254 81 Thread::wait(10);
Hatter 0:72dbc49bd254 82 }
Hatter 0:72dbc49bd254 83 }
Hatter 0:72dbc49bd254 84
Hatter 0:72dbc49bd254 85 void obonThreadD(void const *argument){
Hatter 0:72dbc49bd254 86 for(int l=DEFAULT_D;;){
Hatter 0:72dbc49bd254 87
Hatter 0:72dbc49bd254 88 obonL = l/100.0;
Hatter 0:72dbc49bd254 89
Hatter 0:72dbc49bd254 90 if((!swD)&&(l<=100.0)){l++;}
Hatter 0:72dbc49bd254 91 if((!swU)&&(l>=0)){l--;}
Hatter 0:72dbc49bd254 92
Hatter 0:72dbc49bd254 93 led4 = !led4;
Hatter 0:72dbc49bd254 94
Hatter 0:72dbc49bd254 95 Thread::wait(10);
Hatter 0:72dbc49bd254 96 }
Hatter 0:72dbc49bd254 97 }
Hatter 0:72dbc49bd254 98
Hatter 0:72dbc49bd254 99
Hatter 0:72dbc49bd254 100 #endif
Hatter 0:72dbc49bd254 101
Hatter 0:72dbc49bd254 102 int main() {
Hatter 0:72dbc49bd254 103
Hatter 0:72dbc49bd254 104 swU.mode(PullUp);
Hatter 0:72dbc49bd254 105 swD.mode(PullUp);
Hatter 0:72dbc49bd254 106 swL.mode(PullUp);
Hatter 0:72dbc49bd254 107 swR.mode(PullUp);
Hatter 0:72dbc49bd254 108
Hatter 0:72dbc49bd254 109 Thread thread1(obonThreadU);
Hatter 0:72dbc49bd254 110 Thread thread2(obonThreadR);
Hatter 0:72dbc49bd254 111
Hatter 0:72dbc49bd254 112 #ifdef SERVO_4
Hatter 0:72dbc49bd254 113
Hatter 0:72dbc49bd254 114 Thread thread3(obonThreadD);
Hatter 0:72dbc49bd254 115 Thread thread4(obonThreadL);
Hatter 0:72dbc49bd254 116
Hatter 0:72dbc49bd254 117 #endif
Hatter 0:72dbc49bd254 118 for(;;);
Hatter 0:72dbc49bd254 119
Hatter 0:72dbc49bd254 120 }