#c #arduino
Вопрос:
Я относительно новичок в Arduino и пытался создать простой эскиз, который включает светодиодную подсветку, когда я нажимаю стрелку вверх на пульте дистанционного управления, и выключает светодиодную подсветку, когда я нажимаю стрелку вниз. Прямо сейчас, это то, что у меня есть:
#include <IRremote.h>
int RECEIVER_PIN = 12;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
IrReceiver.begin(RECEIVER_PIN);
}
void loop() {
// put your main code here, to run repeatedly:
if(IrReceiver.decode()){
if(IrReceiver.decodedIRData.command == 0x46) {
digitalWrite(LED_BUILTIN, HIGH);
} else if(IrReceiver.decodedIRData.command == 0x15) {
digitalWrite(LED_BUILTIN, LOW);
}
IrReceiver.resume();
}
}
Есть ли лучший способ сделать это, или я на правильном пути. Все отзывы приветствуются и ценятся. Спасибо!
Ответ №1:
Я также новичок в Arduino и C, но если бы это был я, я бы использовал «переключатель» вместо «если … тогда … еще … если … и т. Д». :
#include <IRremote.h>
int RECEIVER_PIN = 12;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
IrReceiver.begin(RECEIVER_PIN);
}
void loop() {
// put your main code here, to run repeatedly:
if(IrReceiver.decode()){
switch(IrReceiver.decodedIRData.command){
case 0x46: Serial.println("UP") ; digitalWrite(LED_BUILTIN, HIGH); break;
case 0x15: Serial.println("DOWN") ; digitalWrite(LED_BUILTIN, LOW) ; break;
case 0x0: Serial.println("Too Fast, Cmd Repeat"); break;
default: Serial.println("Ooops, wrong key!");
}
IrReceiver.resume();
}
}