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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ > Программы управления > iCarDS

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2013, 07:58   #511
M@troskin
Пользователь
 
Регистрация: 20.09.2011
Возраст: 52
Город: Туапсе
Регион: 23, 93
Машина: Красно-оранжевый Ford C-Max "Букашка"
Сообщений: 45
M@troskin is on a distinguished road
По умолчанию

Цитата:
Сообщение от M@troskin Посмотреть сообщение
схема в icards как положено заработала только на рабочем компьютере - core i5, win7 64 bit, 8 gb оперативки. на том компе, который будет стоять в машине - atom 450 (intel d450t), win xp - не работает. грешу на то, что система на карписи свежепереобутая, поковыряюсь сегодня еще в ини-файлах, хотя вроде все делал по инструкции.
эта часть вопроса снята - ошибся в портах
первая часть про кнопки энкодеров осталась - почему не всегда срабатывают?
M@troskin вне форума   Ответить с цитированием
Старый 17.07.2013, 08:17   #512
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от M@troskin Посмотреть сообщение
первая часть про кнопки энкодеров осталась - почему не всегда срабатывают?
Возможно большой дребезг на контакте энкодера, попробуй в скетче увеличить диапазон в функциях обработки энкодеров, найди в них такие строки

if( encoder1_dt >= 0x246 && encoder1_dt <= 0x286 )

и замени на такие

if( encoder1_dt >= 0x226 && encoder1_dt <= 0x2A6 )
Bersenev вне форума   Ответить с цитированием
Старый 17.07.2013, 10:33   #513
[ivi]
Старший Пользователь
 
Аватар для [ivi]
 
Регистрация: 19.10.2009
Возраст: 49
Город: Ёбург, Светлогорск (Беларусь)
Регион: 66, 96
Машина: cIvIc 4D
Сообщений: 124
[ivi] is on a distinguished road
По умолчанию

Андрей, у меня случайно не такая же ситуация с дебезгом? пост №509
[ivi] вне форума   Ответить с цитированием
Старый 17.07.2013, 15:20   #514
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от [ivi] Посмотреть сообщение
Bersenev, Андрей, выложите пожалуйста скетч только для кнопок.
Пробуй

PHP код:
//
#include <EEPROM.h>
  
#define RES_KEY_FLAG_ 0x79  // Флаг первого запуска скетча

byte bytes[4];

//-----------------------------------------
//- входы(пины) ардуино                   -
//-----------------------------------------

int RES_PIN ;       // аналоговый вход(пин) для резестивных(рулевых) кнопок 

//-----------------------------------------
//- переменные включения функций скетча   -
//-----------------------------------------
boolean is_res_keys false;

//-----------------------------------------
//- Переменные для резестивных кнопок     -
//-----------------------------------------
unsigned long  res_dt 0
unsigned long  res_dt_sum=0
#define RES_DT_COUNT 500 // Количество считываемых данных
#define RES_DT_SKIP_COUNT 100 // Количество данных, которые надо пропустить при нажатии
#define RES_DT_POINT 6 // Точность
int res_dt_n 0;
unsigned long res_key=0;
unsigned long res_key_old=0;
unsigned long res_key_wait_first 500;  // время ожидания после первого нажатия кнопки
unsigned long res_key_wait_next 250;  // время ожидания до следующего нажатия кнопки
unsigned long res_key_wait_millis 0;
unsigned long res_key_millis;
unsigned long res_key_array[51][2];
unsigned int res_key_count 0;
unsigned int res_key_delta 5// дельта для определения кода кнопки
  
void setup() 

  
Serial.begin(115200); 
    
res_key_millis millis();
   
    
unsigned int first_run_key EEPROM.read(0);
    if ( 
first_run_key == RES_KEY_FLAG_ )
    {
      
res_key_count EEPROM.read(1);
      
//EEPROM.write(addr, val);
      
for(int i=0i<res_key_count;i++) 
      { 
        
res_key_array[i][0] = (EEPROM.read(i+2) * 256) + EEPROM.read(i+2+50) - res_key_deltares_key_array[i][1] = res_key_array[i][0] + res_key_delta res_key_delta
      }
    }
    for(
int i=res_key_counti<51;i++) 
    { 
      
res_key_array[i][0] = 0xFFFFFFFFres_key_array[i][1] = 0xFFFFFFFF
    }
    
}
 
