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;
    }
}