Показать сообщение отдельно
Старый 08.08.2016, 20:55   #48
YMOR2012
Заглянувший
 
Регистрация: 16.08.2012
Адрес: Ржев
Сообщений: 60
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 5
Поблагодарили 63 раз(а) в 17 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: скоро придёт к известности (63)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
Проверить в "железе" неcмогу, но по идее можно вызывать напрямую в функцию,
которая обрабатывает serial...
SerialCommand:: parse("t1 1 50 1"); // лок id 1, adress 1, скорость 50, направление 1 (<t1 1 50 1>)
Для простой остановки пишем скорость = 1.
Благодарю Владимир за подсказку -все заработало. Вот рабочий код "челночного" движения:

Arduino код:
///////////////////////////////////////////////////////////////////////////////
// MAIN ARDUINO LOOP
///////////////////////////////////////////////////////////////////////////////

void loop(){
  
  
SerialCommand::process();              // check for, and process, and new serial commands
  
  
if(CurrentMonitor::checkTime()){      // if sufficient time has elapsed since last update, check current draw on Main and Program Tracks 
    
mainMonitor.check();
    
progMonitor.check();
  }

  
Sensor::check();    // check sensors for activate/de-activate

  //////////////////////  челночное движение  //////////////////////
  //digitalWrite(SIGNAL_ENABLE_PIN_MAIN,HIGH); // включаем основной трек или;
  
SerialCommand:: parse("1"); // включаем станцию;
  
SerialCommand:: parse("t 1 99 50 1");
  
delay(3000); // едем вперед
  
SerialCommand:: parse("t 1 99 0 1");
  
delay(6000); // тормозим
  
SerialCommand:: parse("t 1 99 50 0");
  
delay(3000); // едем назад
  
SerialCommand:: parse("t 1 99 0 1");
  
delay(3000); // тормозим
  
SerialCommand:: parse("0"); // выключаем станцию или;
  //digitalWrite(SIGNAL_ENABLE_PIN_MAIN,LOW); // выключаем основной трек;
  
delay(5000); // пауза
// loop 
Собственно если использовать ардуинку в таком варианте, то для управления макетом вообще больше ничего не нужно -можно один раз залить код с нужной логикой управления и наслаждаться действием
P.S. код вставляем в модуль DCCpp_Uno вместо существующего void loop
YMOR2012 вне форума  
Вверх
Пользователь сказал cпасибо: