シリアルモニタからArduinoに数値を送る

スポンサーリンク
スポンサーリンク
serial

arduinoのシリアルモニタでそのまま数値を入力しても、うまく値を読んでくれない。そこで、以下のようにすると0~32767までの整数値(int型なので)を読み取ることが出来る。

スケッチでは9番ピンにつないだLEDの明るさを、 シリアルモニタからの入力(0~255)に応じて変化させるスケッチ。

int num = 0;
int val = 0;
int input = -1;

void setup(){
  pinMode(9,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  input = Serial.read();//0~32767
  
  if(input!=-1){
    if(input!=10){
      num = num*10+(input - 48);
    }else{
      val = num;
      num = 0;
      Serial.println(val);
    }
  }
  
  analogWrite(9,val);
}

負の数も扱いたいときは以下のようにする。 -32767~32767までの整数値を読み取る。

int sign = 1;
int num = 0;
int val = 0;
int input = -1;

void setup(){
  pinMode(9,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  input = Serial.read();
  
  if(input!=-1){
    switch (input) {
      case 45:
        sign = -1;
        break;
      case 10:
        val = num*sign;
        num = 0;
        sign = 1;
        Serial.println(val);
        break;
      default:
        num = num*10+(input - 48);
    }
  }
  
  analogWrite(9,val);
}

コメント