2017-07-31 149 views
1

我想打印從4x3矩陣鍵盤按到我的20x4液晶顯示器的數字,但結果我得到了一個w和箭頭。 The error looks like this. 這是我的代碼。在液晶顯示器上顯示的特殊字符而不是數字 - Arduino

#include <LiquidCrystal.h> 
#include <Keypad.h> 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7 

const byte Rows= 4; //number of rows on the keypad i.e. 4 
const byte Cols= 3; //number of columns on the keypad i,e, 3 

//we will definne the key map as on the key pad: 

char keymap[Rows][Cols]={ 
    {'1', '2', '3'}, 
    {'4', '5', '6'}, 
    {'7', '8', '9'}, 
    {'*', '0', '#'} 
}; 

byte rPins[Rows]= {9, 8, 7, 6}; //Rows 0 to 3 
byte cPins[Cols]= {5, 4, 3}; //Columns 0 to 2 

Keypad kpd= Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols); 

void setup() { 
    lcd.begin(20, 4);//initializing LCD 
} 

void loop() { 
    char keypressed = kpd.getKey(); 
    if (keypressed != NO_KEY) { 
    lcd.print(keypressed); 
    } 
} 

請幫我一把。謝謝。

+1

你需要調試它並找出問題出在哪裏,如果lcd.print(「Hello World」);'工作,你知道問題不在LCD中。如果'Serial.println(keypressed);'給你正確的結果,你知道問題不在鍵盤上。我的猜測是,如果你的設置中存在錯誤的針腳。 – JeffUK

+0

我試過使用相同的連接單獨調試液晶顯示器和鍵盤,它給了我正確的結果。但是當我一起嘗試時,它總是顯示'w'和箭頭符號。 – Katherine

+0

我敢打賭,你沒有嘗試我提出的兩個配置在同一時間,但!您正嘗試在鍵盤和LCD上使用針腳3,4和5 .. – JeffUK

回答

1

你的兩個模塊共享一些相同的引腳的,這就是在該問題的根源:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7 
byte cPins[Cols]= {5, 4, 3}; //Columns 0 to 2 

從這些聲明,銷5,4和3顯示將被共享。當引腳在外圍設備之間共享時,各種奇怪的事情都會發生。然後,當你說每臺設備似乎都能獨立運作時,沒有其他設備......好吧,我會說重疊的針腳是你的罪魁禍首。

看看是否有方法重新映射一個或其他設備,以免共享引腳。