树莓派外设开发之玩传感器

参考:用树莓派玩传感器
作者:LEO-max
发布时间: 2021-02-24 16:30:46
网址:https://blog.csdn.net/zouchengzhi1021/article/details/114026649?spm=1001.2014.3001.5502

接线

VCC -> 1针脚
OUT -> 40针脚
GND -> 6针脚

红外避障传感器

C语言代码:

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>

#define AVOID    29

int main(void)
{

    if (wiringPiSetup() == -1)
    {
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(AVOID, INPUT);

    while (1)
    {
        if (digitalRead(AVOID) == 0)
        {
            printf("阻挡\n");
            delay(500);
        }
    }

    return 0;
}

Python代码:

import RPi.GPIO as GPIO
import os
import time

GPIO.setmode(GPIO.BCM) #使用BCM编码方式

GPIO_OUT = 21

GPIO.setup(GPIO_OUT,GPIO.IN)


while True:
    if GPIO.input(GPIO_OUT)==0: #当有障碍物时,传感器输出低电平,所以检测低电平
        print("There has a barrier")
        time.sleep(1)
       # exit(-1)
    #else:

    #print("OK")
    #time.usleep(1000)

GPIO.cleanup()

声音传感器

声音传感器需要调一下电阻来调节传感器对声音的灵敏度

C语言:

#include <stdio.h>
#include <wiringPi.h>

#define PCF       29

int main (void)
{
        int value;
        int count = 0;
        wiringPiSetup ();

        pinMode(PCF,INPUT);
        while(1) 
        {
                if (digitalRead(PCF) != 0)
                {
                        printf("Voice In!! \n");
                        delay(500);
                }
                else{
                        printf("ok\n");
                        delay(500);
                } 
        } 
        return 0;
}        

Python:

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
pin_voice=21
GPIO.setup(pin_voice, GPIO.IN)
try:
    while True:
        status = GPIO.input(pin_voice)
        if status == True:
            print('检测到声音')
        else:
            print('正常')
        time.sleep(0.5)
except KeyboradInterrupt:
    GPIO.cleanup()

配合电灯程序来实现吹灭LED灯操作:

#include <stdio.h>
#include <wiringPi.h>

#define PCF       29
#define LED       9

int main (void)
{
        int value;
        int count = 0;
        wiringPiSetup ();
        // Setup pcf8591 on base pin 120, and address 0x48
        pinMode(PCF,INPUT);
        while(1) // loop forever
        {
                if (digitalRead(PCF) != 0)
                {
                        printf("Voice In!! \n");
                        digitalWrite(LED,LOW);  //低电平灭
                        return 0;
                }
                else{
                        printf("ok\n");
                        digitalWrite(8,HIGH);           //高电平亮
                        delay(500);
                }
        }
        return 0;
}

火焰传感器

Python代码:

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import time

pin_fire=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_fire, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
    while True:
        status = GPIO.input(pin_fire)
        if status == True:
            print('检测到火')
        else:
            print('未检测到火')
        time.sleep(0.5)
except KeyboradInterrupt:
    GPIO.cleanup()        

C语言:

#include <stdio.h>
#include <wiringPi.h>

#define PCF     29

int main (void)
{
        wiringPiSetup ();
        // Setup pcf8591 on base pin 120, and address 0x48
        pinMode(PCF,INPUT);
        while(1) // loop forever
        {
                if (digitalRead(PCF) != 0)
                {
                        printf("检测到火\n");
                        delay(500);
                }
                else{
                        printf("无火\n");
                        delay(500);
                }
        }
        return 0;
}

烟雾传感器

#!/usr/bin/python
# encoding:utf-8
import RPi.GPIO as GPIO
import time

pin_fire=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_fire, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
    while True:
        status = GPIO.input(pin_fire)
        if status == True:
            print('没有检测到烟雾')
        else:
            print('检测到有烟雾')
        time.sleep(0.5)
except KeyboradInterrupt:
    GPIO.cleanup()

超声波测距传感器

#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>

#define Trig    29
#define Echo    28

void ultraInit(void)
{
        pinMode(Echo, INPUT);
        pinMode(Trig, OUTPUT);
}

float disMeasure(void)
{
        struct timeval tv1;
        struct timeval tv2;
        long time1, time2;
    float dis;

        digitalWrite(Trig, LOW);
        delayMicroseconds(2);

        digitalWrite(Trig, HIGH);
        delayMicroseconds(10);      //发出超声波脉冲
        digitalWrite(Trig, LOW);

        while(!(digitalRead(Echo) == 1));
        gettimeofday(&tv1, NULL);           //获取当前时间

        while(!(digitalRead(Echo) == 0));
        gettimeofday(&tv2, NULL);           //获取当前时间

        time1 = tv1.tv_sec * 1000000 + tv1.tv_usec;   //微秒级的时间
        time2  = tv2.tv_sec * 1000000 + tv2.tv_usec;

        dis = (float)(time2 - time1) / 1000000 * 34000 / 2;  //求出距离
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很高兴回答您的问题。树莓4B引脚接入传感器的过程很简单,首先,您需要确保您有使用的传感器所需要的必要部件,包括传感器本身、提供电流的电源和可能的连接线。其次,您需要将传感器树莓的引脚连接起来,然后将传感器的电源接入树莓的电源端口。最后,您可以使用特定的编程语言编写程序,以使用传感器收集数据。 ### 回答2: 树莓4b引脚接入传感器的过程相对简单。首先,我们需要了解树莓的引脚布局。树莓4b有40个引脚,其中26个为GPIO(通用输入输出引脚),我们可以通过这些引脚与传感器进行连接。 第一步是确定传感器所需的引脚。不同的传感器可能需要不同的引脚用于供电、数据输入或输出等。 第二步是连接传感器。将传感器的引脚与树莓的GPIO引脚连接。可以使用杜邦线来连接传感器树莓,确保连接牢固。 第三步是配置树莓的GPIO。在树莓的终端窗口或通过SSH连接到树莓后,使用编程语言(如Python)或GPIO工具库来配置和控制树莓的GPIO引脚。 第四步是编写代码来读取传感器数据。在通过编程语言(如Python)或GPIO工具库配置好GPIO之后,可以编写相应的代码来读取传感器数据。不同的传感器可能需要不同的代码。 最后一步是运行代码并获取传感器数据。将编写好的代码运行起来,通过树莓传感器的连接,可以获取传感器所测量到的数据。 总的来说,树莓4b引脚接入传感器的过程包括确定传感器所需引脚、连接传感器、配置树莓的GPIO、编写代码读取传感器数据以及运行代码并获取传感器数据。这个过程需要一些基础的电子和编程知识,但是总体上来说并不复杂。 ### 回答3: 树莓4B是一款强大的单板电脑,具有丰富的引脚接口,可以与各种传感器进行连接和交互。接入传感器的过程如下: 首先,确定所使用的传感器的类型和规格,并准备好相应的连接线和外设。 接下来,将传感器的信号引脚与树莓的引脚进行连接。树莓4B包含了多种类型的引脚,例如GPIO引脚、I2C、SPI等。根据传感器的接口类型选择对应的引脚连接方式。通常情况下,使用GPIO引脚连接是最常见的方式。可以通过查阅树莓官方文档或者传感器的说明书来确定正确的引脚连接。 连接完成后,需要编写相应的程序来读取传感器的数据。树莓基于Linux系统,可以使用Python等编程语言进行开发。根据传感器的型号和接口,选择合适的库函数或驱动,并编写程序进行数据读取、处理和显示。 最后,通过执行程序,树莓将通过引脚与传感器进行通信,读取传感器的数据。可以将数据显示在树莓的屏幕上或者通过网络连接将数据发送到其他设备进行处理。 总的来说,树莓4B接入传感器的过程是确定传感器类型和规格,连接传感器的信号引脚到树莓的相应引脚,编写程序读取传感器数据,并执行程序进行数据交互和处理。通过这个过程,树莓可以与各种传感器实现交互,从而实现各种应用和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值