всем привет!
после ряда неудач решил не опускать руки и продолжить создание всеядного CarPC!
1) Был куплен 8-ми дюймовый планшет Prestigio MultiPad PMP880TD на Win 8.1
цена 4500 руб.
нашел в планшете 2 минуса!
первое это то что у него нет GPS
второе 16gb встроенной памяти это катастрофически МАЛО
2) переносной жесткий диск аж на целый таробайт))))
3) присмотрел на aliexpress.com звуковую карту! про все функции писать не буду нужна она для избавления от магнитолы что бы звук пустить напрямую на усилители (в будущем)
4) давно были куплены DC-DC преобразователь KIS-3R33S 2 штуки
- 1 для питания планшета
- 2 для питания хаба
5) хаб китайский дома нашел про него рассказывать не буду
6) купил еще ардуино леонардо
схема подключения питание планшета и периферии
модуль питания для планшета был переделан! выпаял резистор который управляет напряжением и припаян подстроечный резистор!
по поводу OTG
интересная ситуация у данного планшета! читал на 4пда что этот планшет может работать и без шнурка "отг"! если не подключать GND к ID то планшет будет видеть хаб с периферией и заряжаться! ЭТО ОЧЕНЬ СИЛЬНО ПОРАДОВАЛО!
схема подключения ардуино
ОГРОМНОЕ СПАСИБО РЕБЯТАМ lti1 И ВладимирC
потому что сам не разобрался как сделать включение через ардуино

ACC будет от сигнализации

скетч от 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;
}
}
скорее всего пробной установкой в машину буду заниматься в на выходных!
куда монтировать пока думаю
может быть так
НЕ СУДИТЕ СТРОГО Я НОВИЧОК В ЭТОМ ДЕЛЕ!!!