Kent5601 |
26.08.2015 19:05 |
ВАЗ 2114 + планшет на Win 8.1
всем привет!
после ряда неудач решил не опускать руки и продолжить создание всеядного CarPC!
1) Был куплен 8-ми дюймовый планшет Prestigio MultiPad PMP880TD на Win 8.1
цена 4500 руб.
нашел в планшете 2 минуса!
первое это то что у него нет GPS
второе 16gb встроенной памяти это катастрофически МАЛО
2) переносной жесткий диск аж на целый таробайт)))):smile2:
3) присмотрел на aliexpress.com звуковую карту! про все функции писать не буду нужна она для избавления от магнитолы что бы звук пустить напрямую на усилители (в будущем)
https://pp.vk.me/c623424/v623424177/...Sqn8EX2nDw.jpg
4) давно были куплены DC-DC преобразователь KIS-3R33S 2 штуки - 1 для питания планшета
- 2 для питания хаба
5) хаб китайский дома нашел про него рассказывать не буду
6) купил еще ардуино леонардо
схема подключения питание планшета и периферии
https://pp.vk.me/c623424/v623424177/...S8aOa9jLpQ.jpg
модуль питания для планшета был переделан! выпаял резистор который управляет напряжением и припаян подстроечный резистор!
по поводу OTG
интересная ситуация у данного планшета! читал на 4пда что этот планшет может работать и без шнурка "отг"! если не подключать GND к ID то планшет будет видеть хаб с периферией и заряжаться! ЭТО ОЧЕНЬ СИЛЬНО ПОРАДОВАЛО!
схема подключения ардуино
ОГРОМНОЕ СПАСИБО РЕБЯТАМ lti1 И ВладимирC
потому что сам не разобрался как сделать включение через ардуино :dntknw:
ACC будет от сигнализации
https://pp.vk.me/c623424/v623424177/...84dBkgtNlU.jpg
скетч от lti1 задумка ВладимирC
PHP код:
unsigned long currentTime; unsigned long loopTime; const int pin_enc_A = 2; const int pin_enc_B = 3; const int pin_pause = 4; unsigned char encoder_A; unsigned char encoder_B; unsigned char encoder_A_prev=0; unsigned char pause; //// реле int ACC = 4; // D4 вход ACC int Hub = 5; // D5 выход управления хабом int Hall = 6; // D6 выход управления датчиком холла int flagACC = 0; unsigned long pauseTime = 0; //кнопки //****************** Здесь необходимо указать свои значения ***************
int analogPin=0; // пин для подключения кнопок, по умолчанию A0
int release_button = 0; // значение при отпущенных кнопках int button_release_range = 50; // диапазон значения + - при отпущенных кнопках int button_range = 10; // диапазон значения нажатых кнопок + - int time_holding = 500; // время для удержания кнопок в миллисекундах int time_tinkling = 10; // время исключающее дребезг контактов в миллисекундах int vol_up = 288; // значение кнопки увеличить громкость int vol_down = 333; // значение кнопки уменьшить громкость int alt_tab = 469; // значение кнопки которая будет работать как Alt + Tab int next = 595; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании int previous = 792; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании int play_pause = 777; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании
//**************************************************************************
int data; unsigned long flag = 0; unsigned long eventTime = 0; unsigned long pauseMillis = 0;
void setup() { pinMode(pin_enc_A, INPUT_PULLUP); // encoder 1 pinMode(pin_enc_B, INPUT_PULLUP); // encoder 2 currentTime = millis(); loopTime = currentTime; Keyboard.begin(); //// кнопки Serial.begin(9600); ////реле pinMode(ACC, INPUT); pinMode(Hub, OUTPUT); pinMode(Hall, OUTPUT); } void loop() { currentTime = millis(); if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц) encoder_A = digitalRead(pin_enc_A); // считываем состояние выхода А энкодера encoder_B = digitalRead(pin_enc_B); // считываем состояние выхода А энкодера if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю if(encoder_B) { // выход В в полож. сост., значит вращение по часовой стрелке Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Remote.increase(); delay(50); Keyboard.releaseAll(); } else { Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_LEFT_SHIFT); Remote.decrease(); delay(50); Keyboard.releaseAll(); } } encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла loopTime = currentTime; } //// кнопки Serial.println(data); data=analogRead(analogPin); if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0) { eventTime=millis(); }
//********************** Громкость ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0) { Remote.increase(); flag = 5; delay(10); Remote.clear(); }
if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3) { Remote.increase(); flag = 3; Remote.clear(); delay(100); }
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0) { Remote.decrease(); flag = 6; delay(10); Remote.clear(); }
if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3) { Remote.decrease(); flag = 3; Remote.clear(); delay(100); }
//********************** AltTab + Ещё что то ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range) { flag = 1; }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0) { Keyboard.press(KEY_LEFT_ALT ); Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); flag = 0; pauseMillis = millis(); }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0) { Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); flag = 0; pauseMillis = millis(); }
if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range) { flag = 0; pauseMillis = 0; Keyboard.releaseAll(); }
if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1) { flag = 0; } //********************** Next и Fast Forward ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range) { flag = 2; }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2) { Remote.next(); flag = 0; delay(10); Remote.clear(); }
if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3) { Remote.forward(); flag = 3; Remote.clear(); delay(100); } //********************** Previous и Rewind ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range) { flag = 4; }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4) { Remote.previous(); flag = 0; delay(10); Remote.clear(); }
if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3) { Remote.rewind(); flag = 3; Remote.clear(); delay(100); }
//********************** Play/pause + Mute ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range) { flag = 7; }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7) { Remote.play_pause(); flag = 0; delay(10); Remote.clear(); }
if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7) { Remote.mute(); flag = 0; delay(10); Remote.clear(); }
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6) { flag = 0; } // ********** упровление питание ********** if (digitalRead(ACC)== HIGH && flagACC == 0) { digitalWrite(Hub, HIGH); pauseTime = millis(); flagACC = 1; } if (millis()-pauseTime>=4000 && flagACC == 1) // пауза 2 секунды { digitalWrite(Hall, HIGH); pauseTime = 0; } if (digitalRead(ACC)== LOW && flagACC == 1) { digitalWrite(Hall, LOW); pauseTime = millis(); flagACC = 0; } if (millis()-pauseTime>=6000 && flagACC == 0) // пауза 10 минут { digitalWrite(Hub, LOW); pauseTime = 0; } }
скорее всего пробной установкой в машину буду заниматься в на выходных!
куда монтировать пока думаю
может быть так
https://pp.vk.me/c622524/v622524177/...BYBCUVgxXc.jpg
НЕ СУДИТЕ СТРОГО Я НОВИЧОК В ЭТОМ ДЕЛЕ!!!
|