mrdreambot:
- IR - at one time, I was able to read the distance by issuing the 0xa0 command to the device and it responds with a value. And I can map the response using a formula to get the distance. I forgot which command has to precede that. But now, I cannot repeat it anymore. Command 0xa0 always returns the same value!
On start-up, after the standard sequence, the command is FF DF FE FE FE 9n. However, this does not appear to be an active request for info as 0x00 is returned. It may be a "keep awake" check of some sort.
When I activate the remote controller, the message changes to FF DD FE FE FE 7n, and a value is returned. The value is to be read as 2 nybbles. The most significant gives the range sensed by MAX's left side sensor, with the less significant giving the range from the right sensor. So a return of 0xD8 would indicate something about 120 mm away from the right sensor. Approximate checks give a range of 50 mm for a return of 0x22, 100 mm for 0x66, and 150 mm for 0xAA
mrdreambot:
2) The MAX motors - you identified the forward and backward commands. Are there other commands eg, controlling the speed, stop, etc. It appears that if you don't send them forward/backward commands for a while, the motors will stop. There seems to be several commands that stop the motor. I am using 0x30. I have to retest this.
The startup sequence for the motors is:
... Starting ...
FF FE FE FE FE A1 - ~~
FF FE FE FE FE A1 - ~~
FF FE FE FE FE A2 - ~~
FF FE FE FE FE A3 - ~~
FF FE FE FE FE A0 - fe
FF FE FE FE FE A1 - ~~
FF FE FE FE FE A2 - ~~
FF FE FE FE FE A3 - ~~
FF FE FE FE FE A0 - fe
FF FC FE FE FE 81 - ~~
FF FC FE FE FE 82 - ~~
FF FC FE FE FE 83 - ~~
FF FC FE FE FE 80 - 5
FF FC FE FE FE 81 - fe
FF FC FE FE FE 82 - ~~
FF FC FE FE FE 83 - ~~
FF FC FE FE FE 80 - 5
FF FC FC FE FE 61 - 5
FF FC FC FE FE 62 - ~~
FF FC FC FE FE 63 - ~~
FF FC FC FE FE 60 - 5
FF 0 FC FE FE 91 - 5
FF 0 FC FE FE 92 - ~~
FF 0 FC FE FE 93 - ~~
FF 0 FC FE FE 90 - 0
FF 0 0 FE FE C1 - 1
FF 0 0 FE FE C2 - ~~
FF 0 0 FE FE C3 - ~~
FF 0 0 FE FE C0 - 0
FF 0 0 FE FE C1 - 1
FF 0 0 FE FE C2 - ~~
FF 0 0 FE FE C3 - ~~
The " 0 0" command group is the quiescent one, with nothing running.
check
The motor control codes are complex, and there appears to be a "keep awake" here. The static sequence is the FF 00 00 FE FE Cn group as above, but there are occasional appearances of FF 20 20 FE FE 10 as well.
When I use the programming tool to "Roll Motor 0 forward at a slow speed" there is a sequence:
FF 0 0 FE FE C0 - 0
FF 0 0 FE FE C1 - 2
FF 0 0 FE FE C2 - ~~
FF 0 0 FE FE C3 - ~~
FF 0 0 FE FE C0 - 0
FF 0 0 FE FE C1 - 2
FF 0 0 FE FE C2 - ~~
FF 45 20 FE FE 93 - ~~
FF 24 0 FE FE 40 - 0
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 20 FE FE 60 - 0
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 8
FF 24 0 FE FE 41 - 2
FF 24 20 FE FE 62 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - e
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 20 FE FE 60 - 14
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 1c
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 20 FE FE 63 - ~~
FF 24 0 FE FE 40 - 22
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 28
FF 24 20 FE FE 61 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 30
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 20 FE FE 63 - ~~
FF 24 0 FE FE 40 - 35
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 20 FE FE 60 - 3c
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 44
FF 24 0 FE FE 41 - 2
FF 24 20 FE FE 62 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 4a
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 0
FF 24 20 FE FE 61 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 8
FF 24 0 FE FE 41 - 2
FF 24 20 FE FE 62 - ~~
FF 24 0 FE FE 43 - ~~
If I start the same motor forward in the "fast"mode, the sequence is:
FF 4A 20 FE FE E1 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 24 0 FE FE 40 - 38
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 20 FE FE 63 - ~~
FF 24 0 FE FE 40 - 43
FF 24 0 FE FE 41 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
For Motor 1 (MAX's right) the initial code is FF 20 45 FE FE 91 for slow; FF 20 4A FE FE
with the only difference being the initial 4A instead of 45. So it looks like the rotation direction is given by the ongoing command - 24 for forward, 34 for reverse - with the speed given by a command 4a, where a varies depending on the desired speed. This will need to be checked.
To stop a motor, use a speed value of 40. The actual sequence to stop motor 1 is:
FF 0 24 FE FE 40 - 1e
FF 0 24 FE FE 41 - e
FF 0 24 FE FE 42 - ~~
FF 20 24 FE FE 63 - ~~
FF 0 24 FE FE 40 - 1e
FF 20 40 FE FE 31 - 15
FF 0 20 FE FE F2 - ~~
FF 0 0 FE FE C3 - ~~
FF 0 0 FE FE C0 - 1e
FF 0 0 FE FE C1 - 1a
FF 0 0 FE FE C2 - ~~
FF 0 0 FE FE C3 - ~~
and for Motor 0 :
FF 24 0 FE FE 40 - 40
FF 24 20 FE FE 61 - 2
FF 24 0 FE FE 42 - ~~
FF 24 0 FE FE 43 - ~~
FF 40 20 FE FE 30 - 47
FF 20 0 FE FE F1 - 2
FF 0 0 FE FE C2 - ~~
FF 0 0 FE FE C3 - ~~
There's a lot to digest here, and I can't see what the significance of the returned value is. Perhaps a check in the LIM mode will help.
I hope that makes some sense to you!