Я написал программу для отправки ИК-сигнала на мой аудиоплеер, SendChannelUpCode и SendChannelUpCodeONE отвечают за отправку двух типов ИК-сигналов: один для воспроизведения компакт-диска, а другой для режима AUX, если я открываю серийный номер и если я печатаю 1Режим CD будет работать, но я не могу набрать «2» снова и отправить другой сигнал, который я должен выключить, затем на последовательном порту, а затем нажать 2 для запуска, любые предложения о том, как не перезапускать последовательный порт каждый раз, чтобы переключаться между режимами?
Я пытался использовать return для функции SendChannelUpCode и пытался поместить exit (1) после того, как я вызвал эту функцию, но у меня все еще возникла та же проблема, и я не могу использовать функции прерывания, потому что в операторе IF ошибка
void setup(){
pinMode(IRledPin, OUTPUT);
Serial.begin(9600);
while (!Serial);
Serial.println("Input 1 to Turn CD on and 2 to turn AUX mode");
}
void loop() {
if (Serial.available())
{
int state = Serial.parseInt();
if (state == 1)
{
Serial.println("Command completed, CD MODE ON");
delay(100);
SendChannelUpCode();
}
if (state == 2)
{
Serial.println("Command completed, AUX MODE ON");
delay(100);
SendChannelUpCodeONE();
}
}
}
void pulseIR(long microsecs) {
cli();
while (microsecs > 0) {
digitalWrite(IRledPin, HIGH);
delayMicroseconds(10);
digitalWrite(IRledPin, LOW);
delayMicroseconds(10);
microsecs -= 26;
}
}
void SendChannelUpCode() {
delayMicroseconds(28136 ); //Time off (LEFT column)
pulseIR(9280 );
delayMicroseconds(4600 );
pulseIR(600 );
}
void SendChannelUpCodeONE() {
delayMicroseconds(28136 ); //Time off (LEFT column)
pulseIR(9280 );
delayMicroseconds(4600 );
pulseIR(600 );
}