Скорость не может быть отличной от 9600 т.к. шина работает именно с этой скоростью.
 
			
			 
					
				
			
			 
			
				 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				Скорость не может быть отличной от 9600 т.к. шина работает именно с этой скоростью.
 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				хороший модем должен качать пиво!
Мой проект
 
			
			 
					
				
			
			 
			
				 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				XsanderS, я собственно хотел использовать твою прошивку для Nano, по этому у тебя про адапрер и спросил, т.к. в прогу Chip'а никакие данные не приходят. Ещё нля тестов пробовал код из первого поста, вот он данные читает, но не те.
И ещё вопросик. Подскажи, пожалуйста, что делает этот кусок кода?
В прошивке для Меги там понятно, а тут вроде после условия нет никакого действия, или я чего не правильно понял?
PHP код:{
if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x11 ); // Нажал +
else if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x10 ) ; // Нажал -
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x01 || IBUSbyte[4] == 0x11 ) ) ; // Нажата next
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x21 ) ; // Отпустил next
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x08 || IBUSbyte[4] == 0x18 ) ) ; // Нажата previous
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x28 ) ; // Отпустил previous
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x80 || IBUSbyte[4] == 0x90 ) ) ; // Нажата dial
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0xA0 ) ; // Отпустил dial
else if( IBUSbyte[2] == 0xC8 && IBUSbyte[3] == 0x01 ) ; // Нажата R/T
}
 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				К сожалению у меня нет автомобиля БМВ и проверить нет возможности
 
			
			 
					
				
			
			 
			
				 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				Это понятно. Ваша программа (IR Key) работает так как нужно. Её удалось успешно подружить с кодом из первого поста. Но вот данные в этом случае передаются совершенно искаженные. И если коды кнопок с руля можно соснифить, то о более широком функционале можно забыть, а команды с кнопок руля это только процентов 20 от того, что хочется реализовать. Вот прошивка XsanderS'a (с его адаптером) судя по всему принимает сигнал в таком виде, в котором он передается.
 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				В программе не учитывал последовательность и порядок выталкивания битов, при желании в коде для Arduino можно это исправить.
 
			
			 
					
				
			
			 
			
				 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				Подскажите, пожалуйста, как из ардуино в вашу программу можно передать массив byte data[6] = {0x50, 0x04, 0x68, 0x32, 0x11, 0x1F} чтобы ваша программа восприняла его как команду "50046832111F" и выдала соответствующее сочетание клавиш, или так сделать невозможно в принципе?
Я сейчас использую один байт для передачи в комп, всю обработку делаю на ардуино. Но неплохо бы разгрузить его маленько и передавать в комп всю команду, а там уже разбираться что с ней делать.
 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				вот кусок кода из программы
Получается тот байт который пришел последним будет старшим байтомPHP код:res_data:=FT_In_Buffer[5];
res_data:=(res_data shl 8) or FT_In_Buffer[4];
res_data:=(res_data shl 8) or FT_In_Buffer[3];
res_data:=(res_data shl 8) or FT_In_Buffer[2];
res_data:=(res_data shl 8) or FT_In_Buffer[1];
res_data:=(res_data shl 8) or FT_In_Buffer[0];
Последний раз редактировалось Chip; 19.01.2010 в 02:11.
 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				Ты наверно имел ввиду этот кусок
1. Если тебе не надо по нажатию кнопок дергать пинами Arduino то этот кусок тебе не нужен. ниже кода для Мега описано как он работает и специально написал что код довольно специфичен, под пой проект заточенный. Так как мало кто использует версию Мега я упростил и подправил код для более компактных моделей Carduino, например Nano, Demilanova, Dcimila. этот упрощенный код ничего не делает кроме как выхватывает нажатия кнопок с шины и шлет эти данные в комп. Этот код в таком виде как он есть подойдет только для того чтобы подключить кнопки руля к компу, так как кроме информации о нажатии кнопок в комп ничего не просочиться.PHP код:{
if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x11 ) digitalWrite(8, HIGH); // Нажал +
else if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x10 ) digitalWrite(9, HIGH); // Нажал -
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x01 || IBUSbyte[4] == 0x11 ) ) digitalWrite(10, HIGH); // Нажата next
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x21 ) digitalWrite(10, LOW); // Отпустил next
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x08 || IBUSbyte[4] == 0x18 ) ) digitalWrite(11, HIGH); // Нажата previous
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x28 ) digitalWrite(11, LOW); // Отпустил previous
else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x80 || IBUSbyte[4] == 0x90 ) ) digitalWrite(12, HIGH); // Нажата dial
else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0xA0 ) digitalWrite(12, LOW); // Отпустил dial
}
Настройка порта IBUS 9600Подскажите, пожалуйста, как из ардуино в вашу программу можно передать массив byte data[6] = {0x50, 0x04, 0x68, 0x32, 0x11, 0x1F} чтобы ваша программа восприняла его как команду "50046832111F" и выдала соответствующее сочетание клавиш, или так сделать невозможно в принципе?
Настройка скорости передачи в комп 115200
программа назначит на эти команда свой код.
запускаешь программу, разворачиваешь ее, нажимаешь кнопку/шлеш в ком порт 50046832111F программа показывает код нажатия хххххххххх, затем этот код вписываешь в таком формате <хххххххххх>Key1=49 /> в файл config. Только в ручную, утилита для назначения комбинаций кнопок видит только первые 4 байта и на все пакеты в которых до 4го байта ничего не не меняется будет назначать один код нажатия.
Напиши все функции которые выполняет Carduino в твоем проекте. если в истории с IBUS Carduino служит только для передачи данных с шины в комп то зачем лишние нагрузки на Carduino лучшеЯ сейчас использую один байт для передачи в комп, всю обработку делаю на ардуино. Но неплохо бы разгрузить его маленько и передавать в комп всю команду, а там уже разбираться что с ней делать.
настроить отдельно связь с шиной.
ЗЫ: Пишите что именно хотите реализовать (полностью) У меня сейчас проблемки, надо навести порядок в делах. Не могу сосредоточеться на форуме, но до конца этого месяца думаю разобраться и тогда помогу и если надо будет у себя протестирую.
Последний раз редактировалось XsanderS; 20.01.2010 в 17:11.
хороший модем должен качать пиво!
Мой проект
 
			
			 
					
				
			
			 
			
				 Re: Carduino и  I-BUS
 Re: Carduino и  I-BUS
				Chip, спасибо! Теперь всё ясно.
Просто я пытался сделать сначала как писал XsanderS:
Прописал в конфиге именно <50046832111F>Key1=49 />. Но так работать не будет, если посылать в программу "50046832111F", то в кофиге нужно прописывать преобразованное в Dec число. Заминка вышла именно тут, думал что-то не так делаю.
XsanderS, большое спасибо за развернутый ответ! Но обо всех этих тонкости можно начать думать когда данные из шины получится считать в ардуино. У меня (и ещё как минимум 2х людей на этом форуме) данные считываются в виде каши, из всего пакета, необъяснимым образом совпадает только первый байт. Я в первом своём сообщении спрашивал именно о схеме подключения. Пожаааалуйста поделись схемой
Идей море, и передача нажатий кнопок в комп, это лишь малая часть проекта. Остальное крайне сложно реализовать, т.к. данные приходят криво.
Последний раз редактировалось delach; 20.01.2010 в 23:50.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)