Вопрос от нуба, про лампочки, ардуино и функцию IF

Niktovka
Offline
Зарегистрирован: 22.08.2019

Начал на днях учиться ардуинить. С нуля.
Дошёл до функции If - вроде в ней ничё сложного. Сделал простой скетч (ниже). Хотел по простому, если на 7 пине есть ток, что бы мигал светодиод на 13 пине, если нет - мигал на 10 пине. Заливаю, не подавая тока реально мигает светодиод на 13 пине. Но подовая ток на 7 пин, начинают гореть оба светодиода, по очереди. Почему? Еще встречный вопрос, иногда светодиод на 10 пине загортся просто так, если подвинуть ардуинку, или поднести к ней руки, или ещё что. Что за фигня?
 

void setup()
{
pinMode(13, OUTPUT); //
pinMode(10, OUTPUT); //
pinMode(7, INPUT);
}
void loop()
{

if ( digitalRead(7) == HIGH )
{
digitalWrite(13, HIGH);
delay (1000);
digitalWrite(13, LOW);
delay (1000);
}
else ( digitalRead(7) == LOW );
{
digitalWrite(10, HIGH);
delay (1000);
digitalWrite(10, LOW);
delay (1000);
}
}

 

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

строчка 17 неправильная, изучайте синтаксис IF внимательнее

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

else ( digitalRead(7) == LOW );

 

Неправильно. Надо или else if( digitalRead(7) == LOW )

Или в вашем случае достаточно одного else 

Niktovka
Offline
Зарегистрирован: 22.08.2019

b707 пишет:

строчка 17 неправильная, изучайте синтаксис IF внимательнее


Я на 17 строке после else всё стёр, как в книге, вроде всё заработало.  

if ( digitalRead(7) == HIGH )
{
digitalWrite(13, HIGH);
delay (1000);
digitalWrite(13, LOW);
delay (1000);
}
else
{
digitalWrite(10, HIGH);
delay (1000);
digitalWrite(10, LOW);
delay (1000);
}

 

Niktovka
Offline
Зарегистрирован: 22.08.2019

asam пишет:

else ( digitalRead(7) == LOW );

 

Неправильно. Надо или else if( digitalRead(7) == LOW )

Или в вашем случае достаточно одного else 

Спасибо, всё понял

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Потому что наводки. Надо резистор в несколько килоом между 7 входом и землей поставить и не будет больше срабатывать.

Niktovka
Offline
Зарегистрирован: 22.08.2019

Резистор помог. Спасибо. А есть какие-нибудь книжки для с такой инфой, что-то вроде самоучителей ? Или это нужны спецкниги, типа вузовских?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Niktovka пишет:

Резистор помог. Спасибо. А есть какие-нибудь книжки для с такой инфой, что-то вроде самоучителей ? Или это нужны спецкниги, типа вузовских?

http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov#commen...

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

Строка 5 из стартового топика (защита от рук) - pinMode(7, INPUT_PULLUP);

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

bwn пишет:

Строка 5 из стартового топика (защита от рук) - pinMode(7, INPUT_PULLUP);

 

Это не сочетается с желанием ТС "если на 7 пине есть ток, что бы мигал светодиод на 13 пине, если нет - мигал на 10 пине"

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

asam пишет:

bwn пишет:

Строка 5 из стартового топика (защита от рук) - pinMode(7, INPUT_PULLUP);

 

Это не сочетается с желанием ТС "если на 7 пине есть ток, что бы мигал светодиод на 13 пине, если нет - мигал на 10 пине"

 

Да да, резисторы, сопротивления, провода-провода. Матчасть  подтянуть и не надо извращаться (мое мнение). 

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

asam пишет:

Это не сочетается с желанием ТС "если на 7 пине есть ток, что бы мигал светодиод на 13 пине, если нет - мигал на 10 пине"

ОК, согласен, чой-то землю проглядел.

Morroc
Offline
Зарегистрирован: 24.10.2016

Niktovka пишет:

А есть какие-нибудь книжки для с такой инфой, что-то вроде самоучителей ? Или это нужны спецкниги, типа вузовских?

С какой "такой" инфой ? Начала радиотехники ? Язык Си ? Программирование микроконтроллеров ? Есть чисто по ардуине куча всего начального уровня - это можно просто погуглить.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Morroc пишет:

Есть чисто по ардуине куча всего начального уровня - это можно просто погуглить.

Я читал подобное. Но, толи что я раньше хоть как-то, но кривокодил, толи что в схемотехнике немного понимаю (аналоговой превосходительно), мне все эти самоучители (автор же по ним вопрос задавал?) - как палки в колеса. ((

Может если с нуля - то да, хорошо. Но я прям разочаровался, если честно. Особенно серия типа «для чайников». 

Для себя в плане ардуино понял - возник вопрос, «обсоси все авспекты вопроса (читай - изучи)», задай вопрос. Направят. Если и тут не помогло - значит я тупой. Учу дальше. Хотя.... Иногда бывает знаешь и не раз примерял и просто не понимаешь как 1+1 получить 2 )))

 

это оффтоп. Прошу прощения...