Вопросы эксплуатации > Допы

Индикация круиз контроля CEED FL

(1/20) > >>

drPopov:
Привет всем.
Появилось время на разбирательство с CAN шиной автомобиля, в частности с индикацией на приборной панели круиз контроля.
Было предложение по реализации от украинских друзей - Tema_TT, но проект коммерческий и автор не дал никакой информации.

Мой проект основан на микроконтроллере Atmega (код помещается даже в Atmega8) и драйвере CAN шины mcp2515 и транссивере mcp2551.
Схем в инете полно, но я свою тоже нарисовал.


и печатную плату тоже. может кто лучше разведет, у меня получилось 3 перемычки.
Конечный размер устройства 3,5см на 4,5см.


Прикрепляю ссылку на архив и сам архив с прошивкой, платами для вытравливания.
В архиве есть:
1- Папка CANARDUINO_ino - это проект для Arduino
2- CAN_SPI.PDF  - это мой вариант платы для ЛУТ.
3- CANARDUINO.hex - прошивка.
4- CAN_SPI.pdsprj - проект для Proteus 8
5,6... - другие схемы.

Код для компилятора Arduino:

--- Код: ---#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
String stringOne;

void setup()
{
  Serial.begin(115200);
  CAN.begin(CAN_500KBPS);                       // init can bus : baudrate = 500k
  pinMode(2, INPUT);  // Setting pin 2 for /INT input
  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);

  //установим маску и фильтр на сообщения Can
  CAN.init_Mask(0, 0, 0x7FF);
  CAN.init_Mask(1, 0, 0x7FF);
  CAN.init_Filt(0, 0, 0x260);
  CAN.init_Filt(1, 0, 0x260);
  CAN.init_Filt(2, 0, 0x260);
  CAN.init_Filt(3, 0, 0x260);
  CAN.init_Filt(4, 0, 0x260);
  CAN.init_Filt(5, 0, 0x260);
}

void loop()
{
  if(!digitalRead(2))                         // If pin 2 is low, read receive buffer
  {
    CAN.readMsgBuf(&len, rxBuf);              // Read data: len = data length, buf = data byte(s)
    rxId = CAN.getCanId();    // Get message ID

    if (String(rxId, HEX) == "260") {
      for(int i = 0; i<len; i++)                // each byte of the data
      {
        if ( i==3 ){  //бит
          stringOne = String(rxBuf[i], HEX);
          if (stringOne=="32") {   //КК включен
            analogWrite(A1,0);
            analogWrite(A0,255);
          }
          else if (stringOne=="36") {   //SET включен
            analogWrite(A0,255);
            analogWrite(A1,255);
          }
          else  //все выключено
          {
            analogWrite(A0,0);
            analogWrite(A1,0);
          }  
        }
      }
    }
  }
}


--- End code ---

Видео как это работает на макетке
http://youtu.be/TQ6xSct9B-Q

Ну а в планах заставить дополнительный маленький диплей над магнитолой показывать текст который мне нужен.
Всем спасибо за внимание. Другие проекты в подписи.

lecs1:
Привет  :)
Сам будешь собирать? ЗАКАЗАЛ БЫ. Купил  rulezz

drPopov:

--- Цитата: lecs1 от Ноябрь 23, 2013, 10:19:25 am ---Сам будешь собирать? ЗАКАЗАЛ БЫ. Купил
--- End quote ---

Себе соберу, за деньги собирать никому не буду - банально нет времени.
Может сделаю 3-4 платки когда себе буду травить.
Выложу тут подробно как самому сделать и прошить контроллер.

De3mond:
Жду инфу, подписываюсь, буду благодарен за любые ништяки  советы!

Андрей Александрович:
красава

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Go to full version