按键是最常见的输入设备之一,普通的按键内部有两个不接触的触片,当按键被外力按下后,两触片连接在一起,外力松开后又还原为断开状态,与其它元器件配合使用可实现很多的功能。它的操作直观有效,很多操作都需要通过按键来控制,几乎所有的电子设备都有保留按键的设计,下面一起来学习在树莓派上实现简单的按键操作。
实验原理
将按键连接树莓派,通过改变按键的开合状态来实现树莓派IO口电平的高低变化,在程序中检测按键所连接的IO口的电平,设置好检测到不同电平时各自的操作实现不同的效果。
实验内容
学习按键的使用
编写程序实现花样led灯
编写程序实现检测按键输入
实验元器件
树莓派及电源 x1
无线网卡 x1
面包板 x1
按键 x1
LED灯 x3
电阻 x1
T型板及彩虹连接线(方便面包板连接使用)x1
杜邦线 若干
以上器件可在树莓派创客社区淘宝直营店购买:https://52pi.taobao.com
实验步骤
一、连接线路
二 、编写程序
登陆树莓派后进入wiringPi目录,新建button.c,编辑写入以下代码:
#include <wiringPi.h>
#define ButtonPin 0
int LedPin[3] = {12,13,14};
int main (void)
{
int x = 0;
wiringPiSetup ();
for (x = 0;x < 3;x ++)
{
pinMode (LedPin[x],OUTPUT);
}
pinMode (ButtonPin, INPUT);
pullUpDnControl (ButtonPin, PUD_UP);
while(1)
{
while(digitalRead (ButtonPin) == 0)
{
for(x = 0;x < 3;x ++)
{
digitalWrite (LedPin[x], HIGH) ;
}
delay (300) ;
for(x = 0;x < 3;x ++)
{
digitalWrite (LedPin[x], LOW) ;
}
delay (300) ;
}
digitalWrite (LedPin[0], HIGH) ;
delay (300);
digitalWrite (LedPin[0], LOW) ;
digitalWrite (LedPin[1], HIGH) ;
delay (300);
digitalWrite (LedPin[1], LOW) ;
digitalWrite (LedPin[2], HIGH) ;
delay (300);
digitalWrite (LedPin[2], LOW) ;
}
return 0 ;
}
编写完代码保存退出。
再进行编译输出到button文件并运行,即可实现三个LED灯循环依次闪动,当长按下按键后,三个LED灯变为同时闪动效果。