Arduino игнорирует оператор "if"
- Войдите на сайт для отправки комментариев
Ср, 17/02/2016 - 22:34
И так, проблема в том что я пытаюсь сделать замок как на сейфе с помощью потенциометра. Создаю условие:
"
if (550 > sensorValue > 650)
{
delay(2000);
digitalWrite(LED_PIN, HIGH);
delay(2000);
digitalWrite(LED_PIN, LOW);
}
"
Но Arduino выполняет действия в скобках, не проверяя условие выполнения. Сталкиваюсь с этой проблемой не в первый раз. Что я только не перепробовал. Очень сильно напрягает эта проблема, а этот оператор не из редких. Специально зарегистрировался на этом сайте для помощи опытных и продвинутых людей, помогите чем сможете пожалуйста!
писать надо так
а с тем условием которое у вас так
И так, проблема в том что я пытаюсь сделать замок как на сейфе с помощью потенциометра. Создаю условие:
"
Почитать описание языка Си религия не позволяет?
http://arduino.ru/Reference/If
И так, проблема в том что я пытаюсь сделать замок как на сейфе с помощью потенциометра. Создаю условие:
"
Почитать описание языка Си религия не позволяет?
http://arduino.ru/Reference/If
в операторе IF про это как раз не чего и нет........
а есть в
&& (логическое И)
Истина, если оба операнда истина (true).
if
(digitalRead(2) == HIGH && digitalRead(3) == HIGH) {
// считывает состояние двух портов
// ...
}
Истина если оба порта вход/выхода HIGH
|| (логическое ИЛИ)
Истина, если хотя бы один операнд истина, например:
if
(x > 0 || y > 0) {
// ...
}
будет верно (истина) если x или y больше 0.
! (логическое отрицание)
True, если операнд false, и наоборот, например:
if
(!x) {
// ...
}
условие верно, если x - false (x равно 0).
Важно различать логический оператор "И" - && и битовый оператор "И" - &. Тоже самое относится к логическому оператору "ИЛИ" - || и битовому оператору "ИЛИ" - |.
Пример
расечатать?
if
(a >= 10 && a <= 20){}
// условие верно, если a больше 10, но меньше 20
Спсибо, помог! Буду очень благодарен если поможешь ещё с кодовым замком. Проблема что и предыдущая светодиоды горят без нажатия кнопок, мигают, меняются. Пробовал ещё с оператором "else", но пока остановился на этом.
Вот схема, если как то поможет:
для начала надо с каждой кнопки (концы которые к цифровым пинам ардуино подключены) на землю подтягивающий резистор поставить в 1 - 10 кОм
для начала надо с каждой кнопки (концы которые к цифровым пинам ардуино подключены) на землю подтягивающий резистор поставить в 1 - 10 кОм
правельно
if (550 > sensorValue > 650)
проблема в том что ....
Нет, проблема не в этом. Проблема в том, что Вы абсолютно не знаете языка на котором пытаетесь писать. Читайте много раз и внимательно. Такого рода проблемы исчезнут сразу.
На данный момент у меня нет резисторов на 1kΩ, но что нужно будет сделать дальше?
На данный момент у меня нет резисторов на 1kΩ, но что нужно будет сделать дальше?
Один - это он погорячился. Ставьте 10 (ну, от пяти хотя бы) у Вас же питание не лишнее. Нет 5 или 10, ставьте 20, там почти всё равно, хоть до 100.
Один - это он погорячился. Ставьте 10 (ну, от пяти хотя бы) у Вас же питание не лишнее. Нет 5 или 10, ставьте 20, там почти всё равно, хоть до 100.
от 1 до 10 написал же, и чем меньше сопротивление, тем меньше наводок :)
от 1 до 10 написал же, и чем меньше сопротивление, тем меньше наводок :)
И тем больше ток через него (если батарейка, то это особенно приятно).
Сопротивление входя атмеги - 100МОм, так что поставите Вы туда 1К или 10 или 20 особой роли не играет, а вот ток... При 1К и HIGH на пине - это худо-бедно 5мА ПОСТОЯННО вылетающие в трубу.
Сделал как вы сказали, но пока ничего не изменилось
На данный момент у меня нет резисторов на 1kΩ, но что нужно будет сделать дальше?
1. Красный СД светить не будет - земля оборвана - если судить по схеме.
2. кнопки сажать не на +5 а на землю, а на входных пинах включить подтягивающее сопротивление к +5 - и будет щастье ;)
"
1. Красный СД светить не будет - земля оборвана - если судить по схеме.
2. кнопки сажать не на +5 а на землю, а на входных пинах включить подтягивающее сопротивление к +5 - и будет щастье ;)
"
1. Светодиод связал с землёй.
2. Поставил подтягивающие резисторы на пины 3-5 и на землю через резисторы кнопки насадил.
Резисторы на схеме те же что и у меня на 5,4.7 и 4kΩ.
Я всё правильно сделал?
а с тем условием которое у вас так
Вы в этом уверены?
sensorvalue фигурирует в исходном коде только один раз, следовательно, и сравнивается тоже только один раз. В результате сравнения получается либо 0, либо 1. Очевидно, обе эти величины всегда меньше 650.
Поэтому, как верно замиетил ЕвгенийП, второе сравнение (оно же результат всего выражения) вегда дает false.
Есть же внутренние подтягивающие резисторы, 100К как раз для такого случая, только логику в скетче наоборот переделать, когда true - кнопка не нажата, когда false нажата.
Ой, at0mix, уже написал.
Vernam, почитайте про внутренние подтягивающие резисторы, тогда внешние для кнопок Вам будут не нужны, для светодиодов по-прежнему нужны.
а с тем условием которое у вас так
Вы в этом уверены?
sensorvalue фигурирует в исходном коде только один раз, следовательно, и сравнивается тоже только один раз. В результате сравнения получается либо 0, либо 1. Очевидно, обе эти величины всегда меньше 650.
Поэтому, как верно замиетил ЕвгенийП, второе сравнение (оно же результат всего выражения) вегда дает false.
вы на знаки больше или меньше присмотритесь и на логический оператор
Подскажите пожалуйста почему после ИСТИНА значение в скобках игнорируется?
И как это решить?
Для начала, всавьте код нормально (есть в прикрепленных темах). Глазы ломаются и ссылаться не на что.
Подскажите пожалуйста почему после ИСТИНА значение в скобках игнорируется?
Это Вам так кажется.
Но, в любом случае,
Для начала, всавьте код нормально (есть в прикрепленных темах). Глазы ломаются и ссылаться не на что.
SSTTEEPPAANN, Вам уже два человека сказали - вставьте код нормально. Вы над нами издеваетесь?
Пока не вставите код правильно, никто Ваш код читать не будет.