找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(148)---E18-D80避障傳感器

查看數(shù): 5325 | 評(píng)論數(shù): 25 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2020-2-26 16:13

正文摘要:

37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備 ...

回復(fù)

ID:513258 發(fā)表于 2020-2-26 20:05
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料 +代碼 +圖形 +仿真)
  3.   實(shí)驗(yàn)一百四十八:E18-D80NK 漫反射式紅外光電開關(guān)避障傳感器模塊
  4.   程序之三:串口輸出檢測情況,同步控制LED
  5.   實(shí)驗(yàn)接線
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9.   LED      13
  10. */

  11. const int InfraredSensorPin = 2;
  12. //將信號(hào)引腳連接到數(shù)字引腳2
  13. const int LedDisp = 13;
  14. //將控制LED連接到數(shù)字引腳13

  15. void setup()
  16. {
  17.   Serial.begin(57600);
  18.   Serial.println("Start!");
  19.   pinMode(InfraredSensorPin, INPUT);
  20.   pinMode(LedDisp, OUTPUT);
  21.   digitalWrite(LedDisp, LOW);
  22. }

  23. void loop()
  24. {
  25.   if (digitalRead(InfraredSensorPin) == LOW)  digitalWrite(LedDisp, HIGH);
  26.   else  digitalWrite(LedDisp, LOW);
  27.   Serial.print("Infrared Switch Status:");
  28.   Serial.println(digitalRead(InfraredSensorPin), BIN);
  29.   delay(1000);
  30. }
復(fù)制代碼


ID:513258 發(fā)表于 2020-2-26 19:48
本帖最后由 eagler8 于 2020-2-26 19:50 編輯

紅外避障使用很簡單,就是OUT口檢測到有效距離內(nèi)有障礙物時(shí),給OUT發(fā)送高電平(或低電平)。可以利用這一特性,進(jìn)行計(jì)數(shù)。

需要注意的是,根據(jù)障礙物在識(shí)別范圍內(nèi)所停留的時(shí)間不同,模塊可能會(huì)在障礙物停留的這一段時(shí)間頻繁的發(fā)送高電平(或低電平),所以,要判斷兩個(gè)標(biāo)志,一個(gè)是障礙物進(jìn)入,一個(gè)是障礙物移出,保證在進(jìn)入后只記錄一次數(shù)據(jù)即可。

代碼如下:
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料 +代碼 +圖形 +仿真)
  3.   實(shí)驗(yàn)一百四十八:E18-D80NK 漫反射式紅外光電開關(guān)避障傳感器模塊
  4.   程序之二:利用紅外避障(障礙檢測)進(jìn)行計(jì)數(shù)
  5.   實(shí)驗(yàn)接線
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9. */

  10. int i=0; //計(jì)數(shù)
  11. bool b=false; //障礙物是否進(jìn)入
  12. void setup() {
  13. Serial.begin(9600);
  14. pinMode(2,INPUT);
  15. }
  16. void loop() {
  17. if (digitalRead(2)==LOW) //如果發(fā)送低電平,識(shí)別到障礙物進(jìn)入
  18. {
  19.   if (b==false) { //如果上一次檢測時(shí),障礙物沒有進(jìn)入,則視為第一次進(jìn)入。
  20.     b=true;  //先將標(biāo)志記錄為障礙物已進(jìn)入。
  21.     i+=1;  //計(jì)數(shù)+1
  22.     Serial.print("OK:");
  23.     Serial.println(i);
  24.    }
  25. }
  26. else {  //如果檢測到障礙物移出
  27. b=false;  //將標(biāo)志記錄為障礙物已移出。
  28. }
  29.   delay(1);
  30. }
復(fù)制代碼



ID:513258 發(fā)表于 2020-2-26 19:34
本帖最后由 eagler8 于 2020-2-26 19:52 編輯

實(shí)驗(yàn)開源代碼
  1. /*
  2.   【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料 +代碼 +圖形 +仿真)
  3.   實(shí)驗(yàn)一百四十八:E18-D80NK 漫反射式紅外光電開關(guān)避障傳感器模塊
  4.   程序之一:串口輸出檢測情況
  5.   實(shí)驗(yàn)接線
  6.   VCC      +5V
  7.   GND      GND
  8.   OUT       2
  9. */

  10. void setup()
  11. {
  12.   Serial.begin(9600); //以9600的速率啟動(dòng)串行通信
  13.   pinMode(2, INPUT); //插腳2作為信號(hào)輸入
  14. }

  15. void loop()
  16. {
  17.   while (1) {
  18.     delay(1000);
  19.     if (digitalRead(2) == LOW) {
  20.       //如果未檢測到信號(hào)打印沖突
  21.       Serial.println("Collision Detected.");
  22.     }
  23.     else {
  24.       // 如果檢測到信號(hào)打印沖突
  25.       Serial.println("No Collision Detected.");
  26.     }
  27.   }
  28. }
復(fù)制代碼



小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表