void loop() 
{
  if (
Serial.available() >= 1// Проверяем наличие команд от компьютера
  
{
     switch (
Serial.read())
    {

     case 
0x06// включить передачу данных от резестивных кнопок
       
is_res_keys true;
     break;

     case 
0x86// выключить передачу данных от резестивных кнопок
       
is_res_keys false;
     break;

     case 
0xAA// выключить передачу данных от резестивных кнопок
     
{
       while (
Serial.available() < 5) {}
       
int i Serial.read();
       
bytes[0] = Serial.read();          // преобразовать в 4-байта  
       
bytes[1] = Serial.read();  
       
bytes[2] = Serial.read(); 
       
bytes[3] = Serial.read(); 
       
unsigned long key_res_min 0key_res_min bytes[0]; key_res_min key_res_min 256 bytes[1];  
       
unsigned long key_res_max 0key_res_max bytes[2]; key_res_max key_res_max 256 bytes[3];  
       
res_key_array[i-1][0] = key_res_min
       
res_key_array[i-1][1] = key_res_max;
     }
     break;

     case 
0xAB// сбросить настройки резестивных кнопок в EEPROM
     
{
       
EEPROM.write(0,0); // сбросить флаг первого запуска
       
res_key_count 0// сбросить количество резистивных кнопок 
       
EEPROM.write(1,0); //
       
for(int i=0i<51;i++) 
       { 
        
res_key_array[i][0] = 0xFFFFFFFFres_key_array[i][1] = 0xFFFFFFFF
       }
     } 
     break;
    }
  } 
  if( 
is_res_keys res_keys();                        //  резестивные кнопки
}

//----------------------------------------------------------------------------------
// Функция работы с резестивными кнопками
//----------------------------------------------------------------------------------
void res_keys()
{  
  {
    
res_dt analogRead(RES_PIN); // прочитать данные АЦП 
    
if( res_dt >= 0x05 && res_dt <= 0x3F0 )
    { 
      
res_dt_n++;
      if( 
res_dt_n RES_DT_SKIP_COUNT )
      {
        
res_dt_sum += (res_dt << RES_DT_POINT);
        if( 
res_dt_n == RES_DT_COUNT)
        { 

          
res_key = (res_dt_sum / (RES_DT_COUNT RES_DT_SKIP_COUNT));
          
res_key = (((((( res_dt_sum / (( RES_DT_COUNT RES_DT_SKIP_COUNT ) + (2^(RES_DT_POINT-1)-1) ) >> (RES_DT_POINT-1)) + 1) >> 1) + 1)>> 1)); // + 1) >> 1;
          
res_dt_sum 0res_dt_n 0;
        }
       }
    }
    else
    {
      
res_dt_sum 0res_dt_n 0res_key 0;
      
res_key_wait_millis 0;
    }
  }
  if( 
res_key_millis res_key_wait_millis*<= millis() ) { res_key_old 0; }
  if( 
res_key_millis res_key_wait_millis <= millis() )
  {
    if( 
res_key != )
    {
      if( ((
res_key_old res_key_delta) <=  res_key) && (res_key <= (res_key_old res_key_delta)) )
      {
        
res_key_millis millis(); res_key_wait_millis res_key_wait_next;
      }
      else
      {
        
res_key_millis millis(); res_key_wait_millis res_key_wait_first;
      }

        
int i 0int exit = 0;
        while( 
res_key_array[i][0] != 0xFFFFFFFF && exit == )
        {
          if( (
res_key_array[i][0] <= res_key) && (res_key <= res_key_array[i][1]) ) exit = 1; else i++;
        }
        if( exit == 

        { 
          
bytes[0] = 0xAA;          // преобразовать в 4-байта  
          
bytes[1] = 0;  
          
bytes[2] = RES_PIN
          
bytes[3] = i+1
          
Serial.writebytes,4); // отправить прочитаное значение компьютеру
        
}
        else
        {
          if( 
res_key_count 50 )
          {
            
res_key_array[res_key_count][0] = res_key res_key_deltares_key_array[res_key_count][1] = res_key res_key_delta;
            
res_key_count++;
            
            
EEPROM.write(1res_key_count); // Запоминаем количество кнопок
            
byte one_byte res_key 256;
            
EEPROM.write(res_key_count+1one_byte ); // Запоминаем старший байт значения кнопки
            
one_byte res_key one_byte 256;
            
EEPROM.write(res_key_count+1+50one_byte ); // Запоминаем младший байт значения кнопки
            
EEPROM.write(0RES_KEY_FLAG_);
          
            
bytes[0] = 0xAA;          // преобразовать в 4-байта  
            
bytes[1] = 0;  
            
bytes[2] = RES_PIN
            
bytes[3] = res_key_count
            
Serial.writebytes,4); // отправить прочитаное значение компьютеру
          
}
          else
          {
            
bytes[0] = 0xAA;          // преобразовать в 4-байта  
            
bytes[1] = 0xAA;  
            
bytes[2] = (res_key 0xFF00) >> 8
            
bytes[3] = res_key 0xFF
            
Serial.writebytes,4); // отправить прочитаное значение компьютеру
          
}
        }
    }
    
res_key_old res_key;
  }

Bersenev вне форума   Ответить с цитированием
Старый 21.07.2013, 02:21   #515
OsDima
Старший Пользователь
 
Регистрация: 25.06.2011
Возраст: 54
Город: Красноярск
Регион: 24
Машина: Nissan Wingroad WFY-11 2003
Сообщений: 166
OsDima will become famous soon enough
По умолчанию

Как через Дуинку по ИК увести iCar в Сон. На код кнопки от iCarDuino зделать спящий режим.

Интелектуальными БП не пользуюсью. Обычное реле контроля напряжение - включается когда заведен двигатель, а выключаю по ИК.

До того как поставил iCarDuino, пользовался MCE ресивером и Evengost-ом. Засыпал комп от BAT файла.
Ресивер убрал из машины и теперь нечем уводить комп в сон, по экрану в сон тапать напрягает.

Последний раз редактировалось OsDima; 22.07.2013 в 22:39.
OsDima вне форума   Ответить с цитированием
Старый 23.07.2013, 11:38   #516
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от OsDima Посмотреть сообщение
Как через Дуинку по ИК увести iCar в Сон. На код кнопки от iCarDuino зделать спящий режим.

Интелектуальными БП не пользуюсью. Обычное реле контроля напряжение - включается когда заведен двигатель, а выключаю по ИК.

До того как поставил iCarDuino, пользовался MCE ресивером и Evengost-ом. Засыпал комп от BAT файла.
Ресивер убрал из машины и теперь нечем уводить комп в сон, по экрану в сон тапать напрягает.
Повесь на кнопку нужную команду

CF_POWEROFF - выключить комп
CF_REBOOT - перезагрузить
CF_STANDBY - перейти в ждущий режим
CF_HIBERNATE - гибернация
Bersenev вне форума   Ответить с цитированием
Старый 23.07.2013, 19:42   #517
OsDima
Старший Пользователь
 
Регистрация: 25.06.2011
Возраст: 54
Город: Красноярск
Регион: 24
Машина: Nissan Wingroad WFY-11 2003
Сообщений: 166
OsDima will become famous soon enough
По умолчанию

Цитата:
Сообщение от Bersenev Посмотреть сообщение
Повесь на кнопку нужную команду

CF_POWEROFF - выключить комп
CF_REBOOT - перезагрузить
CF_STANDBY - перейти в ждущий режим
CF_HIBERNATE - гибернация
Насчет команд понятно, спасибо. Но нужна не одна команда а последовательность действий. В соседней теме, здесь не буду повторятся.
OsDima вне форума   Ответить с цитированием
Старый 27.07.2013, 21:22   #518
OsDima
Старший Пользователь
 
Регистрация: 25.06.2011
Возраст: 54
Город: Красноярск
Регион: 24
Машина: Nissan Wingroad WFY-11 2003
Сообщений: 166
OsDima will become famous soon enough
По умолчанию

Цитата:
Сообщение от Bersenev Посмотреть сообщение
Повесь на кнопку нужную команду

CF_POWEROFF - выключить комп
CF_REBOOT - перезагрузить
CF_STANDBY - перейти в ждущий режим
CF_HIBERNATE - гибернация
Повесил на кнопку ИК ресивера команду

CF_HIBERNATE

Ноль эмоций.

У меня подключен второй сенсорный монитор. При нажатии на сенсор 2 монитора запущеное "внешнее" приложение "убегает" с первого монитора на него - "второй". На экране музыка убегает визуализация. Можно ли это както отключить.
OsDima вне форума   Ответить с цитированием
Старый 30.07.2013, 08:15   #519
OsDima
Старший Пользователь
 
Регистрация: 25.06.2011
Возраст: 54
Город: Красноярск
Регион: 24
Машина: Nissan Wingroad WFY-11 2003
Сообщений: 166
OsDima will become famous soon enough
По умолчанию

Скрипт при переходе в спящий режим. Запускаю в нем удаление процесса.

Можно-ли организовать задержку на переход в спящий режим можно организовать в этом скрипте. Скрипт не успевает остановить процесс. И процесс закрывается уже после просыпания CarPC.

И добавить еще один скрипт при выгрузке скина.
У меня проблемы с AutoCommService от VOBD, он не стабильно востанавливается после просыпания.

Форумчане ответь завтра в дорогу, две мелочи осталось до "комфорта"
OsDima вне форума   Ответить с цитированием
Старый 04.08.2013, 17:03   #520
[ivi]
Старший Пользователь
 
Аватар для [ivi]
 
Регистрация: 19.10.2009
Возраст: 49
Город: Ёбург, Светлогорск (Беларусь)
Регион: 66, 96
Машина: cIvIc 4D
Сообщений: 124
[ivi] is on a distinguished road
По умолчанию

Андрей, только сейчас появилась возможность отписаться по поводу скетча (твой пост№ 514). Во-первых спасибо.... Работает звук + -, Mute, след. трэк, предыд. трэк... Но предыдущ. трэк сейчас работает постоянно (как буд-то постоянно нажата кнопка предыд. трэка). По нажимаешь на кнопку сдед.трэка, трэки меняются вперёд, но потом опять всё перелистывается само на начало..... И где можно глянуть блокнот с прописанными настройками на кнопки? Хочу удалить прописанную настройку на эту кнопку (может не в скетче дело) и перенастроить заново, а то в запущенном Икаре не получается перенастроить.
[ivi] вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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