![]()  | 
	
| 		
			
			 | 
		#101 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Короче получил в лоб от Pro Micro! 
		
	
		
		
		
		
		
		
			подключаю плату кан 10 вывод CS, 16 MOSI, 14 MISO, 15 SCK. (эти выводы идут подряд на самом деле на плате дуины взято отсюда распиновка https://learn.sparkfun.com/tutorials...3-hookup-guide) И нефига не работает! Такое впечатление что контроллер подвисает! Отcоединяем SCK и естественно эрор инита. Даже попробовал именно под эту плату бутлоадер https://github.com/sparkfun/Arduino_Boards и ни чего! Перепаял назад на Nano- всё работает снова! Это так, ради страховки, ну типо не попалил ли я платку кана пока паял. У кого какие соображения? Хочется на pro-micro всё собрать. Последний раз редактировалось T_r_D; 29.10.2015 в 17:35.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#102 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Сам себе отвечаю. 
		
	
		
		
		
		
		
	
	Всё и так работало, просто то что в void setup() было в порт не попадало. Другие ардуины проходили инит при подключении программы к COM порту (или сбрасывались), а эта нет. Так что если нужно увидеть эти сообщения, то нужна задержка в 10 секунд. Там лоадер инится 8 секунд. А по подключению то что выше написал. И ещё на ардуине перемычку запаял чтоб плата CAN питалась напрямую от порта, а не через резистор на плате. Как только всё заработает окончательно питание с USB разъёма вообще уберу. Ща время нету, но попозде попробую с Interupt сделать и скажу пропали задержки или нет. По поводу меню. Само меню реально прошито в дисплее. Дисплей ловит нажатия на кнопки после получение сообщения от магнитолы что мы нажали кнопку меню. Далее обрабатывает нажатия кнопок и в обратку выдаёт в 125 сообщение активна настройка или нет. Скорее всего при изменении значения меню посылается или модифицируется сообщение. И скорее всего это сообщение 1E0. Так что данные об том что в данный момент на дисплее отображает меню в CAN не идёт. Посему это можно реализовать только ловя нажатие кнопок без пропусков и задержек. Если модуль радио покажет себя лутчше чем штатная магнитола, то париться с этим я больше не буду.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#103 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 17.01.2010 
				
				Возраст: 49 
				
Город: Самара 
Регион: 63, 163 
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶ 
					Сообщений: 457
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 PHP код: 
	
			
	Последний раз редактировалось lti1; 31.10.2015 в 15:22.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#104 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 Я наступаю на грабли char* OUTLINE[] = {"RPM","|","SPD","|","ILPK","|","LPK","|","Trip"," |","AVG SPD","|","Themp"}; задали массив и так его можно выводить спокойно, но он требует char. модифицируем строку которая в int RPM = (int)buf[0] << 5 | buf[1] >> 3; в str = String((int)buf[0] << 5 | buf[1] >> 3); загоняем в массив OUTLINE[0] = str; Получаем несоответствие типов данных. Как это побороть? мне просто нужно чтоб был какой нить разделитель в строке между числами.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#105 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 29.07.2015 
				
				
				
Регион: 64 
Машина: VW Tiguan 
					Сообщений: 89
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Наверное так, если я правильно понял задачу: 
		
	
		
		
		
		
		
	
	Код: 
	void setup() {
Serial.begin(115200);
}
void loop() {
char *OUTLINE[] = {"RPM","|","SPD","|","ILPK","|","LPK","|","Trip","|","AVG SPD","|","Themp"}; 
for(byte i=0; i<13; i++){
Serial.print(OUTLINE[i]); //вывод: RPM|SPD|ILPK|LPK|Trip|AVG SPD|Themp
}
Serial.println();
String str;
str = String(123.456,3);
OUTLINE[8]="";
str.toCharArray(OUTLINE[8],str.length()+1); //копируем новые данные в OUTLINE[8]
for(byte i=0; i<13; i++){
Serial.print(OUTLINE[i]); //вывод: RPM|SPD|ILPK|LPK|123.456|AVG SPD|Themp
}
a:
goto a;
}
 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#106 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 Именно это и нужно. Блин, какой С оказывается не простой язык. Паскаль проще.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#107 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 но поторопился! 
		
	
		
		
		
		
		
		
			char *OUTLINE[] = {"RPM","|","SPD","|","ILPK","|","LPK","|","Trip"," |","AVG SPD","|","Themp"}; for(int i=0; i<13; i++){ Serial.print(OUTLINE[i]); } Так будет всё правильно, но стоит между этим вставить OUTLINES[0] = ""; str = String(123); str.toCharArray(OUTLINES[0],str.length()+1); OUTLINES[1] = "bbb"; как вместо того что нужно получим 123123|bbb|SPD||| А если сделаем вот так, то получим ещё круче! OUTLINES[0] = ""; str = String(123); str.toCharArray(OUTLINES[0],str.length()+1); OUTLINES[1] = ""; str = String(278); str.toCharArray(OUTLINES[1],str.length()+1); OUTLINES[2] = "str"; выведет 278278|278|str||| Последний раз редактировалось T_r_D; 01.11.2015 в 14:45.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#108 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Короче сделал вот так: 
		
	
		
		
		
		
		
	
	#include <SPI.h> #include "mcp_can.h" MCP_CAN CAN(10); unsigned char len = 0; unsigned char buf[8]; INT32U canId = 0x000; // идентификаторы могут быть 11-ти или 29-битные //RPM SPD ILPK LPK AVG_SPD Trp Tmp // /100 /10 /10 делить на int OUTLINES[] = {0,0,0,0,0,0,0}; void setup() { Serial.begin(115200); pinMode(9, INPUT); delay(10000); START_INIT: if(CAN_OK == CAN.begin(CAN_125KBPS,MCP_8MHz)) {Serial.println("Init OK!");} else {Serial.println("Init fail");delay(100);goto START_INIT;} } void loop() { if(CAN_MSGAVAIL == CAN.checkReceive()) { CAN.readMsgBuf(&len, buf); canId = CAN.getCanId(); //_________________________________TRIP_____________ ______________________ if(canId == 182) //0B6 { OUTLINES[0] = (int)buf[0] << 5 | buf[1] >> 3; //Обороты OUTLINES[1] = ((int)buf[2] << 8 | buf[3]); //скорость / 100 } if(canId == 545) //221 { OUTLINES[2] = (int)buf[1] << 8 | buf[2]; //моментальный расход / 10, если -1 то показаний нет //ARCFL = (int)buf[3] << 8 | buf[4]; //Километры на остатке топлива } if(canId == 673) //0B6 { OUTLINES[3] = (int)buf[3] << 8 | buf [4]; //Расход на 100км /10 OUTLINES[4] = buf[0]; //Средняя скорость OUTLINES[5] = ((int)buf[1] << 8 | buf [2]); //Трип } if(canId == 246) //0F6 { OUTLINES[6] = (buf[6] / 2) - 39; //Температура //Odometr = ((unsigned long)buf[2] << 16 | (unsigned int)buf[3] << 8 | buf[4])/10; //Там есть десятые километра } } __________________________________Выводим данные__________________________________ Serial.print("<TRIP|"); for(int i = 0; i < 7; i++) { Serial.print(OUTLINES[i]); if (i != 6){Serial.print("|");} } Serial.println(">"); } Это собственно всё что показывает борт комп не считая сообщений информационных. Ну и то что закоменчено, то на верхнем дисплее и скорость с оборотами тоже. Надо ещё поколдовать и сделать что если массив не менялся, то и данные выводить не надо.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#109 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 17.01.2010 
				
				Возраст: 49 
				
Город: Самара 
Регион: 63, 163 
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶ 
					Сообщений: 457
				 
				
				![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 PHP код: 
	
			
	Какой-то костыль получается, но работает. Ссылка.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#110 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.07.2015 
				
				
				
Регион: 77, 97, 99, 177 
					Сообщений: 372
				 
				
				![]() ![]() ![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 ![]() Я уже int массив сделал, в принципе и так пойдёт.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
![]()  | 
	
	
		
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
		
  | 
	
		 |