arduino unoを使って、IM315無線モジュール(ソフトウェアシリアル)と電子ボリュームLM1972を接続したワイヤレスでスピーカーボリュームを変えるものを作成しています。
ソフトウェアシリアルとSPIをそれぞれ単独で試してみると問題なく動くのですが、同時に使おうとすると全く反応しなくなります。
どうにか併用したいのですが、SoftwareSerial.begin()やSPI.begin()をコメントアウトすると使えるようになるので競合しているのだと思われます。
情報をあさってみると海外サイトでSoftwareSerialでなくaltSoftSerialを使うと問題ないとの情報見かけたので置き換えてみたのですが、こちらも単独では動作して併用はできませんでした。
SoftwareSerial.endしてSPI.beginといった具合にendとbeginで切り替えていけば利用できるかなと思ったのですがそれでもできませんでした。
解決策はありますでしょうか?
お知恵をお借りできれば幸いです。
よろしくお願い致します。
●スケッチ
void setup() {
/* IM315無線モジュール 設定 */
altSerial.begin(19200);
Serial.println("IM315: OK!");
delay(1000);
/* 電子ボリュームLM1972M 設定 */
digitalWrite(SS_LM1972M, HIGH);
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setDataMode(SPI_MODE0);
// SPI.begin();
// Serial.println("LM1972M: OK!");
delay(1000);
}
void Speaker(){
altSerial.end();
Serial.println("IM315: OFF!");
SPI.begin(); Serial.println("LM1972M: OK!"); uint8_t att = volumeToAttenuation(Speaker_Volume); setAttenuation(att); tone(SPEAKER_PIN, NoteOctave, SIGNAL_LENGTH); delay(100); SPI.endTransaction(); SPI.end(); Serial.println("LM1972M: OFF!"); delay(500); altSerial.begin(19200); Serial.println("IM315: OK!");
}
void loop() {
RecvDataCheck(); //無線信号受信でRun_Mode=1;
if(Run_Mode == 1){ Speaker(); }
delay(100);
}
ハードウェアシリアル結果*
IM315: OFF!
LM1972M: OK!
LM1972M: OFF!
IM315: OK!
4行目の「IM315: OK!」以降、無線を受け付けてくれなくなります…
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/28 17:03