Arduinoで74HC4051APを使う−その3−
その3です。
今回は4051を使って10個のボタン入力を制御したいと思います。
これはダーツ盤のマトリックス回路が7×10なので、
1個4051では8つの入出力までしか制御できないんです。
だから、2つの4051を使って10個のボタンを制御したいと思ったんです。
ではまずは回路図からです。
その1で作った回路を2つ作るイメージですね。
具体的には4051が1個につき、5個のボタンを制御します。
次はプログラムです。
プログラムは5個のボタン制御を2回連続で行うようなものです。
// 1個目の4051用
int OUT_PIN_0 = 2;
int OUT_PIN_1 = 3;
int OUT_PIN_2 = 4;// 2個目の4051用
int OUT_PIN_3 = 5;
int OUT_PIN_4 = 6;
int OUT_PIN_5 = 7;int IN_DATA_PIN_0 = A0;
int IN_DATA_PIN_1 = A1;int HALF_MAX_COUNT = 4;
int r0 = 0;
int r1 = 0;
int r2 = 0;
int count = 0;void setup() {
pinMode(OUT_PIN_0, OUTPUT);
pinMode(OUT_PIN_1, OUTPUT);
pinMode(OUT_PIN_2, OUTPUT);
pinMode(OUT_PIN_3, OUTPUT);
pinMode(OUT_PIN_4, OUTPUT);
pinMode(OUT_PIN_5, OUTPUT);
Serial.begin(9600);
}void loop() {
for (count = 0; count <= HALF_MAX_COUNT; count++) {
r0 = bitRead(count, 0);
r1 = bitRead(count, 1);
r2 = bitRead(count, 2);
digitalWrite(OUT_PIN_0, r0);
digitalWrite(OUT_PIN_1, r1);
digitalWrite(OUT_PIN_2, r2);
Serial.print("0 : ");
Serial.print(count);
Serial.print(" : ");
Serial.println(analogRead(IN_DATA_PIN_0)/4);
delay(100);
}
for (count = 0; count <= HALF_MAX_COUNT; count++) {
r0 = bitRead(count, 0);
r1 = bitRead(count, 1);
r2 = bitRead(count, 2);
digitalWrite(OUT_PIN_3, r0);
digitalWrite(OUT_PIN_4, r1);
digitalWrite(OUT_PIN_5, r2);
Serial.print("1 : ");
Serial.print(count);
Serial.print(" : ");
Serial.println(analogRead(IN_DATA_PIN_1)/4);
delay(100);
}
}