![]() |
Цитата:
Цитата:
|
Цитата:
Но я попробую его отпаять :) Пин 2 законнекчен с выводом 12 (INT) MCP2515 И повторюсь- как вот это повторить на ардуино 125 6 01110000 TTTTTTTT AAAAAAAA 0SXEBBBB MMMMMMMM 00000000 [[JJJJJJJJ x20] [HHHHHHHH x20] x0-4] 6 Показать меню списка треков. TTTTTTTT - количество треков, AAAAAAAA - offset экрана списка треков, S - флаг "покажи список треков" E - флаг "список треков сдвинулся" на 1 позицию выше или ниже за пределы 4х видимых в данный момент. Направление сдвига определяется по BBBB BBBB - offset выбранного трека внутри экрана списка треков MMMMMMMM - дескриптор текстовых данных, идущих далее. каждая пара бит соответствует наличию исполнителя и названия трека, идущих далее пакетами по 20 байт в соответствующем порядке. Позиции соответствуют позициям на экране, кроме ситуации наличия флага E [JJJJJJJJ x20] - 20 байт имени исполнителя [HHHHHHHH x20] - 20 байт названия трека 125 1 00000000 Спрятать меню списка треков. (Нажатие на OK после выбора трека в LIST, нажатие на ESC, по таймаут) |
А может быть пропуски потому, что не используется пин 2?
Попробуйте этот скетч: PHP код:
|
Цитата:
Если я правильно понимаю, то проверяется возникновение чего-то на пине 2, и если оно появилось, то читаем данные из буфера. У меня написано тоже самое, только проверка делается if(CAN_MSGAVAIL == CAN.checkReceive()) в библиотеке INT8U MCP_CAN::checkReceive(void) { INT8U res; res = mcp2515_readStatus(); /* RXnIF in Bit 1 and 0 */ if (res & MCP_STAT_RXIF_MASK) { return CAN_MSGAVAIL; } else { return CAN_NOMSG; } } ..................................... INT8U MCP_CAN::mcp2515_readStatus(void) { INT8U i; MCP2515_SELECT(); spi_readwrite(MCP_READ_STATUS); i = spi_read(); MCP2515_UNSELECT(); return i; } Тоесть я проверяю и так наличие единицы. |
lti1, вот только подумал тоже самое :smile2:
|
Цитата:
|
Цитата:
if(!digitalRead(2)) Я блин не как не въеду в синтаксис! Что делает "!" |
! - логический оператор. Пример !1=0 (false), !0=1 (true). Если на ножке 0 то условие выполняется
Можно немного ускорить работу, чтобы было поменьше лишних проверок: Код:
if(!digitalRead(2)) // check if data coming |
Цитата:
А про 125 сообщение ни кто не знает как его отобразить? И всётаки как загнать все данные в одну строку? Хочу вообще уменьшить скорость выдачи данных в порт. Если ни чего не поменялось в группе данных, то их и не выводить в порт. Тогда скорость порта станет вообще не особо критичной. |
Цитата:
Код:
void setup() { |
Часовой пояс GMT +4, время: 13:14. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot