Начал учиться, но не могу понять, почему так работает?
- Войдите на сайт для отправки комментариев
Вс, 27/12/2020 - 21:54
Здравствуйте! Начал учиться работать с ардуино. Писать для неё код и всё такое! Но вот не могу понять, почему код работает не так, как я его пишу!
void setup()
{
pinMode(7, INPUT_PULLUP);
pinMode(3, OUTPUT);
}
void loop()
{
if (digitalRead(7 == LOW)) // если нажата кнопка
{
digitalWrite(3, HIGH); // включить светодиод
}
else // не нажата
{
digitalWrite(3, LOW); // выключить светодиод
}
}
Что я жду от кода, при включении пин 3(светодиод) не горит
при нажатии кнопки (пин 7 ) светодиод должен загорается.
Но на деле, светодиод сразу загорается!
Подскажите, где я ошибку сделал?
Для начала, вот здесь.
А что до кода, то в строке №ХЗ закрывающая скобка не на месте стоит.
11 строка. Вставьте код правильно.
11 строка.
Вы что, пальцем считали? Я вот написал "строка №ХЗ" :-)
Аха.)
Простите, только что прочитал, как правильно вставлять код.
а теперь по стороке, где именно ошибка?
а теперь по стороке, где именно ошибка?
Я же написал - закрывающая скобка не на месте.
а теперь по стороке, где именно ошибка?
Я же написал - закрывающая скобка не на месте.
А как, вернее где именно её место?
И почему компилятор не ругается, если я не правильно её поставил?
Евгений, прошу вас , можно немного подробней, чтоб я понял, что к чему.
Благодарю за то что помогаете мне.
Таак ...
Вы что сравниваете с LOW? Семёрку? У Вас именно так написано. Зачем? Точно не равно. А что Вы хотели сравнить с LOW? Можете ответить?
Таак ...
Вы что сравниваете с LOW? Семёрку? У Вас именно так написано. Зачем? Точно не равно. А что Вы хотели сравнить с LOW? Можете ответить?
Я в условии пишу , что если считанный пин(7) равен низкому уровню то далее код который должен выполниться.
Таак ...
Вы что сравниваете с LOW? Семёрку? У Вас именно так написано. Зачем? Точно не равно. А что Вы хотели сравнить с LOW? Можете ответить?
Я в условии пишу , что если считанный пин(7) равен низкому уровню то далее код который должен выполниться.
Вот эта строка
должна выглядеть вот так
Ничего не замечаете?
Я в условии пишу , что если считанный пин(7)
Да, нет же! Не это Вы пишете. Чтобы функция digitalRead считала значение пина, ей нужно передать номер пина - это параметр функции. Посмотрите внимательно, и скажите что именно у Вас передаётся функции digitalRead в качестве номера пина?
Тьфу блин! Хотел, чтобы человек сам дошёл! :-(((
Таак ...
Вы что сравниваете с LOW? Семёрку? У Вас именно так написано. Зачем? Точно не равно. А что Вы хотели сравнить с LOW? Можете ответить?
Я в условии пишу , что если считанный пин(7) равен низкому уровню то далее код который должен выполниться.
Вот эта строка
должна выглядеть вот так
Ничего не замечаете?
Спасибо! Теперь я понял, где я ошибся!!!
Я в условии пишу , что если считанный пин(7)
Да, нет же! Не это Вы пишете. Чтобы функция digitalRead считала значение пина, ей нужно передать номер пина - это параметр функции. Посмотрите внимательно, и скажите что именно у Вас передаётся функции digitalRead в качестве номера пина?
ДА да, именно номер пина, япоказал как просто цифра, а не конкретно что это номер пина! Спасибо вам!
Да, нет же! Не это Вы пишете. Чтобы функция digitalRead считала значение пина, ей нужно передать номер пина - это параметр функции. Посмотрите внимательно, и скажите что именно у Вас передаётся функции digitalRead в качестве номера пина?
Интересно, что компилятор на digitalRead(7 == LOW) не ругается, а выдает правильное true, компилятор обрезает всё лишнее после семёрки? А нет, всегда true выдаёт.
Тьфу блин! Хотел, чтобы человек сам дошёл! :-(((
Да ладно, ошибка слишком детская, сам он до утра искал бы, а все объяснения только сильнее бы его запутали ))
Вот подите объясните ему, что в реале данные считывались с нулевого пина, а не с седьмого ))
Тьфу блин! Хотел, чтобы человек сам дошёл! :-(((
Да ладно, ошибка слишком детская, сам он до утра искал бы, а все объяснения только сильнее бы его запутали ))
Вот подите объясните ему, что в реале данные считывались с нулевого пина, а не с седьмого ))
Ребят, прошу вас, не судите строго, я ж только начал постигать язык программирования. Ну как мне ещё или у кого поинтересоваться, чтоб получалось с ним работать. Вот я к вам и пришёл, так сказать за первой помощью, буду в этом топике все вопросы задавать, набирать и обтачивать опыт!
Интересно, что компилятор на digitalRead(7 == LOW) не ругается, а выдает правильное true, компилятор обрезает всё лишнее после семёрки? А нет, всегда true выдаёт.
Компилятор преобразует сроку digitalRead(7 == LOW) в digitalRead(0)
Вот подите объясните ему, что в реале данные считывались с нулевого пина, а не с седьмого ))
А, понял 6 == LOW это false и tx1, 7 == LOW это true и rx0.
Интересно, что компилятор на digitalRead(7 == LOW) не ругается, а выдает правильное true, компилятор обрезает всё лишнее после семёрки? А нет, всегда true выдаёт.
Компилятор преобразует сроку digitalRead(7 == LOW) в digitalRead(0)
Вот этого я тоже не знал, хорошая подсказка! Спасибо!
А, понял 6 == LOW это false и tx0, 7 == LOW это true и rx1.
Интересная трактовка. Значит 6 не равно нулю, а 7 равно? Как такое возможно? )))
А, понял 6 == LOW это false и tx0, 7 == LOW это true и rx1.
Интересная трактовка. Значит 6 не равно нулю, а 7 равно? Как такое возможно? )))
Чёт я не то сморозил )) LOW == 0, выражение a == LOW, где a != 0 всегда будет false.
Как такое возможно? )))
Да, запросто! Синус вон в войну до пяти доходил! :-)
А если без шуток, то в языке Fortran IV такое было вполне возможно. Там был механизм, позволяющей константе (например, семёрке) присвоить любое число. И, что важно, это был не ляп компилятора, а свойство языка. Сделать компилятор в котором такое бы не проходило, было почти невозможно, т.к. при этом многое другое бы посыпалось.
Честно говоря, Фортран я в свое время так и не понял. Абсолютно ))
А вот ещё интересен вопрос, в герконе есть дребезг контакта или нет?
Любые механические контакты подвержены
Понял, спасибо!
А вот ещё интересен вопрос, в герконе есть дребезг контакта или нет?
Герконы разные бывают. В ртутном - нет.