树莓派

树莓派上使用C语言检测触碰传感器

2021-01-13  本文已影响0人  刘小白DOER

    本实验室利用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

四、实际效果图

上一篇 下一篇

猜你喜欢

热点阅读