树莓派上使用C语言检测触碰传感器
本实验室利用C语言来检测gpio接口的状态,然后控制led灯显示。灯为输出管脚,触碰传感器为输入管脚,即gpio接口可以定义为输入模式还是输出模式,先是输入模式(检测gpio接口),然后输出控制高电位led灯显示。
0、接口介绍
GPIO(General Purpose I/OPorts)为通用输入/输出端口,就是引脚可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
树莓派有26个GPIO接口,其中有一部分是复用接口。
1、引脚3、5为IC总线复用接口
2、引脚7为(GCLK)全局时钟引脚复用接口
3、引脚19、21、23为SPI总线复用接口
4、引脚8、10为串口复用接口,TX发送,RX接收
5、引脚12、32、33、35为PWM复用接口
IC总线,一种串行通讯总线,使用多主从架构。
SDA:数据线
SCL:时钟线
SPI总线,串行外设接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。
MISO:数据输入
MOSI:数据输出
SCLK:时钟信号
SS:使能信号
UART总线,通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。
RX是接收
TX是发送
一、接线图
可以使用led模块(5V供电),也可以直接使用两阵脚的led灯(3.3V供电)。lled灯为wPi24号管脚,触碰传感器为wPi29号管脚。
二、touchsensor程序代码:
#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>
//灯为wPi24号管脚,触碰传感器为wPi29号管脚
#define led 24
#define touchsensor 29
int main(void)
{
//灯为输出管脚,触碰传感器为输入管脚
wiringPiSetup();
pinMode(led,OUTPUT); //定义gpio为输出模式
pinMode(touchsensor,INPUT); //定义gpio为输入模式
//当点击触碰传感器时灯亮,否则不亮
while(1){
if(digitalRead(touchsensor)==HIGH) //触碰后
{
digitalWrite(led,HIGH);
printf("1\n");
delay(1000);
}
else{
digitalWrite(led,LOW);
//printf("0\n");
}
}
}
三、编译并运行程序
gcc touchsensor.c -o touchsensor -lwiringPi #编译C语言
./touchsensor #运行程序
运行程序后,终端界面在按下触碰传感器后会显示数字1,同时led灯亮。为了保证程序一直执行且不输出,可以使用: nohup ./touchsensor >/dev/null 2>&1