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