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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Проекты (http://pccar.ru/forumdisplay.php?f=21)
-   -   Головное устройство в стиле Tesla (Atenza 2.0, 2004 г. (http://pccar.ru/showthread.php?t=26274)

(vS) 31.03.2018 12:10

Цитата:

Сообщение от НСО154 (Сообщение 400893)
пытаюсь считать показания дисплея.
Пока ни чего не получается))

что делаешь?

НСО154 31.03.2018 12:19

Цитата:

Сообщение от (vS) (Сообщение 400896)
что делаешь?

Нашёл сигнальные пары отвечающие за показания на штатном дисплее (климат), подключил ардуино и считываю напряжение.
Например тыкаешь кнопку (обороты вентилятора), напряжение скачет от 1.5в до 3в.
1.5в-минимум оборотов
3в-максимум.
В принципе, вроде понятно (резисторные кнопки).

Могу ошибаться, наверное можно отталкиваться от напряжения на сигнальном проводе и выводить картинку на Делфи.

Vladget 31.03.2018 12:30

что то мне кажется уж дюже как то просто, а если другую кнопку нажать (не обороты вентиллятора)? а там точно постоянка ? может там сигнал более сложный ? осциллографом не смотрел?

НСО154 31.03.2018 14:04

Цитата:

Сообщение от Vladget (Сообщение 400898)
что то мне кажется уж дюже как то просто, а если другую кнопку нажать (не обороты вентиллятора)? а там точно постоянка ? может там сигнал более сложный ? осциллографом не смотрел?

Тишина при нажатии на остальные кнопки, за них отвечают другие пары, пока только нашёл на вентилятор.
Из приборов имеется Китайский мультиметр))
ПС: ну да...как-то все просто.

Если честно, то склоняюсь забить на эту идею, штатный дисплей встал как родной на новое место, довести до ума рамку и голову не греть...а ну ещё подсветку заменить на белую, красная не вписывается.

НСО154 31.03.2018 17:00

Вложений: 3
Если кто хочет побаловаться управлением нагрузкой через com))
Компонент порта для Делфи во вложении, а так же пример моей оболочки (правда не доделана), компонент для работ с PNG файлами в Делфи.

Код для Ардуино, задействовано 12 цифровых (кратковременное нажатие)

PHP код:

#define OUTPUT_DEFAULT HIGH
//#define OUTPUT_DEFAULT LOW
#define ON_TIME 300 // ms

void setup()
{
  for (
int i 2<= 13i++) {
    
pinMode(iOUTPUT);
    
digitalWrite(iOUTPUT_DEFAULT);
  }
  
Serial.begin(9600); // pins 0, 1
}

