Страница 1 из 1
Ошибка компиляции
Добавлено: 19 апр 2020, 23:27
IgorIv
Здравствуйте.
Создал простейшую схему LAD. Контакт разомкнутый (2) и катушка (4).
После компиляции скетч:
void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, 0);
}
void loop()
{
//Плата:1
digitalWrite (4, ((0) &&((digitalRead (2)))));
}
т.е. СОВСЕМ НЕТ ФУНКЦИОНАЛА:
{
// read the state of the pushbutton value
buttonState = digitalRead(2);
// check if pushbutton is pressed. if it is, the
// buttonState is HIGH
if (buttonState == HIGH) {
// turn LED on
digitalWrite(4, HIGH);
} else {
// turn LED off
digitalWrite(4, LOW);
}
delay(10); // Delay a little bit to improve simulation performance
}
Подскажите, что делаю не так?

Ошибка компиляции
Добавлено: 20 апр 2020, 08:35
RedSky
Всё так как должно быть. Собственно, почему код должен получаться таким как вы привели ниже?
Или
IgorIv писал(а): 19 апр 2020, 23:27
digitalWrite (4, ((0) &&((digitalRead (2)))));
не работает как надо? Ещё и delay зачем-то приплели.
Ошибка компиляции
Добавлено: 20 апр 2020, 16:36
IgorIv
В симуляторе
https://www.tinkercad.com/ не работает.
Или этот симулятор не подходит для проверки?
Ошибка компиляции
Добавлено: 21 апр 2020, 06:15
RedSky
Завтра проверю в протеусе, но с простой логикой никогда проблем не было.
Отправлено спустя 9 часов 45 минут 28 секунд:
Проверил - работает. Код получился такой
[spoiler]
Код: Выделить всё
void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, 0);
}
void loop()
{
//Плата:1
digitalWrite (4, (digitalRead (2)));
}
[/spoiler]
Ошибка компиляции
Добавлено: 21 апр 2020, 07:40
Goosr
А вы как управляете Pin2? Я смотрю, у вас вход подтянут к плюсу, следовательно управлять надо минусом.
Ошибка компиляции
Добавлено: 21 апр 2020, 10:09
IgorIv
Спасибо за ответы!
Вижу отличие в двух значках посередине выражения и количество скобок: digitalWrite (4, ((0) &&((digitalRead (2)))));
Это критично?
Насчет плюса и минуса. Как я понимаю релейную LAD при подаче +5 на пин2 получаем +5 на пин4 (относительно grnd)
Ошибка компиляции
Добавлено: 21 апр 2020, 12:04
Goosr
IgorIv писал(а): 21 апр 2020, 10:09
Насчет плюса и минуса. Как я понимаю релейную LAD при подаче +5 на пин2 получаем +5 на пин4 (относительно grnd)
LAD или FBD не важно. Для защиты от помех на входе можно включить "Подтягивающий резистор", у вас в схеме включен, таким образом вход подтягивается к +5, контакт в схеме Pin2 будет постоянно включен и как следствие выход Pin4 то-же. Подав на вход минус, Pin2 разомкнется и выход Pin4 то-же. Частая ошибка начинающих, это управлять плюсовым сигналом когда вход подтянут к плюсу.
Если нужно, чтобы выход включался при подаче отрицательного управляющего сигнала, контакт Pin2 нужно сделать нормально закрытым.
Ошибка компиляции
Добавлено: 21 апр 2020, 16:10
IgorIv
Сделал LAD нормально закрытый контакт (пин2) (подтяжкой резистором 10к) на +5 и катушку (состояние при старте откл) (пин4).
Рассчитывал при нажатии на кнопку загорится светодиод. Но не работает (в этом симуляторе).
Компиляция
void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, 0);
}
void loop()
{
//Плата:1
digitalWrite (4, ((0) &&((!(digitalRead (2))))));
}
Ошибка компиляции
Добавлено: 21 апр 2020, 16:43
RedSky
[ref]IgorIv[/ref], не пойму откуда у вас берётся строка
IgorIv писал(а): 21 апр 2020, 16:10
digitalWrite (4, ((0) &&((!(digitalRead (2))))));
Должно быть
[spoiler]
Безымянный.png
[/spoiler]
А так у вас выход всегда будет выключен (условие И с нулём).
Ошибка компиляции
Добавлено: 21 апр 2020, 16:51
IgorIv
Да, это странно. Комп W7\64
Ошибка компиляции
Добавлено: 21 апр 2020, 17:14
RedSky
Вообще то левую часть контакта тоже подключать надо (см. рисунок выше).
Ошибка компиляции
Добавлено: 21 апр 2020, 17:19
IgorIv
Отлично! Спасибо за подсказку!
Скетч выправился.
Симуляция не работает. Может я не так понял принцип работы контактов-катушек и монтаж неправильный?
void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, 0);
}
void loop()
{
//Плата:1
digitalWrite (4, (digitalRead (2)));
}
Ошибка компиляции
Добавлено: 21 апр 2020, 18:00
support
Ну во первых у Вас включён подтягивающий резистор на входе. Потому резистор в цепи кнопки не нужен. Достаточно замыкать кнопкой вход на GND. А вот резистор на светодиод всё таки нужно поставить (500 ом - 1 Ком в зависимости от диода). Ну и проверить полярность подключения светодиода.
Ошибка компиляции
Добавлено: 21 апр 2020, 18:03
IgorIv
Всем СПАСИБО! Все работает!
На выходе будет катушка реле. Что для нее посоветуете?
Ошибка компиляции
Добавлено: 21 апр 2020, 18:31
support
IgorIv писал(а): 21 апр 2020, 18:03
На выходе будет катушка реле. Что для нее посоветуете?
Посоветую готовый модуль реле для ардуино. Там уже и транзистор стоит, и чаще всего опторазвязка.