Нужно чтобы цикл while заканчивался при этом условии if (results.value==0xFFE01F) как это сделать? Код (C++): #include "IRremote.h" IRrecv irrecv(8); decode_results results; int led1=0; int led2=0; int LED = 9; int brightness = 0; int fadeAmount = 30; int x=5; int counter = 0; int PIN_PHOTO_SENSOR = A0; void setup() { pinMode(3,OUTPUT); pinMode(9,OUTPUT); pinMode(LED, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); digitalWrite(10, HIGH); pinMode(10, OUTPUT); } void loop() { if (results.value==0xFFC23D){ while(true){ int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); if (val < 300) { digitalWrite(9, HIGH);led1=1;results.value=0; } else { digitalWrite(9, LOW);led1=0;results.value=0; } } } if ( irrecv.decode( &results )) { Serial.println(results.value, HEX); for(int i = 100;i <= 1000; i=i+10){ if (results.value==0xFF22DD &&led1==1){ digitalWrite( 9, HIGH ); delay(i); digitalWrite( 9, LOW ); delay(i); } } if (results.value==0xFFA25D&&led1==0){ digitalWrite( 9, HIGH );led1=1;results.value=0; } if (results.value==0xFFE21D&&led1==1){ digitalWrite( 9, LOW );led1=0;results.value=0; } if (results.value==0xFF5AA5&&led1==1){ analogWrite(9, brightness); brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } delay(30); } if (results.value==0xFF10EF&&led1==1){ analogWrite(9, brightness); brightness = brightness - fadeAmount; } irrecv.resume(); } }
почитать про циклы в умных книжках. На while() циклы в сях не заканчиваются. Грамотно составить алгоритм работы программы.
Ну, можно еще придумать штук пять вариантов, но описанию в первом сообщении темы идеально соответствует цикл do while.
Не факт. А если сразу пришло 0xFFE01F? И ненадо ничего выполнять от слова совсем? А do while сделает do один раз