Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 168|回復: 8

請教大家

[複製鏈接]
發表於 2018-1-16 19:23:13 | 顯示全部樓層 |閱讀模式
請教一個很小白的問題
剛玩Arduino還在玩LED燈的階段
目前買了LED燈珠來玩霹靂燈玩的還算正常
如下:
void setup() {
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop() {
  digitalWrite(12,HIGH);
  delay(100);                     
  digitalWrite(12, LOW);   
  delay(100);
  digitalWrite(11,HIGH);
  delay(100);                     
  digitalWrite(11, LOW);   
  delay(100);   
  digitalWrite(10,HIGH);
  delay(100);                     
  digitalWrite(10, LOW);   
  delay(100);   
  digitalWrite(9,HIGH);
  delay(100);                     
  digitalWrite(9, LOW);   
  delay(100);   
  digitalWrite(8,HIGH);
  delay(100);                     
  digitalWrite(8, LOW);   
  delay(100);   
  digitalWrite(7,HIGH);
  delay(100);                     
  digitalWrite(7, LOW);   
  delay(100);   
  digitalWrite(6,HIGH);
  delay(100);         
  digitalWrite(6, LOW);   
  delay(100);         
  digitalWrite(5,HIGH);
  delay(100);         
  digitalWrite(5, LOW);   
  delay(100);   
  digitalWrite(5,HIGH);
  delay(100);                     
  digitalWrite(5, LOW);   
  delay(100);
  digitalWrite(6,HIGH);
  delay(100);                     
  digitalWrite(6, LOW);   
  delay(100);   
  digitalWrite(7,HIGH);
  delay(100);                     
  digitalWrite(7, LOW);   
  delay(100);   
  digitalWrite(8,HIGH);
  delay(100);                     
  digitalWrite(8,LOW);   
  delay(100);   
  digitalWrite(9,HIGH);
  delay(100);                     
  digitalWrite(9, LOW);   
  delay(100);   
  digitalWrite(10,HIGH);
  delay(100);                     
  digitalWrite(10, LOW);   
  delay(100);   
  digitalWrite(11,HIGH);
  delay(100);         
  digitalWrite(11, LOW);   
  delay(100);         
  digitalWrite(12,HIGH);
  delay(100);         
  digitalWrite(12, LOW);   
  delay(100);
}


同時買了紅外線接收與遙控器
已經下載  IRremote裝載在IDE了
只是用IRrecvDemo能遙控一顆燈
所以我修改成如下:


#include <IRremote.h>

IRrecv irrecv(2);

decode_results results;

void setup()
{
  Serial.begin(9600);
irrecv.enableIRIn();
  Serial.println("Enabled IRin");
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    if(results.value==16738455)
    {
      digitalWrite(2,!digitalRead(12,11,10,9,8,7,6,5,))
      }
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

它卻無法上傳耶
更別玩紅外線遙控霹靂燈

發表於 2018-1-16 19:50:28 | 顯示全部樓層
為什麼你會寫出
digitalWrite(2,!digitalRead(12,11,10,9,8,7,6,5,))
這樣的程式?
從霹靂灯的程式,看不出有類似的寫法
 樓主| 發表於 2018-1-16 19:52:43 | 顯示全部樓層
網路上看紅外線遙控學的阿
只是    人家他只寫一顆LED燈
而我想寫成8顆燈
發表於 2018-1-16 20:20:00 來自手機 | 顯示全部樓層
可是從你的範例來看, 要點灯都是用 digitalWrite. 沒用過 digitalRead
 樓主| 發表於 2018-1-16 22:06:30 | 顯示全部樓層
本帖最後由 熙婷 於 2018-1-16 22:08 編輯

有喔
就在youtube
https://www.youtube.com/watch?v=5bfJTu5tekY
可是沒教如何插入
結合霹靂燈


影片上只亮一顆LED燈的遙控我完成了
所以想利用遙控來亮霹靂燈
發表於 2018-1-17 08:12:16 | 顯示全部樓層
https://www.youtube.com/watch?v=5bfJTu5tekY

1. 你應該是定錯格了
真正的程式是在11:07 的 digitalWrite(7, HIGH);
而不是在11:04 的digitalRead
未命名.jpg
要點灯, 應該是不需要用到 digitalRead

2. 如果要用 digitalWrite 點灯
參數只能有兩個,  digitalWrite(接腳, 狀態);
要點8 個灯, 就呼叫 8 次, 和你最上面貼的程式差不多
digitalWrite(接腳1, HIGH);
digitalWrite(接腳2, HIGH);
digitalWrite(接腳3, HIGH);
digitalWrite(接腳4, HIGH);
digitalWrite(接腳5, HIGH);
digitalWrite(接腳6, HIGH);
digitalWrite(接腳7, HIGH);
digitalWrite(接腳8, HIGH);




 樓主| 發表於 2018-1-17 18:20:11 | 顯示全部樓層
可是   超新手  大大
當我照youtube教學那樣打   只要它亮一顆燈   是OK的喔
還可以按一下LED燈亮    再按一下LED滅喔
如下:


#include <IRremote.h>

IRrecv irrecv(2);  由D2  接收紅外線訊號

decode_results results;

void setup()
{
  Serial.begin(9600);
irrecv.enableIRIn();
  Serial.println("Enabled IRin");
  pinMode(12, OUTPUT);         要D12亮燈

}

void loop() {
  if (irrecv.decode(&results)) {
    if(results.value==16738455)
    {
      digitalWrite(12,!digitalRead(12))     youtub上教digitalRead前面加!就能相反變滅燈

      }
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

事實也是可以單獨亮一顆燈
不過 void setup()  那寫成
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
本來不是應該會一次8顆燈全亮
但是不行耶
還有我好想用遙控紅外線   讓霹靂燈開或關
在此   謝謝   超新手   耐心教導

發表於 2018-1-17 19:16:38 | 顯示全部樓層
1. 程式寫錯,但結果正常
是因為負負得正的結果
因為接腳 12 剛好是 low
所以 digitalRead(12) 是 low
加上 not , 又變 high
所以 digitWrite(7, !digitalRead(12))
好死不死就等於 digitWrite(7, high) 而已
2.pinMode(接腳, output)
是把該接腳設為輸出模式
並不是點灯(雖然.....)
發表於 2018-1-17 19:53:33 來自手機 | 顯示全部樓層
你要把 YouTube 看完。它是寫 digitalWrite,不是 digitRead。你再仔細把影片看一遍就知道了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2018-2-22 13:03 , Processed in 0.177697 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表