ПРОБЛЕМА С КОДОМ ПОМОГИТЕ

Jalic
Offline
Зарегистрирован: 29.07.2020

Всем здравствуйте!Впервые в ардуино хотелось сделать так что при нажатии в форме на "1" загорался 13 пин светодиода встроенного,при нажатии на "0" выключался.При нажатии на "2" выполнялось цикличное мигание пока не нажму еще одну любые из цифр

ПРОБЛЕМА в том что все работает,но при включении цикла,когда хочу переключить выключить светодиод-- не получается!Помогите по простому что б компактно и я понял :) Заранее спасибо

byte num;
void setup() {
  Serial.begin(9600);
  pinMode(13,1);
 
}

void loop() {
if (Serial.available() > 0) {
    num=Serial.read();

    if (num == '0' ) {
      digitalWrite(13,0);
    }
    

    if (num == '1' ) {
      digitalWrite(13,1);
    }
      while (num == 2) {
      digitalWrite(13,1);
      delay(500);
      digitalWrite(13,0);
      delay(500);
     if (num!=2){
        break;
     }

      }
      delay(50);
    
      }
delay (3);
}

  

 

b707
Онлайн
Зарегистрирован: 26.05.2017

обратите внимание, как у вас по разному записаны условия в строках 17 и 20

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

В цикле while не  считывается нажатие кнопки. Он не попадает в loop(). Делай изменение num отдельной функцией и вызывай где надо.

Jalic
Offline
Зарегистрирован: 29.07.2020

напишите код,не пойму вас

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013

А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?

b707
Онлайн
Зарегистрирован: 26.05.2017

Пушной звер пишет:

А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?

обработка выхода как раз есть :) - строки 25-26

Судя по нечленораздельным замечаниям, этот код ТС скопировал где-то в инете и сам ни черта не понимает, спрашивать про цЫклы тут бесполезно :)

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013

b707 пишет:

Пушной звер пишет:

А ГДЕ У ТЕБЯ ОБРАБОТКА ВЫХОДА ИЗ ЦЫКЛА?

обработка выхода как раз есть :) - строки 25-26

а как он из сериал этот нум прочитает?

 

Jalic
Offline
Зарегистрирован: 29.07.2020

писал сам,не могу разобраться

Jalic
Offline
Зарегистрирован: 29.07.2020

вас попросили помочь новичку,а не выпендриваться

sadman41
Offline
Зарегистрирован: 19.10.2016

Нет в первопосте просьбы не выпендриваться нет, не брешите.

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013

Jalic пишет:

вас попросили помочь новичку,а не выпендриваться

счего ты решил что тебе тут ктото чтото должен?

КонстантинБ
Offline
Зарегистрирован: 02.11.2017
byte num;

void updateNum()
{
    if (Serial.available() > 0)
    {
        num = Serial.read();
    }
}

void setup()
{
    Serial.begin(9600);
    pinMode(13, OUTPUT);
}

void loop()
{
    updateNum();

    if (num == 0)
    {
        digitalWrite(13, 0);
    }
    else if (num == 1)
    {
        digitalWrite(13, 1);
    }

    do
    {
        digitalWrite(13, 1);
        delay(500);
        digitalWrite(13, 0);
        delay(500);
        updateNum();
    } 
    while (num == 2);
}

Не понял зачем там в конце нужны delay()

Вот как то так оно должно примерно выглядеть. На работоспособность не проверял.

Если потребуются дальнейшие доработки, переведите 100 рублей на карту хххх хххх хххх хххх :D

А лучше самому научиться писать.

b707
Онлайн
Зарегистрирован: 26.05.2017

при нажатии кнопки "0" num не будет равен нулю, а остальное вроде ОК :)

КонстантинБ
Offline
Зарегистрирован: 02.11.2017

b707 пишет:

при нажатии кнопки "0" num не будет равен нулю, а остальное вроде ОК :)

КонстантиБ пишет:

Если потребуются дальнейшие доработки, переведите 100 рублей на карту хххх хххх хххх хххх :D