Arduino アナログ テストプログラム

以下、Arduino nanoの動作チェックに使ったプログラムです。

元記事はこちら


int   inByte = 0;
int   LEDstat = 0;    // 動作
int   LED = 0;        // LED点灯/消灯
int   value1 = 0;     // アナログ値
int   value2 = 0;     // アナログ値
float A0in = 0;       // 可変抵抗10k
int   REF_VAL = 0;    // 基準値取得
float REF_DEF = 0;    // 基準電圧

void setup() {
  Serial.begin(9600);
  while (!Serial)     //シリアル差さないと先に進まないらしい
  
  pinMode(13, OUTPUT);
  
  analogReference(INTERNAL);
  delay(1000); // セレクタセット時間
  
  for(int i=0; i<=3 ; i++){REF_VAL = analogRead(7);}

  REF_DEF = (float)REF_VAL * 11 / 1024;
  
  analogReference(DEFAULT);
  
  //表示
  Serial.print(REF_VAL);
  Serial.print(" VCC : ");
  Serial.print(REF_DEF, 4);
  Serial.println("V");
  Serial.println("LED control");
  Serial.println("0 : OFF");
  Serial.println("1 : ON");
  
}


void loop() {    
  //シリアル受信処理
  if (Serial.available() > 0) {
    inByte = Serial.read();
    LEDstat = inByte - '0';
    Serial.print("Mode key= ");
    Serial.println(LEDstat);
    LED = 0;
  }

  delay(1);

  for(int i=0; i<=3 ; i++){value1 = analogRead(0);}
  
  if(millis()%1000 == 0){
    A0in = REF_DEF * value1 / 1024;
    Serial.print((millis()/1000));
    Serial.print("s: ");
    Serial.print(value1);
    Serial.print(" : A0= ");
    Serial.print(A0in, 4);
    Serial.println("V");
  }
  
  // 以下、mode2,3でLED点滅delayによりシリアル送信タイミングNG
  // 1~9以外消灯
  if((LEDstat <= 0) || (LEDstat >= 10)){
    digitalWrite(13, LOW); 
  }else
  if(LEDstat == 1){
    digitalWrite(13, HIGH); 
  }else
  if(LEDstat == 2){
    digitalWrite(13, LOW);
    delay(value1);
    digitalWrite(13, HIGH);
    delay(value1);
  }else
  if(LEDstat == 3){
    digitalWrite(13, LOW);
    delay(value1);
    digitalWrite(13, HIGH);
    delayMicroseconds(value1);
  }
}


広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中