2つのanalogスティックのanalog値をserial通信で送信しLEDをpwm制御するプログラムの送信側。受信側とセットで使えます。

Dependencies:   mbed

※解決策思いつかず。放置済み。※

main.cpp

Committer:
eil4nyqn
Date:
2014-12-21
Revision:
0:9bca2a7d36b5

File content as of revision 0:9bca2a7d36b5:

#include "mbed.h"

AnalogIn stick[] = {p20,p19};
Serial pc(USBTX,USBRX);
Serial mc(p13,p14);
PwmOut testled[] = {LED1,LED2,LED3,LED4};

int main() {
    double signal,signal2,signal3,signal4,analog3,analog4;
    uint8_t data = 0,data2 = 0,i;
    double analog[10],analog2[10],ave,ave2,sum,sum2;
    wait(0.25);
    for(i=0;i < 10;i++){
        analog[i] = stick[0];
        analog2[i] = stick[1];
        sum += analog[i];
        sum2 += analog2[i];
        wait(0.10);
    }
    ave = sum/10;
    ave2 = sum2/10;
    testled[0] = 1;
    wait(0.2);
    
    while(1) {
        analog3 = stick[0];
        analog4 = stick[1];
        if(analog3 > ave-0.050 && analog3 < ave+0.050) {
            signal = 0;
            signal3 = 0;
            data = 0;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[0] = 0;
            testled[1] = 0;
        }else if(analog3 > ave-0.050){
            signal = (analog3-ave)/ave;
            data = (signal+0.005)*50;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[0] = signal;
            testled[1] = 0;
        }else if(analog3 < ave+0.050){
            signal3 = (analog3-ave)/ave*(-1);
            data = (signal3+0.005)*50+64;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[1] = signal3;
            testled[0] = 0;
        }
        if(analog4 > ave2-0.050 && analog4 < ave2+0.050) {
            signal2 = 0;
            signal4 = 0;
            data = 0;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[2] = 0;
            testled[3] = 0;
        }else if(analog4 > ave2-0.050){
            signal2 = (analog4-ave2)/ave2;
            data = (signal2+0.005)*50+128;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[2] = signal2;
            testled[3] = 0;
        }else if(analog4 < ave2+0.050){
            signal4 = (analog4-ave2)/ave2*(-1);
            data = (signal4+0.005)*50+192;
            mc.putc(data);
            pc.printf("%f\n",data);
            testled[3] = signal4;
            testled[2] = 0;
        }
        pc.printf("%u_%u_%f_%f_%f_%f",data,data2,signal,signal2,signal3,signal4);
    }
}