Arduinoのアナログピン1つで5chのスイッチ
海外製のLCDディスプレイシールドの回路図を眺めていたらアナログピン1つで5chのスイッチを実現しているっぽいのでブレッドボードで作ってみました。試してみた感想としては1品だけで使えるので便利です。何か作るときには応用として使おうと思います。
回路図
スケッチ
//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; }
コメントはまだありません。