Цитата:
Сообщение от 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