matsu-bedからいっぱいサーボを動かすサンプル
Dependencies: USBDevice mbed pwm_all_out
main.cpp
- Committer:
- hardtail
- Date:
- 2018-02-16
- Revision:
- 1:f9fd93da55f6
- Parent:
- 0:323cabf2b862
File content as of revision 1:f9fd93da55f6:
#include "mbed.h" #include "USBSerial.h" #include "PwmOut_all.h" #include "pwm_all_api.h" #define LED1 P0_29 #define LED2 P0_28 #define LED3 P0_27 #define LED4 P0_26 #define ISP0 P0_4 #define ISP1 P0_16 DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); Ticker ticker; int ledc(int a,int i); void LEDwave(); //Virtual serial port over USB //USBSerial serial; /* PwmOut servo[] = {PwmOut(P0_0), PwmOut(P0_1), PwmOut(P0_2), PwmOut(P0_3), PwmOut(P0_5), PwmOut(P0_6), PwmOut(P0_7), PwmOut(P0_8), PwmOut(P0_9), PwmOut(P0_10), PwmOut(P0_11), PwmOut(P0_12), PwmOut(P0_14), PwmOut(P0_15), PwmOut(P0_17), PwmOut(P0_18), PwmOut(P0_19), PwmOut(P0_20) }; */ //PwmOut s1(P0_0); PwmOutAll s2(P0_1); PwmOutAll s3(P0_2); PwmOutAll s4(P0_3); PwmOutAll s5(P0_5); PwmOutAll s6(P0_6); /* PwmOut s7(P0_7); PwmOut s8(P0_8); PwmOut s9(P0_9); PwmOut s10(P0_10); PwmOut s11(P0_11); PwmOut s12(P0_12); PwmOut s13(P0_14); PwmOut s14(P0_15); PwmOut s15(P0_17); PwmOut s16(P0_18); PwmOut s17(P0_19); PwmOut s18(P0_20); */ //PwmOut servo(P0_22); int main(void) { int p = 1000; ticker.attach(&LEDwave, 0.2); while(1) {/* if(p <= 2000){ for (int p = 1000; p <= 2000; p+=100){ for(int i=0; i<18; i++) servo[i].pulsewidth_us(p); } }else{ for (int p = 2000; p >= 1000; p-=100){ for(int i=0; i<18; i++) servo[i].pulsewidth_us(p); } }*/ for (p = 1000; p <= 2000; p+=100){ //for(int i=0; i<18; i++) servo[i].pulsewidth_us(p); //s1.pulsewidth_us(p); s2.pulsewidth_us(p); s3.pulsewidth_us(p); s4.pulsewidth_us(p); s5.pulsewidth_us(p); wait(0.01); s6.pulsewidth_us(p); /* s7.pulsewidth_us(p); s8.pulsewidth_us(p); s9.pulsewidth_us(p); s10.pulsewidth_us(p); s11.pulsewidth_us(p); s12.pulsewidth_us(p); s13.pulsewidth_us(p); s14.pulsewidth_us(p); s15.pulsewidth_us(p); s16.pulsewidth_us(p); s17.pulsewidth_us(p); s18.pulsewidth_us(p); */ //servo.pulsewidth_us(p); //serial.printf(" hello %d\r\n",p); wait(0.1); } for (p = 2000; p >= 1000; p-=100){ //for(int i=0; i<18; i++) servo[i].pulsewidth_us(p); //s1.pulsewidth_us(p); s2.pulsewidth_us(p); s3.pulsewidth_us(p); s4.pulsewidth_us(p); s5.pulsewidth_us(p); wait(0.01); s6.pulsewidth_us(p); /* s7.pulsewidth_us(p); s8.pulsewidth_us(p); s9.pulsewidth_us(p); s10.pulsewidth_us(p); s11.pulsewidth_us(p); s12.pulsewidth_us(p); s13.pulsewidth_us(p); s14.pulsewidth_us(p); s15.pulsewidth_us(p); s16.pulsewidth_us(p); s17.pulsewidth_us(p); s18.pulsewidth_us(p); */ //servo.pulsewidth_us(p); //serial.printf(" hello %d\r\n",p); wait(0.1); } } } int ledc(int a,int i){ switch(a){ case 1 :myled1=!i; break; case 2 :myled2=!i; break; case 3 :myled3=!i; break; case 4 :myled4=!i; break; default : myled1=1; myled2=1; myled3=1; myled4=1; } return 0; } void LEDwave(){ static int state = 1,dir = 1; if(dir){ ledc(state-1,0); ledc(state,1); state ++; if(state == 4) dir = 0; }else{ ledc(state+1,0); ledc(state,1); state --; if(state == 1) dir = 1; } }