About this Blog

This Blog has English posts and Japanese posts. About Mac, iOS, Objective-C, and so on.

2013年5月2日木曜日

Arduino UNOとポケコンの接続

エルチカ(LEDチカチカ)は終わったので、ポケコンとArduinoで通信してみました。
ポケコンの11ピンを使ってのシリアルパラレル通信。
部品の制限で2bit通信。0~3の値をポケコンに送ることができます。

こんな感じ。



回路図

ポケコンのGNDの抵抗を書き忘れました。補ってください。
抵抗はCdSにつないであるのが10kΩ,それ以外は1kΩです。
ポケコンのPIN番号は、一番上側を1,一番下側を11としています。3がGNDです。
参考: 8ビット制御練習基板

Arduinoのコード
const int SENSOR = 0; /* アナログINの0 */
const int POKECOM_1 = 12; /* デジタルIOの12 */
const int POKECOM_2 = 13; /* デジタルIOの13 */

int val = 0;

void setup(){
  pinMode(POKECOM_1, OUTPUT);
  pinMode(POKECOM_2, OUTPUT);
  Serial.begin(9600);
}
void loop(){
  /* CdSからの値を整形. 440~840くらいの値を取る(私の環境の場合)ので、それを0~3に直す.*/
  val = (analogRead(SENSOR) - 440)/100;
  /* 1bit目をPOKECOM_1から出力 */
  if(val%2==1){
    digitalWrite(POKECOM_1, HIGH);
  }else{
    digitalWrite(POKECOM_1, LOW);
  }
  /* 2bit目をPOKECOM_2から出力 */
  if(val/2==1){
    digitalWrite(POKECOM_2, HIGH);
  }else{
    digitalWrite(POKECOM_2, LOW);
  }
  delay(100);
}
パラレルといいつつ、あんまりパラレルじゃありません。
bit演算使えよ!といったツッコミも承知です。
部品を揃えたら8bit通信で作り直しますんでしばしお待ちください。

ポケコンのコード
10 WAIT 10
20 OPEN "PIO:"
30 CLS
40 X=0
50 Y=0
60 PIOSET 3
70 V=PIOGET
80 Y=30-Y
90 GCURSOR(X,Y)
110 GPRINT "1000"
120 X=X+1
130 GOTO 70
ポケコンを持っている方はマニュアルも持っているはずなので、そちらを参考にしてください。
4と5のピンをINPUTに設定し(PIOSET 3)、値を読み取ります。
読み取った値をグラフにして液晶に表示します。

0 件のコメント:

コメントを投稿