Показать сообщение отдельно
Старый 23.09.2018, 22:20   #237
ganson
Новый Пользователь
 
Регистрация: 24.05.2017
Регион: Беларусь
Сообщений: 13
ganson is on a distinguished road
По умолчанию

Здравствуйте. Прошу прощения за ламерские вопросы, Arduino nano неделя как в руках, в написании программ - 0. Хочу сделать управление не заводской магнитолой с руля ( CAN ). Скетч , человека который это делал , пытаюсь подправить под свою шину. Изначально написано для посылок - ID + data 1 байт. У меня посылки - ID + data 4-е байта. Как не правлю под четыре байта - либо ошибка, либо принимает только первый.
Вот кусок

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
switch(canMsg.can_id & 0x5FF) {

case 0x5c1: // кнопки
if(key != canMsg.data[0]) {
switch(canMsg.data[0]) {
case 00: // Unpress (All)
switch(key) {
case 6: // Unpress Vol Up
Serial.println("Unpress Vol Up");
digitalWrite(vol_up, LOW);
break;
case 7: // Unpress Vol Down
Serial.println("Unpress Vol Down");
digitalWrite(vol_down, LOW);
break;
case 2: // Unpress Next
Serial.println("Unpress Next");
digitalWrite(next, LOW);
break;
case 3: // Unpress Prev
Serial.println("Unpress Prev");
digitalWrite(prev, LOW);
break;
case 0x1a: // Unpress SRC
Serial.println("Unpress SRC");
digitalWrite(sourse, LOW);
break;
case 0x2b: // Unpress Mute
Serial.println("Unpress Mute");
digitalWrite(mute, LOW);
break;
}
break;
case 6: // Press Vol Up
Serial.println("Press Vol Up");
digitalWrite(vol_up, HIGH);
break;
case 7: // Press Vol Down
Serial.println("Press Vol Down");
digitalWrite(vol_down, HIGH);
break;
case 2: // Press Next
Serial.println("Press Next");
digitalWrite(next, HIGH);
break;
case 3: // Press Prev
Serial.println("Press Prev");
digitalWrite(prev, HIGH);
break;
case 0x1a: // Press SRC
Serial.println("Press SRC");
digitalWrite(sourse, HIGH);
break;
case 0x2b: // Press Mute
Serial.println("Press Mute");
digitalWrite(mute, HIGH);
break;
}
key = canMsg.data[0];
}
break;

break;
}
}
}

У меня ID - 32A, ничего не нажато - 02 00 00 00, + 02 10 00 00, - 02 20 00 00, > 02 40 00 00, < 02 80 00 00, up 02 01 00 00, dn 02 02 00 00.
Как написать , что бы arduino видела все четыре байта?
ganson вне форума   Ответить с цитированием