Разъясните пожалуйста.

kkoott
Offline
Зарегистрирован: 27.09.2018

Только начал изучать Ардуино.

Собрал и запустил светофор из этого видео (https://www.youtube.com/watch?v=U5tNMQl5PJ4)

Все работает.

Вот скетч:

//объявляем переменные с номерами пинов

int r = 13;
int g = 12;
int b = 11;

void setup() //процедура setup

{
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}

void loop() //процедура loop
{ 
digitalWrite(r, HIGH); //включаем зеленый 
delay(5000); // пауза 5 секунд 
digitalWrite(r, LOW); //выключаем зеленый 
delay(500); // пауза 0.5 секунд 
digitalWrite(r, HIGH); //включаем зеленый 
delay(500); // пауза 0.5 секунда 
digitalWrite(r, LOW); //выключаем зеленый 
delay(500); // пауза 0.5 секунда 
digitalWrite(r, HIGH); //включаем зеленый 
delay(500); // пауза 0.5секунда 
digitalWrite(r, LOW); //выключаем зеленый 
delay(500); // пауза 0.5 секу
digitalWrite(g, HIGH); //включаем желтый
delay(3000); //пауза 3 секунд
digitalWrite(g, LOW); //выключаем желтый 
digitalWrite(b, HIGH); // включаем красный 
delay(5000); // пауза 5 секунд
digitalWrite(g, HIGH); //включаем желтый
delay(2000); //пауза 2 секунд
digitalWrite(g, LOW); //выключаем желтый
digitalWrite(b, LOW); //выключаем красный
}

Разъясните как работает этот кусок:

digitalWrite(b, HIGH); // включаем красный 
delay(5000); // пауза 5 секунд
digitalWrite(g, HIGH); //включаем желтый
delay(2000); //пауза 2 секунд
digitalWrite(g, LOW); //выключаем желтый
digitalWrite(b, LOW); //выключаем красный

почему желтый свето диод загарается в то время как горит красный? почему не одновременно с ним или после того как красный отработает delay(2000) ?

Спасибо

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

А почему он должен загораться одновременно?

kkoott
Offline
Зарегистрирован: 27.09.2018

sadman41 пишет:

А почему он должен загораться одновременно?

Согласен, насчет одновременно погарячился.

Туплю- 

Я вчера поздно вечером собрал этот проэктик и появился этот вопрос на сонную голову (а время горения светиков не додумался засечь)

Пересмотрел видео (моя макетка дома) посчитал время, получается контролер выполняет все команды по очереди. Зажигает красный на 5 сек, через 5сек зажигает желтый на 2сек.

Тогда такой вопрос, почему красный через 5сек не гаснет, ведь  digitalWrite(b, HIGH) уже не должен работать?

b707
Offline
Зарегистрирован: 26.05.2017

kkoott пишет:

Тогда такой вопрос, почему красный через 5сек не гаснет, ведь  digitalWrite(b, HIGH) уже не должен работать?

странный вопрос. Чтобы красный выключился, его надо выключить. то есть подать на него LOW. А теперь посмотрите в свой код - где вы подаете LOW на красный? - после желтого...

ЗЫ какой странный выбор переменных для цветов у вас. Почему зеленый - это "r"? :) А желтый вдруг "g" ? :) Вы сами-то не путаетесь? - логично же "g" = green, "r" = red, "y" = yellow

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

Почему зеленый - это "r"? :) А желтый вдруг "g" ? :) Вы сами-то не путаетесь? - логично же "g" = green, "r" = red, "y" = yellow

Ну, как почему

красный - bлин, стоим
жёлтый - gотовимся
зелёный - rванули

Всё логично.

kkoott
Offline
Зарегистрирован: 27.09.2018

ЕвгенийП пишет:

Ну, как почему

красный - bлин, стоим
жёлтый - gотовимся
зелёный - rванули

Всё логично.

Ха-ха. Я сам улыбнулся когда переписывал этот код с ютуба. 

То есть HIGH будет действовать до LOW, а delay это не время свечения светика, а провежуток времени до выполнения следующей команды?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так точно.

kkoott
Offline
Зарегистрирован: 27.09.2018

Понял.

Спасибо.

bwn
Offline
Зарегистрирован: 25.08.2014

Ну вот, делеи освоили, пора к бабке Миллис подкатываться.))))