0
int ColumnPins = 4; //How many column pins
int RowPins = 5; //How many row pins
int Columns[] = {0, 1, 2, 3}; //Column pinNumbers
int Rows[] = {4, 6, 7, 8, 9}; //Row pinNumbers
void setup()
{
pinMode(13, OUTPUT);
for (int counter = 0; counter < ColumnPins; counter++)
{ //set all the columns to output
pinMode(Columns[counter], OUTPUT);
}
for (int counter = 0; counter < RowPins; counter++)
{ //set all rows to input
pinMode(Rows[counter],INPUT_PULLDOWN);
}
}
void loop()
{
for (int ColumnIndex = 0; ColumnIndex < ColumnPins; ColumnIndex++) //sets column pins to high 1 by 1
{
digitalWrite(Columns[ColumnIndex], HIGH);
RowScan(ColumnIndex); //calls function rowscan checks whether and row is HIGH
digitalWrite(Columns[ColumnIndex], LOW);
}
}
void RowScan(int ColumnIndex) //Scans each rowpin and checks whether any reads high
{
for (int RowIndex = 0; RowIndex < RowPins; RowIndex++)
{
if (digitalRead(Rows[RowIndex]) == HIGH) //if Rows at rowindex is high
{
for (int blinks = 0; blinks <= RowIndex; blinks++)
{ //Outputs # of blinks based on which row HIGH was read
// print index
digitalWrite(13, HIGH); //LEDPIN high
delay(250);
digitalWrite(13, LOW);
delay(500);
}
for (int blinks = 0; blinks <= ColumnIndex; blinks++)
{ //Outputs # of blinks based on which row HIGH was read
// print index
digitalWrite(13, HIGH); //LEDPIN high
delay(100);
digitalWrite(13, LOW);
delay(100);
}
}
else if (digitalRead(Rows[RowIndex]) == LOW) //Rows at index o is LOW
{
digitalWrite(13,LOW);
}
}
}
C++ IDE的Arduino列 基於其壓在它應該只是返回所設置的列中的時間返回0-3的隨機值正確的列數當一排讀數很高時,該數值變高。 不知道如何解決相當肯定有一個問題與void loop()中的第一個for循環。鍵盤矩陣代碼不返回當按鈕被按下