教程2_按键控制流水灯

按键是最常见的输入设备之一,普通的按键内部有两个不接触的触片,当按键被外力按下后,两触片连接在一起,外力松开后又还原为断开状态,与其它元器件配合使用可实现很多的功能。它的操作直观有效,很多操作都需要通过按键来控制,几乎所有的电子设备都有保留按键的设计,下面一起来学习在树莓派上实现简单的按键操作。

实验原理

将按键连接树莓派,通过改变按键的开合状态来实现树莓派IO口电平的高低变化,在程序中检测按键所连接的IO口的电平,设置好检测到不同电平时各自的操作实现不同的效果。

实验内容

学习按键的使用

编写程序实现花样led

编写程序实现检测按键输入

实验元器件

树莓派及电源 x1

无线网卡 x1

面包板 x1

按键 x1

LED x3

电阻 x1

T型板及彩虹连接线(方便面包板连接使用)x1

  杜邦线 若干

以上器件可在树莓派创客社区淘宝直营店购买:https://52pi.taobao.com

实验步骤

一、连接线路

1

2

二 、编写程序

登陆树莓派后进入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 ;

}

编写完代码保存退出。

3

再进行编译输出到button文件并运行,即可实现三个LED灯循环依次闪动,当长按下按键后,三个LED灯变为同时闪动效果。