01紅外線遙控器控音階

遇到問題:

IRremote與tone有衝突,修改做法如下:

1.如果想要用紅外線接收器解碼遙控器的紅外線指令,可以使用 IRremote 程式庫搭配 Arduino IDE 來快速地體驗一下,可以到 IRremote 的 Github 按下「Download ZIP」,會下載一個 Arduino-IRremote-master.zip 檔案,解開後將其中目錄更名為 Arduino-IRremote,並將整個目錄置於 Arduino IDE 安裝目錄的 libraries 之中:

2.將 libraries下原本RobotIRremote改名或移除掉

3.進入 Arduino-IRremote資料夾,找到IRremoteInt.h,並開啟它(2017.05.06發現改到boarddefs這檔)

4.找到

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc

#else

//#define IR_USE_TIMER1 // tx = pin 9

#define IR_USE_TIMER2 // tx = pin 3

#endif

5.修改為

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc

#else

#define IR_USE_TIMER1 // tx = pin 9

//#define IR_USE_TIMER2 // tx = pin 3

#endif

6.成功

以上是因為IRremote與tone都是用到TIMER2,所以將IRremote改用TIMER1即可!!

=============================

先將程式在mblock寫到,如附件

完成後,再轉為Arduino程式碼

複製程式碼後,貼在Arduino IDE下來編輯

將下方「紅色字的內容」貼到程式上同樣的位置去!

#include <Arduino.h>

#include <Wire.h>

//#include <Servo.h>

#include <SoftwareSerial.h>

#include <IRremote.h>

int RECV_PIN = 11; // 使用數位腳位11接收紅外線訊號

IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入

decode_results results; // 儲存訊號的結構

double angle_rad = PI/180.0;

double angle_deg = 180.0/PI;

double ir;

void song1();

void song2();

void setup(){

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

irrecv.enableIRIn(); // 啟動接收

}

void loop(){

if (irrecv.decode(&results)) {

// Serial.println(results.value, HEX);

ir=results.value;

irrecv.resume(); // Receive the next value

}

delay(100);

if(((ir)==(16736925))){

digitalWrite(2,1);

digitalWrite(3,0);

}

if(((ir)==(16754775))){

digitalWrite(2,0);

digitalWrite(3,1);

}

if(((ir)==(16720605))){

song1();

}

if(((ir)==(16761405))){

song2();

}

if(((ir)==(16712445))){

digitalWrite(2,1);

digitalWrite(3,1);

}

if(((ir)==(16738455))){

pinMode(9,OUTPUT);

tone(9,262,500);

delay(500);

}

if(((ir)==(16750695))){

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

}

if(((ir)==(16756815))){

pinMode(9,OUTPUT);

tone(9,330,500);

delay(500);

}

if(((ir)==(16724175))){

pinMode(9,OUTPUT);

tone(9,349,500);

delay(500);

}

if(((ir)==(16718055))){

pinMode(9,OUTPUT);

tone(9,392,500);

delay(500);

}

if(((ir)==(16743045))){

pinMode(9,OUTPUT);

tone(9,440,500);

delay(500);

}

if(((ir)==(16716015))){

pinMode(9,OUTPUT);

tone(9,494,500);

delay(500);

}

if(((ir)==(16726215))){

pinMode(9,OUTPUT);

tone(9,523,500);

delay(500);

}

if(((ir)==(16734885))){

pinMode(9,OUTPUT);

tone(9,587,500);

delay(500);

}

if(((ir)==(16730805))){

pinMode(9,OUTPUT);

tone(9,659,500);

delay(500);

}

if(((ir)==(16728765))){

digitalWrite(2,0);

digitalWrite(3,0);

}

if(((ir)==(16732845))){

digitalWrite(2,0);

digitalWrite(3,0);

}

ir=0;

}

void song1() //小星星

{

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,440,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,440,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,262,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,440,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,440,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,262,500);

delay(500);

}

void song2() //小蜜蜂

{

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,349,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,294,500);

delay(500);

pinMode(9,OUTPUT);

tone(9,262,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,330,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,392,250);

delay(250);

pinMode(9,OUTPUT);

tone(9,262,500);

delay(500);

}