Ошибка компиляции

Вопросы от новичков
Ответить
IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#1

Сообщение IgorIv » 19.04.2020{, 23:27}

Здравствуйте.
Создал простейшую схему 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
}

Подскажите, что делаю не так? :smile37:

Аватара пользователя
RedSky
Лейтенант
Сообщения: 575
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Ошибка компиляции

#2

Сообщение RedSky » 20.04.2020{, 08:35}

Всё так как должно быть. Собственно, почему код должен получаться таким как вы привели ниже?
Или
IgorIv писал(а):
19.04.2020{, 23:27}
digitalWrite (4, ((0) &&((digitalRead (2)))));
не работает как надо? Ещё и delay зачем-то приплели.

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#3

Сообщение IgorIv » 20.04.2020{, 16:36}

В симуляторе https://www.tinkercad.com/ не работает.
Или этот симулятор не подходит для проверки?

Аватара пользователя
RedSky
Лейтенант
Сообщения: 575
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Ошибка компиляции

#4

Сообщение RedSky » 20.04.2020{, 20:29}

Завтра проверю в протеусе, но с простой логикой никогда проблем не было.

Отправлено спустя 9 часов 45 минут 28 секунд:
Проверил - работает. Код получился такой
СпойлерПоказать

Код: Выделить всё


void setup()
{
pinMode(2, INPUT_PULLUP); 
pinMode(4, OUTPUT); 
digitalWrite(4, 0); 

}
void loop()
{


//Плата:1
digitalWrite (4, (digitalRead (2)));

}


Аватара пользователя
Goosr
Сержант
Сообщения: 184
Зарегистрирован: 07.06.2016{, 08:25}
Репутация: 16
Откуда: Тольятти
Имя: Дмитрий

Ошибка компиляции

#5

Сообщение Goosr » 21.04.2020{, 07:40}

А вы как управляете Pin2? Я смотрю, у вас вход подтянут к плюсу, следовательно управлять надо минусом.
FLProg 6.3.1 - 7.3.4 - Linux

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#6

Сообщение IgorIv » 21.04.2020{, 10:09}

Спасибо за ответы!
Вижу отличие в двух значках посередине выражения и количество скобок: digitalWrite (4, ((0) &&((digitalRead (2)))));
Это критично?
Насчет плюса и минуса. Как я понимаю релейную LAD при подаче +5 на пин2 получаем +5 на пин4 (относительно grnd)

Аватара пользователя
Goosr
Сержант
Сообщения: 184
Зарегистрирован: 07.06.2016{, 08:25}
Репутация: 16
Откуда: Тольятти
Имя: Дмитрий

Ошибка компиляции

#7

Сообщение Goosr » 21.04.2020{, 12:04}

IgorIv писал(а):
21.04.2020{, 10:09}
Насчет плюса и минуса. Как я понимаю релейную LAD при подаче +5 на пин2 получаем +5 на пин4 (относительно grnd)
LAD или FBD не важно. Для защиты от помех на входе можно включить "Подтягивающий резистор", у вас в схеме включен, таким образом вход подтягивается к +5, контакт в схеме Pin2 будет постоянно включен и как следствие выход Pin4 то-же. Подав на вход минус, Pin2 разомкнется и выход Pin4 то-же. Частая ошибка начинающих, это управлять плюсовым сигналом когда вход подтянут к плюсу.
Если нужно, чтобы выход включался при подаче отрицательного управляющего сигнала, контакт Pin2 нужно сделать нормально закрытым.
FLProg 6.3.1 - 7.3.4 - Linux

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#8

Сообщение IgorIv » 21.04.2020{, 16:10}

Сделал 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))))));






}
Вложения
Tinkercad_V1.jpg
FLProg_LAD_V1.jpg
FLProg_LAD_V1.jpg (2.8 КБ) 691 просмотр

Аватара пользователя
RedSky
Лейтенант
Сообщения: 575
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Ошибка компиляции

#9

Сообщение RedSky » 21.04.2020{, 16:43}

IgorIv, не пойму откуда у вас берётся строка
IgorIv писал(а):
21.04.2020{, 16:10}
digitalWrite (4, ((0) &&((!(digitalRead (2))))));
Должно быть

Код: Выделить всё

digitalWrite (4, (!(digitalRead (2))));
СпойлерПоказать
Безымянный.png
А так у вас выход всегда будет выключен (условие И с нулём).

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#10

Сообщение IgorIv » 21.04.2020{, 16:51}

Да, это странно. Комп W7\64
Вложения
FLProg_LAD_CMPL_V1.jpg

Аватара пользователя
RedSky
Лейтенант
Сообщения: 575
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Ошибка компиляции

#11

Сообщение RedSky » 21.04.2020{, 17:14}

Вообще то левую часть контакта тоже подключать надо (см. рисунок выше).

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#12

Сообщение IgorIv » 21.04.2020{, 17:19}

Отлично! Спасибо за подсказку!
Скетч выправился.
Симуляция не работает. Может я не так понял принцип работы контактов-катушек и монтаж неправильный?


void setup()
{
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
digitalWrite(4, 0);



}
void loop()
{






//Плата:1
digitalWrite (4, (digitalRead (2)));






}

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 790
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Ошибка компиляции

#13

Сообщение support » 21.04.2020{, 18:00}

Ну во первых у Вас включён подтягивающий резистор на входе. Потому резистор в цепи кнопки не нужен. Достаточно замыкать кнопкой вход на GND. А вот резистор на светодиод всё таки нужно поставить (500 ом - 1 Ком в зависимости от диода). Ну и проверить полярность подключения светодиода.
Автор программы FLProg.

IgorIv
Рядовой
Сообщения: 14
Зарегистрирован: 17.08.2018{, 14:16}
Репутация: 0
Имя: Игорь

Ошибка компиляции

#14

Сообщение IgorIv » 21.04.2020{, 18:03}

Всем СПАСИБО! Все работает!
На выходе будет катушка реле. Что для нее посоветуете?
Вложения
FLProg_LAD_V1R.jpg

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 790
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Ошибка компиляции

#15

Сообщение support » 21.04.2020{, 18:31}

IgorIv писал(а):
21.04.2020{, 18:03}
На выходе будет катушка реле. Что для нее посоветуете?
Посоветую готовый модуль реле для ардуино. Там уже и транзистор стоит, и чаще всего опторазвязка.
Автор программы FLProg.

Ответить

Вернуться в «Начинающим»