Robofun 機器人論壇
標題:
3*4 keypad 如何做出 完成輸入鍵
[打印本頁]
作者:
avril90
時間:
2015-7-22 14:51
標題:
3*4 keypad 如何做出 完成輸入鍵
小弟近日接了一個3*4的keypad 想利用此鍵盤來修改程式裡pwm輸出的功率
IMG_20150722_143754[1].jpg
(1.88 MB, 下載次數: 277)
下載附件
2015-7-22 14:40 上傳
現在遇到的問題是:
當我輸入數值後,我希望能按下#來完成輸入
現階段鍵盤只要輸入一個數,LCD就會馬上顯示出來
那麼我設定的代碼 ex. char keyin = keypad.getKey();
keyin 之值 永遠只會是個位數,無法是90、100
想請問各位大大,有些甚麼建議呢?
目前所用的程式碼如下
#include <LiquidCrystal.h>
#include <Keypad.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// 3x4 Keypad
const byte ROWS = 4; // 4 Rows
const byte COLS = 3; // 3 Columns
// 定義 Keypad 的按鍵
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
// 定義 Keypad 連到 Arduino 的接腳
byte rowPins[ROWS] = {32, 22, 24, 28}; // 連到 Keypad 的 4 個 Rows: Row0, Row1, Row2, Row3
byte colPins[COLS] = {30, 34, 26}; // 連到 Keypad 的 3 個 Columns: Column0, Column1, Column2
// 建立 Keypad 物件
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}
void loop() {
// 讀取 Keypad 的輸入
char key = keypad.getKey();
// NO_KEY 代表沒有按鍵被按下
if (key != NO_KEY){
// 假如有按鍵被按下,就印出按鍵對應的字元
Serial.println(key);
lcd.print(key);
}
}
作者:
YeH
時間:
2015-7-27 16:14
本帖最後由 YeH 於 2015-7-27 16:17 編輯
抱歉我也才學沒多久,若有錯請見諒
if (key != NO_KEY)//是讀取到有案案件才會傳入訊息
所以每次loop一次才會只輸入一個字元
所以可能要更正
int a = 0;
void loop() {
// 讀取 Keypad 的輸入
char key = keypad.getKey();
// NO_KEY 代表沒有按鍵被按下
if (key != NO_KEY){
int b = key - 48;//因為是ASCII數值,所以才要-48
if(key == '#'){
Serial.println(a);
lcd.print(a);
a=0;
}
else if(key == '*'){
a =0;//輸入錯誤從新開始打一次
}
else{
a = a*10+b;
}
}}
其他前面都因該不需要額外更正
變成輸入後,你打的數值,直到你按下#字之前都不會顯示出你所輸入的數值
*字是你假如有個字輸入錯誤,要更正時按下,但要從頭開始輸入
作者:
avril90
時間:
2015-7-29 14:30
回復
2#
YeH
感謝大大的幫忙 已順利做出來啦
謝謝!!
已後還望大大能多多觀照 3Q
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2