Это функция, которой одним из аргументов передаётся номер пина, который хранится в переменной pinMotor. Эта строка НЕ МЕНЯЕТ значение переменной pinMotor. У Вас в коде вверху было написано: const int pinMotor = 12; -- здесь переменной pinMotor присваивается число 12. ВСЁ, больше эта переменная (её значение) нигде не меняется. Она всегда равна 12 и никогда не будет равна HIGH или LOW. Так поятно?
Ещё раз: в этой строке переменная pinMotor не становится HIGH. Функции работают по-другому.
Ну правда уже смешно, дорогой Долгов! Вы пишите если 12 тождественно равно 1 в условии. Счас меня забьют, но мне проще писать в аргументах (12,1) чем ("пинрастакойко","высокий"), как раз чтоб такие фигусы не получались.
При подаче питания светодиод, иммитирующмй мотор не вспыхивает. При нажатии кнопки Пуск происходит включение и самозахват. При нажатии кнопки Стоп происходит отключение. Если при удерживаемой кнопке пуск нажать кнопку стоп - светодиод не вспыхивает.
Пришлось в конце скетча добавить пару строчек. Иначе светодиод гас только при нажатой кнопке стоп. Потом опть загорался.
int onnButton = 3; //Кнопка "Пуск"
int offButton = 4; //Кнопка "Стоп"
int pinMotor = 12; // На реле включение мотора
int bloc = 1; // Некиий аналог блокконтактов (разомкнут)
void setup() {
pinMode(onnButton, INPUT_PULLUP); //Кнопка не нажата
pinMode(offButton, INPUT_PULLUP); //Кнопка не нажата
// при двукнопочном управлении антидребезг не нужен
pinMode (pinMotor, OUTPUT);
//
}
void loop() {
int vkl = digitalRead (onnButton); // Опрос кнопки пуск
if (vkl ==LOW || pinMotor == HIGH){ //Нажимаем кнопку "Пуск"
bloc = 0; //При этом замыкается блокконтакт
}
int otkl = digitalRead (offButton); // опрос кнопки стоп
if(bloc == 0 && otkl ==HIGH){
digitalWrite(pinMotor, HIGH);} //Включается мотор и удерживается блокконтакт
else{
digitalWrite(pinMotor, LOW);
bloc = 1;
}
}
Спасибо Деду Семёну за помощь.
Ну правда уже смешно, дорогой Долгов! Вы пишите если 12 тождественно равно 1 в условии. Счас меня забьют, но мне проще писать в аргументах (12,1) чем ("пинрастакойко","высокий"), как раз чтоб такие фигусы не получались.
Так нельзя! Как учил меня Великий Дима ... все пины надо в "чердаке" распределять. Дабы потом, если этот номер понадобится для другой задачи ... просто заменяешь цифру и нет необходимости лазить по всему коду.
Долгов, а сколько раз надо про (pinMotor == HIGH) сказать - чтобы хотя бы убрали это из кода? На то, что вы поймете. что в ней что-то не так - уже не надеюсь.
Не на Амперке ... на ESP8266.ru. (Амперка мне не понравилась чем то ... духом что ли). Параллельно строю умную кухню. На базе 8266 или 32. Вот свёрлами закупллюсь на 0,6 мм ... буду плату изготавливать. Датчиков и тиристоров с оптронами даже с излишком.
Вы сделали одного тупого человека чуть менее тупым, спасибо. Почитала про конечные автоматы, заполненная таблица стала выглядеть таким образом:
Под неё был написан код:
const int tP = 7; //кнопка ON
const int dP = 5; //кнопка OFF
const int lP = 9; //светодиод
int tS = 0;
int dS = 0;
int lS = 0;
void setup() {
pinMode(lP, OUTPUT);
pinMode(tP, INPUT);
pinMode(dP, INPUT);
}
void loop(){
tS = digitalRead(tP);
dS = digitalRead(dP);
lS = digitalRead(lP);
if (tS == LOW && dS == LOW && lS == LOW){
do tS = digitalRead(tP);
while (tS == LOW);
digitalWrite(lP, HIGH);}
else if (tS == LOW && dS == LOW && lS == HIGH){
do dS = digitalRead(dP);
while (dS == LOW);
digitalWrite(lP, LOW);}
else if (tS == HIGH && dS == LOW && lS == HIGH){
tS = digitalRead(tP);
dS = digitalRead(dP);
if (tP == LOW){
do dS = digitalRead(dP);
while (dS == LOW);
digitalWrite(lP, LOW);}
else if (dP == HIGH){
digitalWrite(lP, LOW);}
}
}
И всё равно, при нажатии OFF с нажатой ON светодиод начинает быстро моргать или просто продолжает светиться, а при отпускании OFF с нажатой ON светодиод снова светится. То ли лыжи не едут, то ли...
дак если ты учиться не хочешь, тебя не только я доставать буду
Хочу и учусь. Чужие коды не копирую. Свои пытаюсь писать.
Спорить с дедами мне нельзя (согласно правилам форума), поэтому остаёься только предлагать свои варианты.
Подожду может кто разъяснит ошибки в строке:
digitalWrite(pinMotor, HIGH)?
Честно ... не нахожу.
Хочу и учусь. Чужие коды не копирую. Свои пытаюсь писать.
Спорить с дедами мне нельзя (согласно правилам форума), поэтому остаёься только предлагать свои варианты.
Подожду может кто разъяснит ошибки в строке:
digitalWrite(pinMotor, HIGH)?
Честно ... не нахожу.
в этой строке -нету.
в этой есть
if (vkl ==LOW || pinMotor == HIGH)
а что с этой строкой не так?
digitalWrite (pinMotor, HIGH);
Это функция, которой одним из аргументов передаётся номер пина, который хранится в переменной pinMotor. Эта строка НЕ МЕНЯЕТ значение переменной pinMotor. У Вас в коде вверху было написано: const int pinMotor = 12; -- здесь переменной pinMotor присваивается число 12. ВСЁ, больше эта переменная (её значение) нигде не меняется. Она всегда равна 12 и никогда не будет равна HIGH или LOW. Так поятно?
Ещё раз: в этой строке переменная pinMotor не становится HIGH. Функции работают по-другому.
скачай в торренте книгу Саймон Монк "Программируем Ардуино" 2016г.
Ну правда уже смешно, дорогой Долгов! Вы пишите если 12 тождественно равно 1 в условии. Счас меня забьют, но мне проще писать в аргументах (12,1) чем ("пинрастакойко","высокий"), как раз чтоб такие фигусы не получались.
Отладил. В таком виде работает, как задумано.
При подаче питания светодиод, иммитирующмй мотор не вспыхивает. При нажатии кнопки Пуск происходит включение и самозахват. При нажатии кнопки Стоп происходит отключение. Если при удерживаемой кнопке пуск нажать кнопку стоп - светодиод не вспыхивает.
Пришлось в конце скетча добавить пару строчек. Иначе светодиод гас только при нажатой кнопке стоп. Потом опть загорался.
Вы точно в дверь сумели замок врезать?
Ну правда уже смешно, дорогой Долгов! Вы пишите если 12 тождественно равно 1 в условии. Счас меня забьют, но мне проще писать в аргументах (12,1) чем ("пинрастакойко","высокий"), как раз чтоб такие фигусы не получались.
Так нельзя! Как учил меня Великий Дима ... все пины надо в "чердаке" распределять. Дабы потом, если этот номер понадобится для другой задачи ... просто заменяешь цифру и нет необходимости лазить по всему коду.
Вы точно в дверь сумели замок врезать?
Этот вопрос из другой темы.
Долгов, а сколько раз надо про (pinMotor == HIGH) сказать - чтобы хотя бы убрали это из кода? На то, что вы поймете. что в ней что-то не так - уже не надеюсь.
Так же уходил от тебя на другой форум, под другим именем. Так ты меня и там доставал.
Пришлось вернуться.
может зря вернулись?
Так раьотает же! Устойчиво и надёжно.
Давай мирно ... убери ты ... а я сразу проверю. Схему не разбирал. Только без штучек сокращённого программирования.
Я не Долгов. Долгова - это девичья фамилия жены. Моя слишком громкая для ника.
"может зря вернулись?"
Так скучать же будете! Где Борис!? Да где Борис.
Я обучаемое существо. Не волнуйся. Скоро таким же стану ... лет через 10 ... 15.
Я не Долгов. Долгова - это девичья фамилия жены. Моя слишком громкая для ника.
Ипполит Матвеевич дрогнул.
– Этого нельзя.
– Почему-с?
– Там придется прописаться.
– Паспорт не в порядке?
– Да нет, паспорт в порядке, но в городе мою фамилию хорошо знают. Пойдут толки.
Концессионеры в раздумьи помолчали.
– А фамилия Михельсон вам нравится? – неожиданно спросил великолепный Остап.
– Какой Михельсон? Сенатор?
– Нет. Член союза совторгслужащих.
– Я вас не пойму.
– Это от отсутствия технических навыков.
Пришлось вернуться.
Дык, оно ж ни от ника, ни от статуса не зависит. На той же амперке иногда статус "нуб" а иным "гуру" сто очков даст.
Не на Амперке ... на ESP8266.ru. (Амперка мне не понравилась чем то ... духом что ли). Параллельно строю умную кухню. На базе 8266 или 32. Вот свёрлами закупллюсь на 0,6 мм ... буду плату изготавливать. Датчиков и тиристоров с оптронами даже с излишком.
Амперка мне не понравилась чем то ... духом что ли
Мне, тоже.
Дед! Ты не спишь? Ну, держись!
Я чесна предупреждал, к 17 по Масскве я вхлам.
Так и случилось.
Я тоже хочу .. при внуке было неудобно. Вот Долгова ужин подаст - так попробую догнать.
Вы сделали одного тупого человека чуть менее тупым, спасибо. Почитала про конечные автоматы, заполненная таблица стала выглядеть таким образом:
Под неё был написан код:
И всё равно, при нажатии OFF с нажатой ON светодиод начинает быстро моргать или просто продолжает светиться, а при отпускании OFF с нажатой ON светодиод снова светится. То ли лыжи не едут, то ли...
заполненная таблица стала выглядеть таким образом:
Боюсь, что Вы не поняли смысла этой таблицы.
Фразой "Дождаться пока нажмётся ..." Вы саму её суть перечеркнули. Потому ничего и не получилось.
У Вас есть два действия: "зажечь" и "погасить". Никаких "дождаться" у Вас нет. Все "дожидания" отработаются сами через текущее состояние.
Сделайте таблицу нормально и покажите.
Попробовай код из #20
Печаль. Пойду дальше развиваться