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 ) #延時 秒

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM