кнопка + 3 светодиода
кнопка + 3 светодиода
Добрый день форумчане! Прошу не большой помощи. Есть скетч (выдернул с управления RGB светодиодами) управаление кнопкой поочередно включать и потом не начинать сначала а возвращаться. Сейсас: красный, желтый, зеленый. и цикл начинается снова. Надо при следующих нажатиях: зеленый, желтый красный. И еще одна беда. При включении последнего светодиода требуется нажать кнопку ещё раз. Лишний.
#define BLED 9 //9 контакт для синего вывода RGB-светодиода
#define GLED 10 //10 контакт для зеленого вывода RGB-светодиода
#define RLED 11 //11 контакт для красного вывода RGB-светодиода
#define BUTTON 2 //2 контакт для кнопки
boolean lastButton = LOW; //предыдущее состояние кнопки
boolean currentButton = LOW; //текущее состояние кнопки
int ledMode = 0; //статус RGB-светодиода
void setup()
{
pinMode (BLED, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (GLED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 9 контакт) как выход
pinMode (RLED, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 9 контакт) как выход
pinMode (BUTTON, INPUT); //Устанавливаем контакт BUTTON(т.е. 2 контакт) как вход(опционально)
}
void loop()
{
currentButton = debounce(lastButton); //считываем состояние кнопки с применением "антидребезга"
if (lastButton == LOW && currentButton == HIGH) //если кнопка была нажата
{
ledMode++; //инкрементируем значение переменной
}
lastButton = currentButton; //сохраняем текущее состояние кнопки в предыдущее
if (ledMode == 4) ledMode = 0; //если прошли по циклу все режимы свечения светодиода, делаем сброс до 0
setMode(ledMode); //изменить режим светодиода
}
/*
* Функция антидребезга
* принимает предыдущее значение кнопки и возвращает текущее состояние кнопки с подавлением дребезга контактов
*/
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //считываем состояние кнопки
if (last != current) //если есть изменения
{
delay(5); //ждем 5мс
current = digitalRead(BUTTON); //считываем состояние кнопки
}
return current; //возвращаем, считанное состояние кнопки
}
/*
* Выбор режима работы светодиода
* Передача номера режима и его установка
* Функция ничего не возвращает
*/
void setMode(int mode)
{
//Красный
if (mode == 1)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
//Зеленый
else if (mode == 2)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}
//Синий
else if (mode == 3)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
}
#define BLED 9 //9 контакт для синего вывода RGB-светодиода
#define GLED 10 //10 контакт для зеленого вывода RGB-светодиода
#define RLED 11 //11 контакт для красного вывода RGB-светодиода
#define BUTTON 2 //2 контакт для кнопки
boolean lastButton = LOW; //предыдущее состояние кнопки
boolean currentButton = LOW; //текущее состояние кнопки
int ledMode = 0; //статус RGB-светодиода
void setup()
{
pinMode (BLED, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (GLED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 9 контакт) как выход
pinMode (RLED, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 9 контакт) как выход
pinMode (BUTTON, INPUT); //Устанавливаем контакт BUTTON(т.е. 2 контакт) как вход(опционально)
}
void loop()
{
currentButton = debounce(lastButton); //считываем состояние кнопки с применением "антидребезга"
if (lastButton == LOW && currentButton == HIGH) //если кнопка была нажата
{
ledMode++; //инкрементируем значение переменной
}
lastButton = currentButton; //сохраняем текущее состояние кнопки в предыдущее
if (ledMode == 4) ledMode = 0; //если прошли по циклу все режимы свечения светодиода, делаем сброс до 0
setMode(ledMode); //изменить режим светодиода
}
/*
* Функция антидребезга
* принимает предыдущее значение кнопки и возвращает текущее состояние кнопки с подавлением дребезга контактов
*/
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //считываем состояние кнопки
if (last != current) //если есть изменения
{
delay(5); //ждем 5мс
current = digitalRead(BUTTON); //считываем состояние кнопки
}
return current; //возвращаем, считанное состояние кнопки
}
/*
* Выбор режима работы светодиода
* Передача номера режима и его установка
* Функция ничего не возвращает
*/
void setMode(int mode)
{
//Красный
if (mode == 1)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
//Зеленый
else if (mode == 2)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}
//Синий
else if (mode == 3)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
}
- Реклама
Re: кнопка + 3 светодиода
Код: Выделить всё
signed char direction = 1;
unsigned char mode = 1;
function KeyPressed()
{
if (direction)
{
if (mode == 3)
direction = -1;
}
else
if (mode == 1)
direction = 1;
mode += direction;
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
switch (mode)
{
case 1:
digitalWrite(RLED, HIGH);
break;
case 2:
digitalWrite(GLED, HIGH);
break;
case 3:
digitalWrite(BLED, HIGH);
break;
}
}Re: кнопка + 3 светодиода
Доброго дня! Благодарность моя не знает границ. Огромное спасибо. Честно говоря не ожидал.
Пытаюсь сделать дубль автоматики открытия ворот - жалюзи. Успех на лицо, один мотор спалил.
Оказывается там не все так просто. За помощь (консультацию) готов отблагодарить. Все дело в том что начинал с детекторных приемников и ремонта радио аппаратуры. но это было еще в 60-х. С ув. Петр.
Добавлено after 22 minutes 26 seconds:
Что то пошло не так.
строка function KeyPressed() при компиляции подсвечивается. Может какая мелочь, но в скетчах я не особо.
Уже возраст 70+
Пытаюсь сделать дубль автоматики открытия ворот - жалюзи. Успех на лицо, один мотор спалил.
Оказывается там не все так просто. За помощь (консультацию) готов отблагодарить. Все дело в том что начинал с детекторных приемников и ремонта радио аппаратуры. но это было еще в 60-х. С ув. Петр.
Добавлено after 22 minutes 26 seconds:
Что то пошло не так.
строка function KeyPressed() при компиляции подсвечивается. Может какая мелочь, но в скетчах я не особо.
Уже возраст 70+
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
вообще не понятно что вы делаетеПытаюсь сделать дубль автоматики открытия ворот - жалюзи. Успех на лицо, один мотор спалил.
опишите подробнее что , на чем , желательно схему.
Добавлено after 19 minutes 38 seconds:
Надо при следующих нажатиях: зеленый, синий, красный. И еще одна беда. При включении последнего светодиода требуется нажать кнопку ещё раз. Лишний.
Спойлер
#define BLED 9 //9 контакт для синего вывода RGB-светодиода#define GLED 10 //10 контакт для зеленого вывода RGB-светодиода
#define RLED 11 //11 контакт для красного вывода RGB-светодиода
#define BUTTON 2 //2 контакт для кнопки
boolean lastButton = LOW; //предыдущее состояние кнопки
boolean currentButton = LOW; //текущее состояние кнопки
int ledMode = 0; //статус RGB-светодиода
void setup()
{
pinMode (BLED, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (GLED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 10 контакт) как выход
pinMode (RLED, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 11 контакт) как выход
pinMode (BUTTON, INPUT); //Устанавливаем контакт BUTTON(т.е. 2 контакт) как вход(опционально)
}
void loop()
{
currentButton = debounce(lastButton); //считываем состояние кнопки с применением "антидребезга"
if (lastButton == LOW && currentButton == HIGH) //если кнопка была нажата
{
ledMode++; //инкрементируем значение переменной
}
lastButton = currentButton; //сохраняем текущее состояние кнопки в предыдущее
if (ledMode == 3) ledMode = 0; //если прошли по циклу все режимы свечения светодиода, делаем сброс до 0
switch(ledMode) //изменить режим светодиода
{
case 0:
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
break;
case 1:
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
break;
case 2:
digitalWrite(RLED, HIGH); //горит
digitalWrite(GLED, LOW); //не горит
digitalWrite(BLED, LOW); //не горит
break;
}
}
/*
* Функция антидребезга
* принимает предыдущее значение кнопки и возвращает текущее состояние кнопки с подавлением дребезга контактов
*/
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //считываем состояние кнопки
if (last != current) //если есть изменения
{
delay(5); //ждем 5мс
current = digitalRead(BUTTON); //считываем состояние кнопки
}
return current; //возвращаем, считанное состояние кнопки
}
- Вложения
-
- svetofor.zip
- (18.05 КБ) 681 скачивание
Re: кнопка + 3 светодиода
Доброго дня всем! И спасибо за помощь.
Пытаюсь сделать дубликат автоматики радиоуправления гаражными воротами. Это шторка из узких ламелей и накручивается она на вал. Внутри асинхронный двигатель и два концевых выключателя. С мотора выходит три провода: один общий и два на вращение в разные стороны. Этой автоматике сто лет в обед. Остался один брелок и тот еле дышит. Дубликат брелока приобрести нет возможности. Эта серия давно не выпускается. И белорусы так сказали. В приемнике стоит прошитая микросхема и алгоритм работы такой: при достижении крайней точки срабатывает концевой выключатель и шторка останавливается. (Радио управление одно канальное) При очередном нажатии уже включается реверс. Кроме того если через 40 секунд не поступает команда, с последней задействованной обмотки снимается питание. Тогда шторка начинает движение при нажатии на кнопку два раза. Вроде все.
Вот хочу по принципу поочередности включения светодиодов подавать питание на обмотки двигателя. Может что и получится. С ув. Петр
Пытаюсь сделать дубликат автоматики радиоуправления гаражными воротами. Это шторка из узких ламелей и накручивается она на вал. Внутри асинхронный двигатель и два концевых выключателя. С мотора выходит три провода: один общий и два на вращение в разные стороны. Этой автоматике сто лет в обед. Остался один брелок и тот еле дышит. Дубликат брелока приобрести нет возможности. Эта серия давно не выпускается. И белорусы так сказали. В приемнике стоит прошитая микросхема и алгоритм работы такой: при достижении крайней точки срабатывает концевой выключатель и шторка останавливается. (Радио управление одно канальное) При очередном нажатии уже включается реверс. Кроме того если через 40 секунд не поступает команда, с последней задействованной обмотки снимается питание. Тогда шторка начинает движение при нажатии на кнопку два раза. Вроде все.
Вот хочу по принципу поочередности включения светодиодов подавать питание на обмотки двигателя. Может что и получится. С ув. Петр
- Реклама
- valentinovich
- Держит паяльник хвостом
- Сообщения: 999
- Зарегистрирован: Ср окт 04, 2017 20:47:40
Re: кнопка + 3 светодиода
Во первых - в наше время такого не может быть (совсем).Дубликат брелока приобрести нет возможности.
Во вторых - озвучьте рабочую частоту и название вашей автоматики. Это поможет подобрать вам новый брелок, который запросто станет дублем вашего.
Иначе дальнейший разговор, акромя откровенного флуда, не будет иметь смысла.
Если у вас с этим будут затруднения, то проще вам будет за почти копейки на Али прикупить новый комплект управления (Прм. с парой брелков).
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
вот парень делал, подойдет? или че подправить?
https://www.radiokot.ru/circuit/digital/automat/35/
https://www.radiokot.ru/circuit/digital/automat/35/
Re: кнопка + 3 светодиода
Труда вложено не мало, но пульт в моих воротах работает от одной кнопки практически при той же функциональности.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
мне тоже интересно стало как написать скеч с концевиками и одной кнопкой управления...

