Всем привет!
Мои попытки изучить программирование закончились есче в школе на уровне HELLO WORLD в паскале,
Изучил основы ардуинки, по большому счету скачивал скетчи разных проектов и читал их а потом гуглил не понятные для меня моменты…
Ну вот, кое чему я научился...
В моей машине автоматического режима открытия/закрытия окон не имеется, хотя имеется частично только на передних окон и только вниз )) меня это не устраивает...
Конечно можно поставить блок комфорта от машины которая имеет весь функционал и не парится но это легкий путь...
Я решил частично а то и полностью функционал блока комфорта перекинуть на
Arduino MEGA )))))
Маленкий ролик работы программы
https://www.youtube.com/watch?v=xVHRYyjC60w
В программе добавлен весь функционал для 4ех окон но код написан пока что только для водительской...
Остановка авторежима происходит пока что по таймеру а в будущем будет по нагрузке...
Код HTML:
//Используются 2х ступенчятые кнопки (при первой ступени нажатия соеденяется контакт 1 с 2 а при второй ступени контакты 1и3 с 2
//Первая ступень поднимает окно столько сколько нажата кнопка а вторая поднимает автоматически. Все как у всех )))
//Функция "Запретить ручной режим" используется против ложного срабатывания ибо кнопка из второй ступени возвращается сначало в первую а потом в 0
//таким образом каждый раз при активации авто режима а потом при отпускании кнопки сработал бы ручной режим (то есть авторежима небыло бы совсем)
#define motFLup 51 //Пин на закрывание переднего левого окна
#define motFLdn 53 //Пин на открывание переднего левого окна
#define motFRup 47 //Пин на закрывание переднего правого окна
#define motFRdn 49 //Пин на открывание переднего правого окна
#define motRLup 43 //Пин на закрывание заднего левого окна
#define motRLdn 45 //Пин на открывание заднего левого окна
#define motRRup 39 //Пин на закрывание заднего правого окна
#define motRRdn 41 //Пин на открывание заднего правого окна
int flk_pin=A0; //Пин для резистивных кнопок переднего левого окна
int flk; //Переменная для резистивных кнопок переднего левого окна
long MillisFL = 0; //Таймер для авто режима резистивных кнопок переднего левого окна
unsigned long flagFLm = 0; //Антидребезг для ручного режима резистивных кнопок переднего левого окна
unsigned long flagFLa = 0; //Антидребезг для авто режима резистивных кнопок переднего левого окна
int frk_pin=A1; //Пин для резистивных кнопок переднего правого окна
int frk; //Переменная для резистивных кнопок переднего правого окна
unsigned long flagFRm = 0; //Антидребезг для ручного режима резистивных кнопок переднего правого окна
unsigned long flagFRa = 0; //Антидребезг для авто режима резистивных кнопок переднего правого окна
long previousMillisFR = 0; //Таймер для авто режима резистивных кнопок переднего правого окна
unsigned long currentMillisFR = 0; //Таймер для авто режима резистивных кнопок переднего правого окна
int rlk_pin=A2; //Пин для резистивных кнопок заднего левого окна
int rlk; //Переменная для резистивных кнопок заднего левого окна
unsigned long flagRLm = 0; //Антидребезг для ручного режима резистивных кнопок заднего левого окна
unsigned long flagRLa = 0; //Антидребезг для авто режима резистивных кнопок заднего левого окна
long previousMillisRL = 0; //Таймер для авто режима резистивных кнопок заднего левого окна
unsigned long currentMillisRL = 0; //Таймер для авто режима резистивных кнопок заднего левого окна
int rrk_pin=A3; //Пин для резистивных кнопок заднего правого окна
int rrk; //Переменная для резистивных кнопок заднего правого окна
unsigned long flagRRm = 0; //Антидребезг для ручного режима резистивных кнопок заднего правого окна
unsigned long flagRRa = 0; //Антидребезг для авто режима резистивных кнопок заднего правого окна
long previousMillisRR = 0; //Таймер для авто режима резистивных кнопок заднего правого окна
unsigned long currentMillisRR = 0; //Таймер для авто режима резистивных кнопок заднего правого окна
void setup()
{
pinMode(motFLup, OUTPUT); //Назначить пин на закрывание переднего левого окна как выход
pinMode(motFLdn, OUTPUT); //Назначить пин на открывание переднего левого окна как выход
pinMode(flk_pin, INPUT); //Назначить пин для резистивных кнопок переднего левого окна как вход
digitalWrite(flk_pin, HIGH); //Включить подтягивающий резистор для резистивных кнопок переднего левого окна
pinMode(motFRup, OUTPUT); //Назначить пин на закрывание переднего правого окна как выход
pinMode(motFRdn, OUTPUT); //Назначить пин на открывание переднего правого окна как выход
pinMode(frk_pin, INPUT); //Назначить пин для резистивных кнопок переднего правого окна как вход
digitalWrite(frk_pin, HIGH); //Включить подтягивающий резистор для резистивных кнопок переднего правого окна
pinMode(motRLup, OUTPUT); //Назначить пин на закрывание заднего левого окна как выход
pinMode(motRLdn, OUTPUT); //Назначить пин на открывание заднего левого окна как выход
pinMode(rlk_pin, INPUT); //Назначить пин для резистивных кнопок заднего левого окна как вход
digitalWrite(rlk_pin, HIGH); //Включить подтягивающий резистор для резистивных кнопок заднего левого окна
pinMode(motRRup, OUTPUT); //Назначить пин на закрывание заднего правого окна как выход
pinMode(motRRdn, OUTPUT); //Назначить пин на открывание заднего правого окна как выход
pinMode(rrk_pin, INPUT); //Назначить пин для резистивных кнопок заднего правого окна как вход
digitalWrite(rrk_pin, HIGH); //Включить подтягивающий резистор для резистивных кнопок заднего правого окна
Serial.begin(9600);
}
void motFLstop() {digitalWrite(motFLup, LOW); digitalWrite(motFLdn, LOW);} //Окно стоп
void motFLupf() {digitalWrite(motFLup, HIGH); digitalWrite(motFLdn, LOW);} //закрыть окно
void motFLdnf() {digitalWrite(motFLdn, HIGH); digitalWrite(motFLup, LOW);} //открыть окно
void loop()
{
flk=analogRead(flk_pin); //Переменная flk читает данные из пина для резистивных кнопок переднего левого окна
frk=analogRead(frk_pin); //Переменная frk читает данные из пина для резистивных кнопок переднего правого окна
rlk=analogRead(rlk_pin); //Переменная rlk читает данные из пина для резистивных кнопок заднего левого окна
rrk=analogRead(rrk_pin); //Переменная rrk читает данные из пина для резистивных кнопок заднего правого окна
// Serial.println(flk);
// Переднее левое окно /////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////
// Стоп //
if(flk>1000) {flagFLm = 0;} //Если кнопки опущены разрешить ручной режим
if(flk>1000 && flagFLa == 0) {motFLstop();} //Если кнопки опущены и не активирован авто режим "ОКНО СТОП"
// закрытие //
if(flk>415 && flk<430 && flagFLm == 0 && !flagFLa == 0) { flagFLa = 0; flagFLm = 1; motFLstop();} //Если активно автозакрытие/открытие кнопка "закрыть" завершает авторежим
if(flk>415 && flk<430 && flagFLm == 0 && flagFLa == 0) {motFLupf(); } //Если нажата кнопка "закрыть" и разрешен ручной режим "Отменить Авто закрытие" и "закрыть окно в ручную"
// автозакрытие //
if(flk>320 && flk<340) { flagFLm = 1; flagFLa = 1; MillisFL = millis();} //Если нажата кнопка "закрыть автоматически" "Запретить ручной режим" "активировать автозакрытие" "Запомнить время начала"
if(flagFLa == 1){motFLupf();} // если активировано автозакрытие "закрыть окно автоматически"
if(millis() - MillisFL > 5000) {flagFLa = 0;} //Если с момента начало авто режима прошло 5сек "Завершить Авто закрытие"
// открытие //
if(flk>575 && flk<590 && flagFLm == 0 && !flagFLa == 0) { flagFLa = 0; flagFLm = 1; motFLstop();} //Если активно автозакрытие/открытие кнопка "открыть" завершает авторежим
if(flk>575 && flk<590 && flagFLm == 0 && flagFLa == 0) {motFLdnf();} //Если нажата кнопка "открыть" и разрешен ручной режим "Отменить Авто открытие" и "открыть окно в ручную"
// автооткрытие //
if(flk>260 && flk<280) { flagFLm = 1; flagFLa = 2; MillisFL = millis();} //Если нажата кнопка "открыть автоматически" "Запретить ручной режим" "активировать автооткрытие" "Запомнить время начала"
if(flagFLa == 2){ motFLdnf(); } // если активировано автооткрытие "открыть окно автоматически"
if(millis() - MillisFL > 5000) {flagFLa = 0;} //Если с момента начало авто режима прошло 5сек "Завершить Авто открытие"
// Переднее правое окно /////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////
}