Merci pour votre rapide réponse...
Je suis un peu perdu, car sur mon poste connecté à mon Arduino (Linux en l’occurrence) je n'ai rien que 3 dossiers libraries !!!
Un dans /home/lmollard/Arduino/libraries, un autre dans /home/lmollard/ArduinoIDE/libraries, et un autre dans /home/lmollard/.arduino15/packages/arduino/hardware/sam/1.6.12/libraries, et tous ne contiennent pas les mêmes bibliothèques, mais un seul la biblio DCCpp (le /home/lmollard/Arduino/libraries, et c'est là aussi où s'enregistrent par défaut les sketches (/home/lmollard/Arduino)) ! En revanche, aucun d'entre eux ne contient de plug-in nommé LaBox. Le dossier (pour la 1.4.1) s'appelle bien DCCpp et il contient pourtant le dossier Locomotives (quand il est en version 1.4.1 seulement).
Je pars de l'exemple Mini DCC :
/*************************************************************
project: <Dc/Dcc Controller>
author: <Thierry PARIS>
description: <Minimalist Dcc Controller sample>
*************************************************************/
#include "Commanders.h"
#include "DCCpp.h"
#define EVENT_NONE 0
#define EVENT_MORE 1
#define EVENT_LESS 2
#define EVENT_SELECT 3
#define EVENT_CANCEL 4
#define EVENT_MOVE 5
#define EVENT_START 6
#define EVENT_END 7
#define EVENT_EMERGENCY 8
#define EVENT_FUNCTION0 9
#define EVENT_FUNCTION1 10
#define EVENT_ENCODER 11
ButtonsCommanderPush buttonSelect;
ButtonsCommanderEncoder buttonEncoder;
ButtonsCommanderPush buttonCancel;
ButtonsCommanderPush buttonEmergency;
ButtonsCommanderSwitchOnePin buttonF0;
ButtonsCommanderSwitchOnePin buttonF1;
// in this sample, only one loco is driven...
int locoId; // DCC id for this loco
int locoStepsNumber; // 14, 28 or 128
int locoSpeed; // Current speed
bool locoDirectionForward; // current direction.
FunctionsState locoFunctions; // Current functions
void setup()
{
Serial.begin(115200);
buttonSelect.begin(EVENT_SELECT, A0);
buttonEncoder.begin(EVENT_ENCODER, 14, 8, 2);
buttonCancel.begin(EVENT_CANCEL, A3);
buttonEmergency.begin(EVENT_EMERGENCY, A4);
buttonF0.begin(EVENT_FUNCTION0, A1);
buttonF1.begin(EVENT_FUNCTION1, A2);
DCCpp::begin();
DCCpp::beginMain(UNDEFINED_PIN, DCC_SIGNAL_PIN_MAIN, 11, A0);
locoId = 3;
locoStepsNumber = 128;
locoSpeed = 0;
locoDirectionForward= true;
}
void loop()
{
DCCpp::loop();
unsigned long event = Commanders::loop();
switch (event)
{
case EVENT_ENCODER:
int data = Commanders::GetLastEventData();
if (data > 0)
{
if (locoStepsNumber >= 100)
locoSpeed += 10;
else
locoSpeed++;
if (locoSpeed > locoStepsNumber)
locoSpeed = locoStepsNumber;
DCCpp::setSpeedMain(1, locoId, locoStepsNumber, locoSpeed, locoDirectionForward);
}
if (data < 0)
{
if (locoStepsNumber >= 100)
locoSpeed -= 10;
else
locoSpeed--;
if (locoSpeed < 0)
locoSpeed = 0;
DCCpp::setSpeedMain(1, locoId, locoStepsNumber, locoSpeed, locoDirectionForward);
}
case EVENT_FUNCTION0:
if (locoFunctions.isActivated(0))
locoFunctions.inactivate(0);
else
locoFunctions.activate(0);
DCCpp::setFunctionsMain(2, locoId, locoFunctions);
break;
case EVENT_FUNCTION1:
if (locoFunctions.isActivated(1))
locoFunctions.inactivate(1);
else
locoFunctions.activate(1);
DCCpp::setFunctionsMain(2, locoId, locoFunctions);
break;
}
}
A noter que pour ce qui est de la lenteur du programme, elle est présente même si je n'initialise pas le Serial port avec Serial.begin. Mais c'est peut être normal, tant que le soucis de DEGUG = Off n'est pas résolu.
Je vais peut être tenter une réinstall propre de Arduino IDE...
Juste une précision pour me rassurer : Il est bien possible, conjointement à DCCpp d'utiliser des servomoteurs (avec Servo.h) et les commander avec les instructions en Microsecondes ?
Encore merci...