PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Рабочий журнал (http://pccar.ru/forumdisplay.php?f=25)
-   -   Установка Nexus 7 2013 WiFi в Hyundai Grandeur (http://pccar.ru/showthread.php?t=21274)

ВладимирC 26.08.2015 12:31

Цитата:

Сообщение от Kent5601 (Сообщение 336450)
опиши пожалуйста работу скетча! как работают кнопки на руле и вкл/выкл ардуино очень понравилась задумка но разобраться не получается! :dntknw:

Про питание уже все пояснили, а секция управления кнопками проста до безобразия (когда знаешь, как ее реализовать). Назначаем аналоговый вход, к нему подключаем кнопки и он читает значение, если оно меньше состояния покоя (1023), но берем с запасом защищаясь от ложных срабатываний (950), то значит нажата кнопка. Вводим переменную flag, для отслеживания времени нажатия ( чтобы различать длинные и короткие нажатия. Все, на этом функции скетча заканчиваются. Дальше коды кнопок обрабатывает Remote steering wheel control. Захотелось поменять функцию какой-либо кнопки (или всех кнопок) - заходим в приложение и меняем на ходу.
Тут еще один большой плюс - на столе и в машине кнопки выдавали разные значения (особенности питания). В случае если бы назначение кнопок задавались жестко в скетче мне бы пришлось замерять значения в машине, потом опять снимать, нести домой, прошивать, и устанавливать обратно.

Kent5601 26.08.2015 13:49

спасибо большое lti1 и ВладимирC!

Kent5601 26.08.2015 13:52

Цитата:

Сообщение от lti1 (Сообщение 336457)
В скетче у ВладимирC, обрабатывает кнопки Remote steering wheel control, исходник здесь.
Алгоритм управления питанием следующий:
включили ACC -> сразу подалось питание на хаб, через две секунды сигнал на датчик холла
выключили ACC -> сразу сигнал на датчик холла, через десять минут отключается питание хаба.
Вот скетч управления питанием отдельно:
PHP код:

int ACC 4// D4 вход ACC
int Hub 5// D5 выход управления хабом
int Hall 6// D6 выход управления датчиком холла
int flagACC 0;
unsigned long pauseTime 0;

void setup() 
 {
  
pinMode(ACCINPUT);
  
pinMode(HubOUTPUT);
  
pinMode(HallOUTPUT);     
 }


void loop()
{
  if (
digitalRead(ACC)== HIGH && flagACC == 0)
   {
   
digitalWrite(HubHIGH);
   
pauseTime millis();
   
flagACC 1;
   }
  if (
millis()-pauseTime>=2000 && flagACC == 1// пауза 2 секунды
   
{
   
digitalWrite(HallHIGH);
   
pauseTime 0;
   }
   
  if (
digitalRead(ACC)== LOW && flagACC == 1)
   {
   
digitalWrite(HallLOW);
   
pauseTime millis();
   
flagACC 0;
   }
  if (
millis()-pauseTime>=600000 && flagACC == 0// пауза 10 минут
   
{
   
digitalWrite(HubLOW);
   
pauseTime 0;
   }



а int flagACC = 0 это аналоговый вход или цифровой? просто на леонардо рядом с цифровым выходом 0 написано RX это нормально или лучше другой выбрать????

lti1 26.08.2015 14:04

Цитата:

Сообщение от Kent5601 (Сообщение 336478)
а int flagACC = 0 это аналоговый вход или цифровой? просто на леонардо рядом с цифровым выходом 0 написано RX это нормально или лучше другой выбрать????

Все входы и выходы я обозначил в скетче, int flagACC = 0; и unsigned long pauseTime = 0; - переменные которые используются в скетче, их трогать не нужно.

Kent5601 26.08.2015 14:45

то есть они цифровые! я попробую сейчас скетч собрать посмотрите нормально или не правильно?

Kent5601 26.08.2015 14:58

посмотрите плиз!!! не селен я в ардуино(((


Цитата:

int ACC = 4; // D4 вход ACC
int Hub = 5; // D5 выход управления хабом
int Hall = 6; // D6 выход управления датчиком холла
int flagACC = 0;
unsigned long pauseTime = 0;
int analogPin=0;
int data;

void setup()
{
pinMode(ACC, INPUT);
pinMode(Hub, OUTPUT);
pinMode(Hall, OUTPUT);
Keyboard.begin();
Serial.begin(9600);
}


void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта


if (digitalRead(ACC)== HIGH && flagACC == 0)
{
digitalWrite(Hub, HIGH);
pauseTime = millis();
flagACC = 1;
}
if (millis()-pauseTime>=2000 && flagACC == 1) // пауза 2 секунды
{
digitalWrite(Hall, HIGH);
pauseTime = 0;
}

if (digitalRead(ACC)== LOW && flagACC == 1)
{
digitalWrite(Hall, LOW);
pauseTime = millis();
flagACC = 0;
}
if (millis()-pauseTime>=600000 && flagACC == 0) // пауза 10 минут
{
digitalWrite(Hub, LOW);
pauseTime = 0;
}

// упровление кнопками

if (data>=315 && data<=345) // приглушение звука
{
Remote.mute();
Remote.clear();
}
if (data>=315 && data<=345) // Volume Up
{
Remote.increase();
Remote.clear();
}
if (data>=315 && data<=345) // Volume Down
{
Remote.decrease();
Remote.clear();
}
// Track Controls
if (data>=315 && data<=345) // Next
{
Remote.next();
Remote.clear();
}
if (data>=315 && data<=345) // previous
{
Remote.previous();
Remote.clear();
}
if (data>=420 && data<=460) // воспроизведение / пауза
{
Remote.play_pause();
Remote.clear();
}
delay(100);
}
цифры значений не правильные так что не обращайте внимания!

ВладимирC 26.08.2015 16:02

Не туда посмотрел

ВладимирC 26.08.2015 16:49

Цитата:

Сообщение от Kent5601 (Сообщение 336485)
то есть они цифровые! я попробую сейчас скетч собрать посмотрите нормально или не правильно?

Они не цифровые, точнее это вообще не входы, это переменные.

Kent5601 26.08.2015 17:08

ВладимирC ВАШ почтовый ящик переполнен!

sirota 26.08.2015 17:23

Цитата:

Сообщение от Kent5601 (Сообщение 336500)
ВладимирC ВАШ почтовый ящик переполнен!

Ему лень или некогда :yes2:


Часовой пояс GMT +4, время: 08:35.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot