02.07.2016, 20:08 | #1 |
Новый Пользователь
Регистрация: 12.12.2011
Возраст: 34
Город: Сороки
Регион: другой - для добавления сообщить ab
Машина: Mercedes w210 e230 95"
Сообщений: 25
|
стеклоподемники на Arduino
Всем привет!
Мои попытки изучить программирование закончились есче в школе на уровне 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сек "Завершить Авто открытие" // Переднее правое окно ///////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////// } Последний раз редактировалось admin; 20.03.2017 в 02:29. |
08.12.2016, 22:10 | #2 |
Новый Пользователь
Регистрация: 08.12.2016
Возраст: 47
Регион: 77, 97, 99, 177
Машина: volvo c30
Сообщений: 2
|
код работает ?
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
|
|