Показать сообщение отдельно
Старый 09.10.2015, 11:29   #4
BR95009
Brocken-Meister
 
Аватар для BR95009
 
Регистрация: 27.04.2012
Адрес: !Msk
Сообщений: 8,618
Сказал(а) 'не согласен(а)'!: 7
Сказали 'не согласен'! 110 раз(а) в 87 сообщениях
Сказал(а) спасибо: 7,024
Поблагодарили 9,323 раз(а) в 3,311 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (9364)
По умолчанию Декодер для стрелки LGB на Ардуино

Декодер для стелок LGB на ардуино мини про.

Макетка и схема:
Нажмите на изображение для увеличения
Название: LGB decoder maket.png
Просмотров: 1421
Размер:	186.2 Кб
ID:	116685
Нажмите на изображение для увеличения
Название: LGB decoder schema.png
Просмотров: 2145
Размер:	101.4 Кб
ID:	116686
Нажмите на изображение для увеличения
Название: soldering.png
Просмотров: 1086
Размер:	82.9 Кб
ID:	116687

Фото (карточка - для масштаба):
Нажмите на изображение для увеличения
Название: IMG_0804.jpg
Просмотров: 1220
Размер:	223.3 Кб
ID:	116688
Нажмите на изображение для увеличения
Название: IMG_0811.jpg
Просмотров: 1436
Размер:	175.2 Кб
ID:	116689
Нажмите на изображение для увеличения
Название: IMG_0813.jpg
Просмотров: 1098
Размер:	153.4 Кб
ID:	116690

Видео:




Скетч:
Arduino код:
// LGB Decoder by BR95009. V02, on Arduino mini Pro
// DCC reading PIN = 2 (from opto coupler)

// DECODER PARAMETERS:
#define DECODER_ADDRESS  1     // Decoder address as in multiMouse.
#define TURN_DELAY     100   // milleconds to wait to move turnout. 
#define REVERS         0   // turn on reverse swithching if needed. - not realized yet

//Define interupt for DCC library
#define kDCC_INTERRUPT   0

//Driver control PINS for FAN8082 motor driver:
#define VIN1Pin 10
#define VIN2Pin  9

bool on_already false// flag to give command to turnout once but not for five consiquent similar DCC packets
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup(){
  
Serial.begin(9600);
  
DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handlertrue);
  
DCC.SetupDecoder0x000x00kDCC_INTERRUPT );
  
pinMode(VIN1PinOUTPUT); pinMode(VIN2PinOUTPUT);
  
//Serial.println("Decoder has started. Waiting for packets...");
  
pinMode(13OUTPUT); // set pin 13 as LED indicator for turnout state
  
digitalWrite(13LOW); //off at the beginnning
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop(){
  
DCC.loop();// Loop DCC library
}
// Basic accessory packet handler
void BasicAccDecoderPacket_Handler(int addressboolean activatebyte data) {
     
//Serial.print("Address sent: "); Serial.println(address, DEC);
  
if ( address == DECODER_ADDRESS) { // if adress in packet matches adress of our decoder then do the actions
    //Serial.print("Basic addr: "); Serial.print(address, DEC); Serial.print(" enable(data): "); Serial.print(enable, DEC); Serial.print(" activate: "); Serial.println(enable, DEC);
    
if ( enable && !on_already) { // TO in pos 0
      
digitalWrite(VIN1PinHIGH); digitalWrite(VIN2PinLOW); digitalWrite(13HIGH);
      
delay(TURN_DELAY);
      
digitalWrite(VIN1PinLOW); digitalWrite(VIN2PinLOW);
      
//Serial.println("ON");
      
on_already true//no more consequtive ONs.
    
}
    if ( !
enable && on_already) { // TO in pos 1
      
digitalWrite(VIN1PinLOW); digitalWrite(VIN2PinHIGH); digitalWrite(13LOW);
      
delay(TURN_DELAY);
      
digitalWrite(VIN1PinLOW); digitalWrite(VIN2PinLOW);
      
//Serial.println("OFF");
      
on_already false;
    }
  }
}
//End of sketch 

Стоимость декодера:
Детали - 483 рубля (ЧипиДип).
Ардуино Мини Про - 140 руб.
Итого: 623 руб.

Стоимость родного декодера от LGB: 55 Евро = 3850 Руб.

Экономим 3200 на декодере или 32'200 на 10-ти декодерах.
__________________
H0 - DR/DB, Ep.III, G и H0m - HSB, Н0е - DR/ÖBB/Zillertalbahn Ep.V-VI. И эночка.
Московский Модуль H0-присоединяйтесь!

Последний раз редактировалось BR95009; 25.10.2016 в 15:27.
BR95009 вне форума  
Вверх
8 пользователя(ей) сказали cпасибо: