Ви не увійшли.
Сторінки 1
Есть желание и начальная стадия проэкта управления откатными воротами с функцией открытия через приемник 433МГц (или WIFIприемник) и просто с кнопки. Принципиальное желание осужествить это на платформе АРДУИНО УНО или на плате ATtini t88.
По сути не такой уже и терминатор, но учитывая что платформа ардуино для меня лично начала свое существование месяц где то назад - дается не легко.
Неактивний
концевик, по моему мнению, будет один на открытие и закрытие. Начальный скетч до горя печальный, но если есть в хозяйстве лишние пальцы и масса приводов - можно использовать!)))
По предварительному проэкту оказалось есть возможность одновременно запускать привод в обоих направлениях)))
Еще я не научился избавляться от delay(), по сему не смог осуществить на макате мигание двумя светодиодами в процессе открывания или закрывания ворот. Строго не судите пожалуйста, помогите разобраться.
#include <GyverButton.h>
GButton Knopka (3,HIGH_PULL,NORM_OPEN);
GButton Knopka2 (10,HIGH_PULL,NORM_OPEN);
int releOpen = 8;
int releClose = 9;
int LedB = 7;
int LedR = 6;
GButton Open (5,HIGH_PULL,NORM_OPEN);
GButton Close (4,HIGH_PULL,NORM_OPEN);
void setup() {
Serial.begin(9600);
Knopka.setDebounce(100);
Knopka2.setDebounce(100);
pinMode(releOpen, OUTPUT);
pinMode(releClose, OUTPUT);
pinMode (LedB, OUTPUT);
pinMode (LedR, OUTPUT);
Open. setDebounce (100);
Close. setDebounce (100);
}
void loop() {
Knopka.tick();
Knopka2.tick();
Open.tick();
Close.tick();
//____________открытие ворот__________
if (Knopka.isPress()){
digitalWrite (releOpen, HIGH && Serial.println ("Ворота открываются") );
if (releOpen || releClose, HIGH)
{ digitalWrite (LedB,HIGH);
digitalWrite (LedR,LOW);
}
}
if (Open.isPress()) {
digitalWrite (releOpen, LOW);
digitalWrite (LedB,LOW);
digitalWrite (LedR,HIGH);
Serial.println ("Ворота открыты");
}
//_____________________закрытие ворот_____________
if (Knopka2.isPress()){
digitalWrite (releClose, HIGH && Serial.println ("Ворота закрываются"));
if (releClose, HIGH)
{ digitalWrite (LedB,HIGH);
digitalWrite (LedR,LOW);
}
}
if (Close.isPress()) {
digitalWrite (releClose, LOW);
digitalWrite (LedB,LOW);
digitalWrite (LedR,HIGH);
Serial.println ("Ворота закрыты");
}
}
Неактивний
После:
#include <GyverButton.h>
отпадает желание читать дальше.
Я не буду помогать с кодом, но только потому что уверен - даже если у Вас получится что-то функционирующее, это не пойдет на пользу, а скорее наоборот. Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams (она на ENG, естественно, но даже если со словарём - лучше чем Gyver). Успехов!
После:
#include <GyverButton.h>
отпадает желание читать дальше.
Я не буду помогать с кодом, но только потому что уверен - даже если у Вас получится что-то функционирующее, это не пойдет на пользу, а скорее наоборот. Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams (она на ENG, естественно, но даже если со словарём - лучше чем Gyver). Успехов!
+ 100 !
Неактивний
#include <GyverButton.h>
Не читал, но осуждаю
Подскажите как правильно сделать опрос кнопки (концевика ворот) перед выполнением команды открытия или закрытия, т.к. у меня выходит что после срабатывания концевика, допустим, открытия, после нажатия кнопки открыть - снова продолжает открывать...
как-то так: если нажата кнопка соответствующая концевику и концевик сработал - то ничего не делаем, иначе - делаем
Цікаво, маю реалізований проект на nodemcu. Спершу теж робив з статичними кнопками та радіо керування, але після декількох місяцяв експлуатації відмовився від ідеї кнопок взагалі (жодного разу не користувався), а радіокерування не виправдало себе тоді перейшов на суто на wifi, якщо є ще інтернет неподалік так плюсів більше ніж в раіокеруванні. Можна відкривати заздалегіть або коли вас дома немає. У мене проблема лише з мотором (від двірників газелі) повільно відкриває. Який мотор використовуєте ви ?
Неактивний
После:
[Вместо видосов в Ютубе рекомендую книгу - Make: AVR Programming by Elliot Williams
!
Спасибо за наводку, книгу скачал.
Хотя за 5 лет обучения по видосам + datasheets уровень позволяет делать интересные проекты:
- разбирать протоколы затем имитировать их,
- работать с Pointers,
- работать напрямую с портами 328P,
- использовать char array вместо String,
- писать клиент-серверные приложения на базе HTTP
- принимать платежи купюрами,
- принимать платеди по PayPass,
- проверять наличие клиента в базе MySQL
- стабильно запускать по RS-485 клапаны, и прочие силовые устройства до 6 кВ мощности.
Ах да, все это работает больше года на десятках объектов.
Кстати бибилиотека Алекса Гайвера для 7-ми сигментного дисплея из 4 цифр - очень даже хороша!
Я это к тому, что если кто-то ругает один путь и указывает другой, как единственно верный, то он манипулирует истиной. Ничего не имею против классики в форме книг на английском.
Однако, Alex Morozov очень злостный и толковый:
https://youtu.be/ygVB7WIu-vU
Есть немало блогеров, которые могут обучить не хуже или даже лучше книги. Прм этом, всегда можно увидеть результат в реальной жизни, а не только на бумаге.
Неактивний
Проект затратно,провальний.
Чогось або недомовляете або недорозуміете.
Неактивний
Нема за що.Проект ще дійсний це так.
Тоді тицну у даташіт.
Які на уно стоять імс живлиня і скільки потрібно живлення для праці модулів реле .Ваша відповідь
Неактивний
Які на уно стоять імс живлиня
AMS1117 с током до 800мА https://3v3.com.ua/product_7562.html
і скільки потрібно живлення для праці модулів реле
5-20 мА https://arduino.ua/prod1706-modyl-rele-5v-10a-nizkogo-yrovnya-low-level
.Ваша відповідь
з/ы если что - я знаю что реле лучше запитывать от отдельного источника, а это так, просто наш ответ Чемберлену
3v3 я ваш давній кліент.Привіт Харкову.
Ну якщо такі подробиці знаете тоді чого голову ламаете і тему відкриваете.За півдня зробилиби.
З такой мигалкой оггого.
Щидевр як не поглянь.
Передавайте привіт Чемберленду.
Неактивний
У меня все работает уже, кроме того, что не могу реализовать приемник 433МГц на плате аттини т88, не подходят библиотеки RCswitch(((
У самого нещодавно виникла подібна задача, RCswitch також не вийшло адаптувати для роботи з пультами 433МГц. Тому зчитав з приймача сигнал і написав для нього свій парсер. Дарую)
Більш детально про формат є в даташиті.
#define HCS301_TE 400
#define HCS301_BITS 66
typedef struct {
uint32_t SerialNum;
uint32_t Encrypted;
uint8_t Btn1 :1;
uint8_t Btn2 :1;
uint8_t Btn3 :1;
uint8_t Btn4 :1;
uint8_t BatLow :1;
uint8_t Repeat :1;
} hcs301_t;
void hcs301_msg(hcs301_t *msg, uint8_t *a) {
msg->SerialNum = ((uint32_t)(a[7] & 0xf) << 24) | ((uint32_t)a[6] << 16) |
((uint32_t)a[4] << 8) | a[5];
msg->Encrypted = ((uint32_t)a[0] << 24) | ((uint32_t)a[1] << 16) |
((uint32_t)a[2] << 8) | a[3];
msg->Btn1 = (a[7] >> 5) & 1;
msg->Btn2 = (a[7] >> 6) & 1;
msg->Btn3 = (a[7] >> 7) & 1;
msg->Btn4 = (a[7] >> 4) & 1;
msg->BatLow = (a[8] >> 6) & 1;
msg->Repeat = (a[8] >> 7) & 1;
}
#define RF_RECV_PIN 2
#define is_roughly(d,t) ((d) > (t)-(t)/4 && (d) < (t)+(t)/4)
#define RF_TE HCS301_TE
#define RF_BITS HCS301_BITS
uint32_t RF_last_change = 0;
uint8_t RF_byte, RF_array[(RF_BITS+7)>>3];
uint8_t RF_mode = 0;
volatile boolean RF_catched = false;
void RF_interrupt() {
if (RF_catched)
return;
uint32_t duration = micros() - RF_last_change;
uint8_t pin = digitalRead(RF_RECV_PIN);
RF_last_change += duration;
if (!(RF_mode & 0x80)) {
if (RF_mode > 20 && pin == HIGH && is_roughly(duration, 10*RF_TE))
RF_mode = 0x80;
else if (!is_roughly(duration, RF_TE))
RF_mode = 0;
else if (!(RF_mode & 0x40))
RF_mode++;
} else {
uint8_t bit = 0;
if (is_roughly(duration, RF_TE))
bit = 0x80;
else if (!is_roughly(duration, 2*RF_TE))
RF_mode = 0;
if (RF_mode) {
if (pin == HIGH) {
if ((bit ^= RF_byte) & 0x80)
RF_mode++;
else
RF_mode = 0;
RF_byte >>= 1;
} else {
RF_byte |= bit;
RF_array[(RF_mode >> 3) & 0xf] = RF_byte;
if (RF_mode >= 0x80 + RF_BITS - 1) {
RF_catched = true;
RF_mode = 0;
}
}
}
}
}
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(RF_RECV_PIN), RF_interrupt, CHANGE);
Serial.println("Listening RF");
}
void loop() {
if (RF_catched) {
hcs301_t msg;
hcs301_msg(&msg, RF_array);
RF_catched = false;
Serial.print("#");
Serial.print(msg.SerialNum, HEX);
Serial.print(" ");
Serial.print(msg.Encrypted, HEX);
Serial.print(" ");
if (msg.Btn1) Serial.print("1");
if (msg.Btn2) Serial.print("2");
if (msg.Btn3) Serial.print("3");
if (msg.Btn4) Serial.print("4");
if (msg.BatLow) Serial.print(" BatLow");
if (msg.Repeat) Serial.print(" R");
Serial.println();
}
}
Неактивний
Доброго дня допоможіть розібратися з автоматикою віткатних воріт
Сторінки 1