実現したいこと
現在groveの赤外線送信機と受信機をアルディーノを使い制御しようとています。前回の質問でgrove公式が出しているやり方でコンパイルに成功しましたが、シリアルモニタには何も表示されないです。シリアルモニタに動作している証拠が表示されるはずなのでシリアルモニタに表示されない理由と解決策としてサンプルコードを教えていただきたいです。
サイトにはアルディーノ用のデモコードは提供できないと書いてあるのでアルディーノでは対応できないコードだと思います。(公式のサンプルコード画像は一枚目受信機Verと二枚目送信機Ver)
またアルディーノとブレットボードの回路は送信機の場合はデジタルピン側のGRDと送信機のGRD、~3ピンと送信機のVCC。 受信機は同じくアルディーノのGRDと受信機のGRD、受信機VCCとアルディーノの5Vピン、レシーブピンはアルディーノの2と受信機のRXです。
受信機はこの回路で一度受信に成功しており、ライブラリから持ってきたIRrecvDumpV2(IRremote2.6.1)を使って成功した。
groveのサイト https://wiki.seeedstudio.com/Grove-Infrared_Receiver/
発生している問題・分からないこと
grove公式サイトではアルディーノを使っておらず、私がアルディーノと送受信機だけやろうとしているからシリアルモニタに何も表示されないのですか?
また、アルディーノとgroveの送受信機だけを使い赤外線の送受信をしたいです。
送受信のそれぞれのコードをまとめていないのですがそれが原因ですか?
サイト記載内容を見落としていたらすみません。
該当のソースコード
/* send.ino Example sketch for IRLib2
- Illustrates how to send a code.
*/
#include <IRLibSendBase.h> // First include the send base
//Now include only the protocols you wish to actually use.
//The lowest numbered protocol should be first but remainder
//can be any order.
#include <IRLib_P01_NEC.h>
#include <IRLib_P02_Sony.h>
#include <IRLibCombo.h> // After all protocols, include this
// All of the above automatically creates a universal sending
// class called "IRsend" containing only the protocols you want.
// Now declare an instance of that sender.
IRsend mySender;
#define IR_SEND_PWM_PIN D3
void setup() {
Serial.begin(9600);
delay(2000); while (!Serial); //delay for Leonardo
Serial.println(F("Every time you press a key is a serial monitor we will send."));
}
void loop() {
if (Serial.read() != -1) {
//send a code every time a character is received from the
// serial port. You could modify this sketch to send when you
// push a button connected to an digital input pin.
//Substitute values and protocols in the following statement
// for device you have available.
mySender.send(SONY,0xa8bca, 20);//Sony DVD power A8BCA, 20 bits
//mySender.send(NEC,0x61a0f00f,0);//NEC TV power button=0x61a0f00f
Serial.println(F("Sent signal."));
}
}
/* rawR&cv.ino Example sketch for IRLib2
- Illustrate how to capture raw timing values for an unknow protocol.
- You will capture a signal using this sketch. It will output data the
- serial monitor that you can cut and paste into the "rawSend.ino"
- sketch.
*/
// Recommend only use IRLibRecvPCI or IRLibRecvLoop for best results
#include <IRLibRecvPCI.h>
IRrecvPCI myReceiver(2);//pin number for the receiver
void setup() {
Serial.begin(9600);
delay(2000); while (!Serial); //delay for Leonardo
myReceiver.enableIRIn(); // Start the receiver
Serial.println(F("Ready to receive IR signals"));
}
void loop() {
//Continue looping until you get a complete signal received
if (myReceiver.getResults()) {
Serial.println(F("Do a cut-and-paste of the following lines into the "));
Serial.println(F("designated location in rawSend.ino"));
Serial.print(F("\n#define RAW_DATA_LEN "));
Serial.println(recvGlobal.recvLength,DEC);
Serial.print(F("uint16_t rawData[RAW_DATA_LEN]={\n\t"));
for(bufIndex_t i=1;i<recvGlobal.recvLength;i++) {
Serial.print(recvGlobal.recvBuffer[i],DEC);
Serial.print(F(", "));
if( (i % 8)==0) Serial.print(F("\n\t"));
}
Serial.println(F("1000};"));//Add arbitrary trailing space
myReceiver.enableIRIn(); //Restart receiver
}
}
上記のURLに飛ぶと同じコードあります。
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
特に何もできていない。下手にいじれない。
補足
特になし
回答2件
あなたの回答
tips
プレビュー