I can provide more information if needed, such as wiring diagram (though the wiring may be a bit messier than ideal), but first I just thought I would just ask if there was any reason that you knew of that the Maestro and Tic couldn’t both function on a single/common serial line
communicating with an Arduino in a program?
I was working on making a remote control toy tractor using an Arduino
and both a Pololu Tic and Maestro. I’m using a USB Host shield to
connect to a PS4 controller, but have excluded that in the most
reduced code I was testing, but it is the reason why I assigned ports
in the code below to use as RX and TX port.
Distinct ID’s were assigned to the Tic (14) and to the Maestro (12 -
device default I think), and referenced in the code creating the
instance below.
*MicroMaestro maestro(maestroTicSerial, 12);
*TicSerial tic(maestroTicSerial, 14);
I have a code-assigned Arduino TX port, assigned using code:
*SoftwareSerial maestroTicSerial(3, 5); (RX and TX are both assigned here)
running to the RX of each of Maestro and Tic.
I am only using the TX of the Tic (to potentially get information on
position), but am not using the TX on the Maestro (it is not connected
to anything). The Tx of the Tic runs to the code-assigned Arduino RX
port (shown in line of code above).
The Tic works when I comment out the Maestro code. The Maestro works
when the code is present for both (or just the Maestro), but it causes
an error for the Tic (I think Serial error, but can double check if
useful) when the command below is executed:
*maestro.setTarget(wheelTurnPositionChNbr, wheelTurnPosition);
I think I have the ground of both running at least indirectly to the
Arduino, but maybe it’s something as simple as needing a direct common
ground, or a resistor, or such (though I don’t know why a direct
common ground would matter, but I don’t have a lot of background in
this). Mainly, do you know if there is a reason why both the Tic and Maestro
wouldn’t both work on the same serial line (if things are wired
correctly)?
The full code is hopefully uploaded with this (but if I need to copy it in instead just let me know). Two functions at the bottom of the program, ‘ck_errs’ and ‘ck_errs2’, for error checking on TIC using standard function ‘tic.getErrorsOccurred()’ were used in the code I ran, but can likely be ignored here.
Thanks
trctr_cntrl_and_loader_w_ps4_5_14_2022_cmbnd_no_maestro2_rdc5.ino (12.2 KB)