Цикл while и отправка смс
- Войдите на сайт для отправки комментариев
Пт, 18/11/2016 - 21:20
Доброго времени суток. Столкнулся с проблемой при отправке смс с модулем Neoway.
написал код чтобы отправлялось смс по событию, но программа висит в цикле while и из за этого не грузится остальная часть прошивки. Подскажите пожалуйста как правильно выйти из цикла чтобы тело цикла всегда выполнялось 1 раз при заданном условии.
void setup() { delay(2000); Serial.begin(9600); pinMode(6, INPUT_PULLUP); Serial.println("AT+CMGF=1"); delay(100); Serial.println("AT+CSCS=\"GSM\""); delay(100); } void loop() { boolean var = true; while(digitalRead(6) == LOW) var = true; delay(200); if (var) { while(1){ Serial.println("AT+CPAS"); if (Serial.find("0")) break; delay(100);} Serial.println("AT+CMGS=\"+700000000\""); delay(100); Serial.print("Text"); // отправляем текст delay(100); Serial.print((char)26); // символ завершающий передачу } while(digitalRead(6) == HIGH) var = true; delay(200); if (var) { while(1){ Serial.println("AT+CPAS"); if (Serial.find("0")) break; delay(100);} Serial.println("AT+CMGS=\"+700000000\""); / delay(100); Serial.print("Text"); // отправляем текст delay(100); Serial.print((char)26); // символ завершающий передачу } }
http://arduino.ru/Reference/While
строка 16 и 29, выполнять пожизненно (как loop), а должно быть условие :)
Здорово видеть код, написаный топикстартером самостоятельно, каким бы он ни был.
Вынесите часть кода (17-24, она же 30-37), отправляющую СМС, в отдельную функцию.
void loop() станет проще и короче и Вам будет легче понять, как всё должно быть на самом деле.
http://arduino.ru/Reference/While
строка 16 и 29, выполнять пожизненно (как loop), а должно быть условие :)
попробуйте цикл Do.. While без break а с условием
Пробовал так, как я знаю условие в do выполняется один раз, даже если значение в цикле ложно, но как можно сделать ложное значение ,если мне нужно обрабатывать и высокий и низкий уровень порта.
можно с помощью флага
можно с помощью флага
Valera19701 и Araris Благодарю за подсказку.