完全に個人的な備忘録

完全に個人的な備忘録。学習コストが高くなってきたので、メモしておかないと…片っ端から忘却の彼方なのです。

GR-KURUMIでアナログ入力

Raspberry Piはアナログ入力がないので、ADCで変換する必要があるわけだが、GR-KURUMIはアナログ入出力に対応している。そんなわけで、Raspberry Pi でADC MCP3002 を使ってみる - 完全に個人的な備忘録と同じ事をGR-KURUMIで行なってみた。勿論、MCP3002 は使用しない。

単純に A0 からアナログ値を取得するだけのプログラムは、以下の通り。サンプルに数行追加&更新しただけである。Lチカ部分は不要なわけだが、光った方が動いているのが判るので、そのまま残してある。

/*GR-KURUMI Sketch Template Version: V1.04*/
#include <RLduino78.h>

// Pin 22,23,24 are assigned to RGB LEDs.
int led_red   = 22; // LOW active
int led_green = 23; // LOW active
int led_blue  = 24; // LOW active

// the setup routine runs once when you press reset:
void setup() {
  //setPowerManagementMode(PM_STOP_MODE, 0, 1023); //Set CPU STOP_MODE in delay()
  //setOperationClockMode(CLK_LOW_SPEED_MODE); //Set CPU clock from 32MHz to 32.768kHz

  // initialize the digital pin as an output.
  Serial.begin(9600);
  pinMode(led_red, OUTPUT);
  pinMode(led_green, OUTPUT);
  pinMode(led_blue, OUTPUT);
  
  pinMode(A0, INPUT);
  analogReference(DEFAULT);

  // turn the LEDs on, glow white.
  digitalWrite(led_red, LOW);
  digitalWrite(led_green, LOW);
  digitalWrite(led_blue, LOW);
}

// the loop routine runs over and over again forever:
void loop() {
  char szBuf[256];
  
  sprintf(szBuf, "A0 - %d", analogRead(A0));
  Serial.println(szBuf);
  digitalWrite(led_red, HIGH);   // turn the RED LED off, glow sky blue.
  delay(200);                   // wait 200ms

  digitalWrite(led_red, LOW);    // turn the RED LED on
  digitalWrite(led_green, HIGH); // turn the GREEN LED off, glow pink.
  delay(200);                   // wait 200ms

  digitalWrite(led_green, LOW);  // turn the GREEN LED on
  digitalWrite(led_blue, HIGH);  // turn the BLUE LED off, glow yellow.
  delay(200);                   // wait for a second

  digitalWrite(led_blue, LOW);   // turn the BLUE LED on
}

結果は、概計算通りの値が取得できた。
f:id:tarancho:20140405224256j:plain