#define LED 10 //10 контакт для зеленого вывода RGB-светодиода
#define MOTOR_CLOSE 11 //11 контакт для обмотки мотора закрывания
#define BUTTON 2 //2 контакт для кнопки или пульта
#define SWITCH_OPENED 3 // концевик полностью открытых ворот
#define SWITCH_CLOSED 4 // концевик полностью закрытых ворот
boolean flag_close=HIGH;//флаг
boolean current_close=HIGH;// переменная концевика
boolean flag_open=HIGH;//флаг
boolean current_open=HIGH;// переменная концевика
boolean current=HIGH;// переменная кнопки
boolean last=HIGH;// переменная кнопки
int Mode = 1; // режим
void setup()
{
pinMode (MOTOR_OPEN, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (LED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 10 контакт) как выход
pinMode (MOTOR_CLOSE, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 11 контакт) как выход
pinMode (BUTTON, INPUT_PULLUP); //установить на данный порт высокий уровень сигнала.
pinMode(SWITCH_OPENED, INPUT_PULLUP);//установить на данный порт высокий уровень сигнала.
pinMode(SWITCH_CLOSED, INPUT_PULLUP);//установить на данный порт высокий уровень сигнала.
}
void loop()
{
//==========================
current = digitalRead(BUTTON);
if ( current_open==HIGH && current_close==HIGH){play_1();flag_open=HIGH; flag_close=HIGH;} // если концевик открытия и концевик закрытия НЕ нажаты то режим ОТКРЫТЬ/СТОП/ЗАКРЫТЬ/СТОП флаги поднять
current_open=digitalRead(SWITCH_OPENED);
if (current_open==LOW && flag_open==HIGH ){ Mode=1; flag_open=LOW; flag_close=HIGH; } // если концевик открытия нажат И ФЛАГ ПОДНЯТ то режим СТОП, флаг_открыть опустить флаг_закрыт поднять
if (current_open==LOW && flag_open==LOW ){ play_2() ;} // если концевик открытия нажат И ФЛАГ ОПУЩЕН то режим СТОП/ОТКРЫТЬ
current_close=digitalRead(SWITCH_CLOSED);
if (current_close==LOW && flag_close==HIGH){ Mode=1; flag_close=LOW; flag_open==HIGH; } // если концевик закрытия нажат И ФЛАГ ПОДНЯТ то режим СТОП, флаг_закрыт опустить флаг_открыть поднять
if (current_close==LOW && flag_close==LOW) { play_3();} // если концевик закрытия нажат И ФЛАГ ОПУЩЕН то режим СТОП/ЗАКРЫТЬ
//===========
//===========
switch(Mode) //изменить режим светодиода
{
case 0://РЕЖИМ ОТКРЫТЬ
digitalWrite(LED, LOW );
digitalWrite(MOTOR_OPEN, HIGH);
digitalWrite(MOTOR_CLOSE, LOW );
break;
case 1://РЕЖИМ СТОП
digitalWrite(LED, HIGH );
digitalWrite(MOTOR_OPEN, LOW );
digitalWrite(MOTOR_CLOSE, LOW);
break;
case 2://РЕЖИМ ЗАКРЫТЬ
digitalWrite(LED, LOW );
digitalWrite(MOTOR_OPEN, LOW);
digitalWrite(MOTOR_CLOSE, HIGH);
break;
case 3://РЕЖИМ СТОП
digitalWrite(LED, HIGH );
digitalWrite(MOTOR_OPEN, LOW );
digitalWrite(MOTOR_CLOSE, LOW);
break;
}
}
//=======кнопки============
void play_1(){
current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if ( current!=last ) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 4) Mode = 0; //если прошли по циклу все режимы ОТКРЫТЬ/СТОП/ЗАКРЫТЬ/СТОП, делаем сброс до 0
}
//-----------------------------------------------------------------------------------------------------
void play_2(){
boolean current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if (last != current) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 2) Mode = 0; //если прошли по циклу режимы СТОП/ОТКРЫТЬ, делаем сброс до 0
}
//------------------------------------------------------------------------------------------------------
void play_3(){
boolean current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if (last != current) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 3) Mode = 1; //если прошли по циклу режимы СТОП/ЗАКРЫТЬ, делаем сброс до 1
}
есть замечания, предложения, комментарии?
осталось пульт приделать и и и...
вот навоялпульт в моих воротах работает от одной кнопки практически при той же функциональности.
Спойлер
#define MOTOR_OPEN 9 //9 контакт для обмотки мотора открывания#define LED 10 //10 контакт для зеленого вывода RGB-светодиода
#define MOTOR_CLOSE 11 //11 контакт для обмотки мотора закрывания
#define BUTTON 2 //2 контакт для кнопки или пульта
#define SWITCH_OPENED 3 // концевик полностью открытых ворот
#define SWITCH_CLOSED 4 // концевик полностью закрытых ворот
boolean flag_close=HIGH;//флаг
boolean current_close=HIGH;// переменная концевика
boolean flag_open=HIGH;//флаг
boolean current_open=HIGH;// переменная концевика
boolean current=HIGH;// переменная кнопки
boolean last=HIGH;// переменная кнопки
int Mode = 1; // режим
void setup()
{
pinMode (MOTOR_OPEN, OUTPUT); //Устанавливаем контакт BLED(Blue LED, т.е 9 контакт) как выход
pinMode (LED, OUTPUT); //Устанавливаем контакт GLED(Green LED, т.е 10 контакт) как выход
pinMode (MOTOR_CLOSE, OUTPUT); //Устанавливаем контакт RLED(Red LED, т.е 11 контакт) как выход
pinMode (BUTTON, INPUT_PULLUP); //установить на данный порт высокий уровень сигнала.
pinMode(SWITCH_OPENED, INPUT_PULLUP);//установить на данный порт высокий уровень сигнала.
pinMode(SWITCH_CLOSED, INPUT_PULLUP);//установить на данный порт высокий уровень сигнала.
}
void loop()
{
//==========================
current = digitalRead(BUTTON);
if ( current_open==HIGH && current_close==HIGH){play_1();flag_open=HIGH; flag_close=HIGH;} // если концевик открытия и концевик закрытия НЕ нажаты то режим ОТКРЫТЬ/СТОП/ЗАКРЫТЬ/СТОП флаги поднять
current_open=digitalRead(SWITCH_OPENED);
if (current_open==LOW && flag_open==HIGH ){ Mode=1; flag_open=LOW; flag_close=HIGH; } // если концевик открытия нажат И ФЛАГ ПОДНЯТ то режим СТОП, флаг_открыть опустить флаг_закрыт поднять
if (current_open==LOW && flag_open==LOW ){ play_2() ;} // если концевик открытия нажат И ФЛАГ ОПУЩЕН то режим СТОП/ОТКРЫТЬ
current_close=digitalRead(SWITCH_CLOSED);
if (current_close==LOW && flag_close==HIGH){ Mode=1; flag_close=LOW; flag_open==HIGH; } // если концевик закрытия нажат И ФЛАГ ПОДНЯТ то режим СТОП, флаг_закрыт опустить флаг_открыть поднять
if (current_close==LOW && flag_close==LOW) { play_3();} // если концевик закрытия нажат И ФЛАГ ОПУЩЕН то режим СТОП/ЗАКРЫТЬ
//===========
//===========
switch(Mode) //изменить режим светодиода
{
case 0://РЕЖИМ ОТКРЫТЬ
digitalWrite(LED, LOW );
digitalWrite(MOTOR_OPEN, HIGH);
digitalWrite(MOTOR_CLOSE, LOW );
break;
case 1://РЕЖИМ СТОП
digitalWrite(LED, HIGH );
digitalWrite(MOTOR_OPEN, LOW );
digitalWrite(MOTOR_CLOSE, LOW);
break;
case 2://РЕЖИМ ЗАКРЫТЬ
digitalWrite(LED, LOW );
digitalWrite(MOTOR_OPEN, LOW);
digitalWrite(MOTOR_CLOSE, HIGH);
break;
case 3://РЕЖИМ СТОП
digitalWrite(LED, HIGH );
digitalWrite(MOTOR_OPEN, LOW );
digitalWrite(MOTOR_CLOSE, LOW);
break;
}
}
//=======кнопки============
void play_1(){
current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if ( current!=last ) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 4) Mode = 0; //если прошли по циклу все режимы ОТКРЫТЬ/СТОП/ЗАКРЫТЬ/СТОП, делаем сброс до 0
}
//-----------------------------------------------------------------------------------------------------
void play_2(){
boolean current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if (last != current) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 2) Mode = 0; //если прошли по циклу режимы СТОП/ОТКРЫТЬ, делаем сброс до 0
}
//------------------------------------------------------------------------------------------------------
void play_3(){
boolean current = digitalRead(BUTTON); // считываем текущее состояние кнопки
if (last != current) { // если состояние изменилось
delay(5); // делаем задержку на 5 мсек, пока уляжется дребезг
current = digitalRead(BUTTON); // и считываем снова
}
if (last == LOW && current == HIGH) //если кнопка была нажата
{
Mode++; //инкрементируем значение переменной
}
last = current; //сохраняем текущее состояние кнопки в предыдущее
if (Mode == 3) Mode = 1; //если прошли по циклу режимы СТОП/ЗАКРЫТЬ, делаем сброс до 1
}
осталось пульт приделать и и и...
- Вложения
-
- VOROTA.zip
- (40.73 КБ) 445 скачиваний
Re: кнопка + 3 светодиода
Опоньки!?? Это значит челюсть отпала. Круто.
какие комментарии... надо комплектующие и пробовать. Радиорынок!! Я уже еду.
Ради интереса сниму и сфоткаю рабочую плату исполнительную, приемник. Спасибо. С ув. Петр
какие комментарии... надо комплектующие и пробовать. Радиорынок!! Я уже еду.
Ради интереса сниму и сфоткаю рабочую плату исполнительную, приемник. Спасибо. С ув. Петр
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
один вопрос у вас концевики работают на замыкание или размыкание контактов ? я написал под замыкающиеся!!!
и наверно надо схему нарисовать, из каких деталек, как питать будем ардуино, да и вообще может по ходу чо то поправить надо будет
скеч написан как я это вижу и понял из ваши вводных...
и наверно надо схему нарисовать, из каких деталек, как питать будем ардуино, да и вообще может по ходу чо то поправить надо будет
-
Самсусамыч
Re: кнопка + 3 светодиода
Управление рольставнями ворот, лучше применить модульного типа. Радиомодуль с брелком управляет исполнительным механизмом…
Радиомодуль можно применить подобного типа:
https://aliexpress.ru/item/32873494738. ... 5483003867
Механизм управления можно сделать на МК или на логических микросхемах…
Если будет интересно – могу написать свой вариант алгоритма управления на МК с привязкой выше упомянутого радиомодуля (или подобного).
Добавлено after 49 seconds:
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3998344#p3998344"]один вопрос у вас концевики работают на замыкание или размыкание контактов ? я написал под замыкающиеся!!![/uquote]
Концевые выключатели должны работать на разрыв – так надёжней.
Радиомодуль можно применить подобного типа:
https://aliexpress.ru/item/32873494738. ... 5483003867
Механизм управления можно сделать на МК или на логических микросхемах…
Если будет интересно – могу написать свой вариант алгоритма управления на МК с привязкой выше упомянутого радиомодуля (или подобного).
Добавлено after 49 seconds:
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3998344#p3998344"]один вопрос у вас концевики работают на замыкание или размыкание контактов ? я написал под замыкающиеся!!![/uquote]
Концевые выключатели должны работать на разрыв – так надёжней.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
да интересный вариантлучше применить модульного типа
очень любопытноМеханизм управления можно сделать на МК или на логических микросхемах…
Если будет интересно – могу написать свой вариант алгоритма управления на МК с привязкой выше упомянутого радиомодуля (или подобного).
Добавлено after 42 minutes 28 seconds:
по началу не придал особого внимания... а подумавКонцевые выключатели должны работать на разрыв – так надёжней.
если пропадет контакт, у закрытых ворот, верхнего концевика / ворота просто не откроются, не страшно /
а вот ворота закрываются/открываются и не сработает концевик
и тут что слабее обмотка, редуктор...
и наверно хоть какую-нибудь индикацию добавить надо. будем знать что в мозгах у ардуине твориться
к примеру RGB светодиод : зеленый - ворота открываются
красный - стоп
синий - закрываются
желтый - авария
ну и т.д пока не придумал еще чего
что скажете??? нужно все это или что то другое?
-
Самсусамыч
Re: кнопка + 3 светодиода
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3998602#p3998602"]что скажете??? нужен таймер ?[/uquote]
Зависит от алгоритма. В некоторых случаях он не нужен.
https://radiokot.ru/forum/viewtopic.php?f=3&t=174782
В место модуля GSM можно применить радиомодуль с брелком…
Алгоритм конечно необходимо немного поправить с изменением схемы, чтобы управлять рольставней. Но в целом (на мой взгляд) алгоритм вполне нормальный.
Можно конечно исполнительное устройство сделать и без использования МК, на релейной схеме, но тогда придётся отказаться от таймера (который особо и не нужен при данной реализации).
В общим подожду, что ответит ТС. Может ему вполне достаточно Вашего варианта.
Зависит от алгоритма. В некоторых случаях он не нужен.
На мой взгляд, все эти цветные дополнения быстро забываются и не несут в дальнейшем информативной визуализации. Чем проще индикация, тем понятнее… индикацию состояния концевых выключателей можно сделать, как и индикацию при открытии/закрытии. Остальное делать лишнее… что касается аварийных режимов, так их и так сразу видно, когда ворота не двигаются при их управлении.что скажете??? нужно все это или что то другое?
Я уже писал подобный алгоритм для распашных ворот:очень любопытно
https://radiokot.ru/forum/viewtopic.php?f=3&t=174782
В место модуля GSM можно применить радиомодуль с брелком…
Алгоритм конечно необходимо немного поправить с изменением схемы, чтобы управлять рольставней. Но в целом (на мой взгляд) алгоритм вполне нормальный.
Можно конечно исполнительное устройство сделать и без использования МК, на релейной схеме, но тогда придётся отказаться от таймера (который особо и не нужен при данной реализации).
В общим подожду, что ответит ТС. Может ему вполне достаточно Вашего варианта.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
на каком языке пишите? хотел посмотреть исходник и не нашёлЯ уже писал подобный алгоритм для распашных ворот:
-
Самсусамыч
Re: кнопка + 3 светодиода
Пишу на Algorithm Builder (АВ). Других языков не знаю… ввиду самообразования в данной области, мои исходники далеки с точки зрения правильного изложения алгоритмов, от классического исполнения, потому их стыдливо выкладывать на всеобщее обозрение.
Для меня, главное как работает устройство в конечном исполнении… всё остальное второстепенно. Да и с данным языком мало кто знаком. 
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
нет мне кажется индикация, хотя бы минимальная должна быть. типа зашел в гараж на стеночки коробочка светится светодиодик зеленый воНа мой взгляд, все эти цветные дополнения быстро забываются и не несут в дальнейшем информативной визуализации. Чем проще индикация, тем понятнее… индикацию состояния концевых выключателей можно сделать, как и индикацию при открытии/закрытии. Остальное делать лишнее… что касается аварийных режимов, так их и так сразу видно, когда ворота не двигаются при их управлении.
в общем приделал я вот такой светодиод
зеленый - стоп
желтый - открывается
синий - закрывается
красный - авария
и приделал таймер сейчас выставил на 10 секунд, если нужно другое время ищем такую строчку
int STOP = 10000; // Остановится двигатель через 10 секунд (1 сек = 1000 миллисекунд ) Вместо 10000 подставьте нужное вам значение
попробуйте не понравиться удалю
- Вложения
-
- VOROTA.zip
- (94 КБ) 398 скачиваний
Re: кнопка + 3 светодиода
Добрый день всем! Подскажите как сюда воткнуть изображение приемника ?
В хостинге изображений ОНО уже есть...
В хостинге изображений ОНО уже есть...
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: кнопка + 3 светодиода
нажать на картинку потом на фотоаппарат нажать выскочит ссылка ее и вставьте в сообщения
Re: кнопка + 3 светодиода
В инструкции к моему блоку написано что напряжение с обмотки снимается через 40-45 секунд. Шторка открывается за 30-35. По моему так. Концевые выключатели в двигателе НЗ , при полном откр. или наоборот они размыкаются. Это регулируется двумя винтиками на двигателе. Вспомнил отсчет времени на снятие напряжения с обмотки начинается после срабатывания концевого выключателя
Добавлено after 8 minutes 1 second:

Добавлено after 8 minutes 1 second:


