• Arduino使用红外模块


    Arduino连接测试E18-D80NK红外开关传感器

    本文我们将通过Arduino连线E18-D80NK红外开关传感器进行简单测试, E18-D80NK 是一个高灵敏度的红外光线开关传感器,它可以用来检测物体或者作为光电开关使用,测量检测范围从3cm到80cm。

     

    • 供电电压: 5V DC
    • 工作电流:< 25mA
    • 最大负载电流 100mA ( NPN 集电极开路下拉输出)
    • 响应时间: <2ms
    • 直径: 17MM
    • 指向角: ≤ 15 °, 有效范围3-80CM可调
    • 检测的对象: 透明或不透明
    • 工作环境温度: -25℃+55℃
    • 外壳材料: 塑料
    • 导线长度: 45CM

     E18-D80NK市面上有两种版本,区别在于线缆颜色不同,一种是棕黑蓝三色线分别对应+5V,OUT和GND;一种是红黄黑三色线分别对应 +5V,OUT和GND 。上图的引脚定义图是前者。

     上升沿和下降沿是反着的???

    实际测试

    void setup(){
     Serial.begin(9600); //Start serial communication boud rate at 9600
     pinMode(2,INPUT); //Pin 2 as signal input
     
    }
    void loop(){
     while(1){
       delay(500);
       if(digitalRead(2)==LOW){ 
        // If no signal print collision detected
         Serial.println("Collision Detected.");
       }
       else{
         // If signal detected print collision detected
         Serial.println("No Collision Detected.");
       }
     }
    

      单纯终端函数

    int pinInterrupt = 2; //接中断信号的脚
     
    void onChange()
    {
       if ( digitalRead(pinInterrupt) == LOW )
          Serial.println("Key Down");
       else
          Serial.println("Key UP");
    }
     
    void setup()
    {
       Serial.begin(9600); //打开串口
     
       pinMode( pinInterrupt, INPUT);//设置管脚为输入
       
       //Enable中断管脚, 中断服务程序为onChange(), 监视引脚变化
       attachInterrupt( digitalPinToInterrupt(pinInterrupt), onChange, CHANGE);
    }
     
    void loop()
    {
      // 模拟长时间运行的进程或复杂的任务。
      for (int i = 0; i < 100; i++)
      {
        // 什么都不做,等待10毫秒
        delay(10); 
      }
    }
    

      树莓派使用

    import time
    import RPi.GPIO as GPIO
      
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
      
      
    # 普通引脚输出
    # 6 13 19 26 4 22
    pinA1=6
    pinA2=1
      
    GPIO.setup(pinA1, GPIO.OUT) #设置脚为输出模式
    GPIO.setup(pinA2, GPIO.OUT) #设置脚为输出模式
     
     
    # 触摸按键 输入 回调函数触发
     
    GPIO.setup(22,GPIO.IN,pull_up_down=GPIO.PUD_UP)
     
    def my_callback(channel):
        print('触发回调函数')
      
    #上升沿触发 但是针对红外模块 却是反过来的 所以上升应该改为 FALLING GPIO.add_event_detect(22, GPIO.RISING, callback=my_callback) # 测试普通输出引脚 a = 10 #闪烁10次 while a > 0: a -= 1 print ("HIGH") GPIO.output(pinA1, GPIO.HIGH) #亮 GPIO.output(pinA2, GPIO.HIGH) #亮 time.sleep( 0.2 ) #延时 秒 print ("LOW") GPIO.output(pinA1, GPIO.LOW) #暗 GPIO.output(pinA2, GPIO.LOW) #暗 time.sleep( 0.2 ) #延时 秒

      

  • 相关阅读:
    JavaScript遍历表单元素
    JavaScript实现按钮改变网页背景色
    JavaScript实现指定格式字符串表单校验
    jQuery实现数字时钟
    Python使用递归绘制谢尔宾斯基三角形
    Python使用函数模拟“汉诺塔”过程
    Python使用函数实现杨辉三角
    CSS简单样式练习(七)
    CSS简单样式练习(六)
    cstring to char *例子
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/12692961.html
Copyright © 2020-2023  润新知