介紹及代碼
一共9個按鍵9盞燈。
按第一個按鍵亮一盞燈
按第二個按鍵亮兩盞燈
按第三個按鍵亮三盞燈
按第四個按鍵亮四盞燈
例程代碼
//#define io_11
//#define io_12
#define button_delay 5 //單按鈕消除抖動延時
#define button_every_delay 50 //多按鈕操作間隔
//io高低點吧狀态标志位,0代表低電平,1代表高電平
bool io_flag[18]={0,0,0,0,0,0,0,0,0,0,0,0,0};
//按鈕變化标志位,0代表無變化,1代表有變化
bool button_flag[18]={0,0,0,0,0,0,0,0,0,0,0,0,0};
int i;
void print_s(){
for(int j=11;j<=9+i;j++)
{
digitalWrite(j,HIGH);
}
for(int j=10+i;j<=19;j++)
{
digitalWrite(j,LOW);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(i=2;i<=10;i++)
pinMode(i,INPUT);
for(i=11;i<=19;i++)
{
pinMode(i,OUTPUT);
digitalWrite(i,LOW);
}
Serial.println("Init succ");
}
void loop() {
// put your main code here, to run repeatedly:
for(i=2;i<=10;i++)
{
if(digitalRead(i)==HIGH)
{
delay(button_delay);
if(digitalRead(i)==HIGH)
{
if(io_flag[i]==0)
{
io_flag[i]=1;
print_s(); //按鈕按下,列印消息
delay(button_every_delay);
}
}
}
if(digitalRead(i)==LOW)
{
delay(button_delay);
if(digitalRead(i)==LOW)
{
if(io_flag[i]==1)
{
io_flag[i]=0;
//print_s(); //按鈕松開,列印消息
delay(button_every_delay);
}
}
}
}
}
擴充
pinMode(2,INPUT_PULLUP);
例程1
void setup() {
Serial.begin(9600);
pinMode(2,INPUT_PULLUP);
}
void loop() {
Serial.println(digitalRead(2));
delay(500);
}
例程2
void setup() {
Serial.begin(115200);
pinMode(36,INPUT_PULLUP);
pinMode(39,INPUT_PULLUP);
pinMode(34,INPUT_PULLUP);
pinMode(35,INPUT_PULLUP);
}
void loop() {
Serial.print("36:");
Serial.print(digitalRead(36));
Serial.print(" ");
Serial.print("39:");
Serial.print(digitalRead(39));
Serial.print(" ");
Serial.print("34:");
Serial.print(digitalRead(34));
Serial.print(" ");
Serial.print("356:");
Serial.println(digitalRead(35));
delay(500);
}