mbedでDigitalInとDigitalOutとAnalogInのテスト

どうもRamencozoです(´ω`)ノ

最近mbedネタをmakeboothの方でなかよしぼっととかTumblr廃人リモコンとかとして出してます(^q^)
アレらの中ではHTTPClientがどうとかUSBKeyboardがなんだとか色々やってるんですが、今回はとりあえず基本的な入出力のイジり方を備忘録的に書いてみます(´ω`)ノ

(´ω`)。oO(この記事書いてる時にUSBKeyboardとかイジれる環境じゃなかったのでorz)

てなワケで下記仕様のLEDチカチカプログラムをやってみます(´ω`)

[ポート割り当て]
・DigitalOut:LED1, LED2, LED3, LED4
・DigitalIn:p21, p22, p23, p24
・AnalogInput:p20, p19, p18, p17
※先頭から順番にInとOutを対応させます

[動作内容]
・DigitalInが'1'になるたびDigitalOutの出力を反転 -> p21を'1'にするとLED1がONになる
・AnalogInが0.6以上になるたびDigitalOutの出力を0.5秒ごとに4回反転 -> p20を手で触るとLED1がチカチカする

コードは下記のとおり(っ´ω`)っ

main.cpp / TestInOut

#include "mbed.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

DigitalIn in1(p21);
DigitalIn in2(p22);
DigitalIn in3(p23);
DigitalIn in4(p24);

AnalogIn ain1(p20);
AnalogIn ain2(p19);
AnalogIn ain3(p18);
AnalogIn ain4(p17);

void ledBlink(char num);

int main() {
  float ain1Value;
  float ain2Value;
  float ain3Value;
  float ain4Value;

  led1 = 0;
  led2 = 0;
  led3 = 0;
  led4 = 0;

  while(1) {
    ain1Value = ain1.read();
    ain2Value = ain2.read();
    ain3Value = ain3.read();
    ain4Value = ain4.read();

    if(ain1 > 0.6){
      printf("ain1: %f", ain1Value);
      ledBlink(1);
    }
    if(ain2 > 0.6){
      printf("ain2: %f", ain2Value);
      ledBlink(2);
    }
    if(ain3 > 0.6){
      printf("ain3: %f", ain3Value);
      ledBlink(3);
    }
    if(ain4 > 0.6){
      printf("ain4: %f", ain4Value);
      ledBlink(4);
    }
      
    if(in1){
      led1 = !led1;
      wait(0.1);
    }
    if(in2){
      led2 = !led2;
      wait(0.1);
    }
    if(in3){
      led3 = !led3;
      wait(0.1);
    }
    if(in4){
      led4 = !led4;
      wait(0.1);
    }
        
    wait(0.1);
  }
}

void ledBlink(char num){
  char i;

  for(i=0; i<4; i++){
    switch(num){
      case 1:
        led1 = !led1;
        break;
      case 2: 
        led2 = !led2;
        break;
      case 3: 
        led3 = !led3;
        break;
      case 4: 
        led4 = !led4;
        break;
    }
    wait(0.5);
  }
}

動作してる様子はこちらの動画の通りです(´ω`)ノ

入出力ポートをいじることができましたとさ(*´ω`*)次は割込みでも試してみますー