void loop()
{
  if (
Serial.available() > 0) {
    
int incomingByte Serial.read();
    if ((
incomingByte >= 2) && (incomingByte <= 13)) {
      
digitalWrite(incomingByte, !OUTPUT_DEFAULT);
      
Serial.write(0x40 incomingByte);
      
delay(ON_TIME);
      
digitalWrite(incomingByteOUTPUT_DEFAULT);
      
Serial.write(0x80 incomingByte);
    }
  }


Код для Делфи.
PHP код:

unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsCPort;

type
  TForm1 
= class(TForm)
    
cmprt1TComPort;
    
Button1TButton;
    
Button2TButton;
    
procedure Button1Click(SenderTObject);
    
procedure FormCreate(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(SenderTObject);

begin
// отсылаем команду "0" на выход d2
cmprt1.WriteStr (#0);


end;

procedure TForm1.FormCreate(SenderTObject);
begin
//открываем comport
 
cmprt1.Open;
end;
procedure TForm1.Button2Click(SenderTObject);
begin
// отсылаем команду "" на выход d3
cmprt1.WriteStr (#1);

end;

end

Кoд для Ардуино, задействовано 11 пинов (фиксированное нажатие)
PHP код:

void setup() {
  
Serial.begin(9600);
  for (
int i 2<= 11i++)pinMode(iOUTPUT);
}
void loop() {
  if (
Serial.available() > 0) {
    
int x Serial.read() - '0';
    
digitalWrite(2, !digitalRead(2));
  }


Код для Делфи
PHP код:

unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsCPort;

type
  TForm1 
= class(TForm)
    
cmprt1TComPort;
    
Button1TButton;
    
Button2TButton;
    
procedure Button1Click(SenderTObject);
    
procedure FormCreate(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(SenderTObject);

begin
// отсылаем команду "0" на выход d2
cmprt1.WriteStr ('0');


end;

procedure TForm1.FormCreate(SenderTObject);
begin
//открываем comport
 
cmprt1.Open;
end;
procedure TForm1.Button2Click(SenderTObject);
begin
// отсылаем команду "1" на выход d3
cmprt1.WriteStr ('1');

end;

end


НСО154 31.03.2018 17:24

Да и вообще...заведите уже тему на нашем форуме про среду разработок приложений для CarPc, полезная штука...если б не коллега с соседней ветки, то вообще не знал бы про Делфи))
А так два дня...пришлось изучать, вникать...
Вот моя тема на киберфоруме, почитайте про установку компонентов и ребята там ссылки дали на полезные статьи для новичков.
http://www.cyberforum.ru/delphi-begi...l#post12257340

НСО154 31.03.2018 18:00

Цитата:

Сообщение от Vladget (Сообщение 400898)
что то мне кажется уж дюже как то просто, а если другую кнопку нажать (не обороты вентиллятора)? а там точно постоянка ? может там сигнал более сложный ? осциллографом не смотрел?

Разобрался с передачей информации, точнее с её обработкой.
Это кажется что все так просто:)
Коротко и по сути.
Эти 1.5-3в в последствии обрабатываются микропроцессором (встроенный в дисплее) и выводится изображение в виде символов, что мы и видим на дисплее.
Нам остаётся подпояться к сигнальным парам и с помощью ардуино разбить данные вольты на числа, например от 0-300.
Каждой сотой назначит своё действие (активация цифрового выхода), например, 1в-100, если меньше 100, то активируется выход d3, если больше, то выход d4 микропроцессора.
Далее "ловим" сигнал в Делфи и выводим нужное изображение основываясь на состояние цифрового выхода.
Как-то так))
Тупо заменяем вычислительные процессы в мозгах дисплея на свои Ардуино.

Только одно НО, сможет ли Ардуино это осилить...как показывает практика с "Контролем напряжения с аналогового входа Ардуино", в сети "плавают" помехи и будет ли работа стабильной...ловя эти сотые, возможно тысячные...

В общем это далеко не просто...не буду этим заниматься.
Может быть на старости...от делать нех))
Получить исходник с той же can-это одно, а вот обработать полученное-другое.

Евген_21 31.03.2018 19:25

НСО154
Не торопись. ComPort Делфи, нужно изучить. Не все так просто. Испытай такой вариант, при работающем приложении и подключенном ардуино...... Выдерни из ком порта Ардуино и попробуй ,снова считать что то....И хрен.Если использовать библиотеки уже готовые, там как вроде есть проверка на ошибки, и.т.д.Нужны проверки, так же нужно переподключение если устройство ,,отвалилось,, А так тема и самому интересна. Но пока изучаютКом порт. На днях спину , файлик. Думаю тебе понравиться..

НСО154 31.03.2018 19:39

Цитата:

Сообщение от Евген_21 (Сообщение 400912)
НСО154
Не торопись. ComPort Делфи, нужно изучить. Не все так просто. Испытай такой вариант, при работающем приложении и подключенном ардуино...... Выдерни из ком порта Ардуино и попробуй ,снова считать что то....И хрен.Если использовать библиотеки уже готовые, там как вроде есть проверка на ошибки, и.т.д.Нужны проверки, так же нужно переподключение если устройство ,,отвалилось,, А так тема и самому интересна. Но пока изучаютКом порт. На днях спину , файлик. Думаю тебе понравиться..

Не отваливается, работает стабильно.
Проверял.
Одно условие, открытие порта автоматом с открытием формы, а не через отдельную кнопку и Ардуино после передергивания будет подключена к тому же порту.
В первом варианте скетча для Ардуино, есть обратная связь, она у меня и сейчас в авто работает только с лабом, но суть там одна.

Евген_21 31.03.2018 20:01

Цитата:

Сообщение от НСО154 (Сообщение 400913)
Не отваливается, работает стабильно.
Проверял.
Одно условие, открытие порта автоматом с открытием формы, а не через отдельную кнопку и Ардуино после передергивания будет подключена к тому же порту.
В первом варианте скетча для Ардуино, есть обратная связь, она у меня и сейчас в авто работает только с лабом, но суть там одна.

А прога на Делфи продолжает принимать данные от ардуино, даже после того как Арду выдернули из порта и занова подключили? Подключение к ком порту при загрузке формы по любому должно быть. Я сделал так, параметры ком порта из ini файла подгружаються. И сделал панель настроек ком порта и сохранение их в тот же ini файл. И нет привязки пороги к определенному ком порту.


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

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