Arduinoのアナログピン1つで5chのスイッチ
海外製のLCDディスプレイシールドの回路図を眺めていたらアナログピン1つで5chのスイッチを実現しているっぽいのでブレッドボードで作ってみました。試してみた感想としては1品だけで使えるので便利です。何か作るときには応用として使おうと思います。
回路図
スケッチ
[code]
//example use of LCD4Bit_mod library
#include <stdio.h>
//Key message
char msgs[5][15] = {"Right Key OK ",
"Up Key OK ",
"Down Key OK ",
"Left Key OK ",
"Select Key OK" };
int adc_key_val[5] ={30, 150, 360, 535, 760 };
static uint8_t NUM_KEYS = 5;
int adc_key_in;
int key=-1;
static uint8_t oldkey=-1;
void setup() {
// Setup Serial
Serial.begin(19200);
Serial.println("KEYPAD testing… pressing");
}
void loop() {
adc_key_in = analogRead(0); // read the value from the sensor
digitalWrite(13, HIGH);
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0)
{
Serial.println(msgs[key]);
}
}
}
//delay(1000);
digitalWrite(13, LOW);
}
// Convert ADC value to key number
int get_key(unsigned int input){
int k;
for (k = 0; k < NUM_KEYS; k++){
if (input < adc_key_val[k]){
return k;
}
}
if (k >= NUM_KEYS) k = -1; // No valid key pressed
return k;
}
[/code]
コメントはまだありません。