Menu

Special Wiki Pages

Special Thanks!

This Wiki wouldn't be possible without @ToeiRei. Thank you for all of your help and guidance. Another special mention goes out to @Darkgrue, who writes and maintains the technical documentation.

TAIL PROTOCOL

Command list for The Tail Company DIGITAiL Firmware Ver 2.21 (05Nov2019).

Command List

NOTE: Commands are all case insensitive

Tail Moves

TAILHM HoMe position
TAILS1 Slow wag 1
TAILS2 Slow wag 2
TAILS3 Slow wag 3
TAILFA FAst wag
TAILSH SHort wag
TAILHA HAppy wag
TAILER ERect
TAILEP Erect Pulse
TAILT1 Tremble 1
TAILT2 Tremble 2
TAILET Erect Trem
TAILU1 User defined 1
TAILU2 User defined 2
TAILU3 User defined 3
TAILU4 User defined 4

Led Patterns

LEDOFF LEDs off
LEDREC Blink 1 second on, 1 second off
LEDTRI Fade in 1 second – Fade out 1 second
LEDSAW Fade in 2 seconds – off
LEDSOS Morse SOS
LEDBEA Beacon (100ms on every 2 seconds)
LEDFLA Flame
LEDSTR Strobo
LEDUS1 User defined 1
LEDUS2 User defined 2
LEDUS3 User defined 3
LEDUS4 User defined 4

Other Commands

PING Returns ‘OK’
VER Returns the Firmware version number
SHUTDOWN Switches off the unit (will lose the BT connection!)
USERMOVE See below
USERLEDS See below
AUTOMOVE See below

Send User Defined Tail Moves and LEDs Patterns

Up to 4 user-defined move definitions and 4 LED patterns can be sent over the BT connection and assigned to user presets (callable with the TAILU1 … TAILU4 commands). These presets will be lost once the unit is powered off.

The two instructions used to send a tail move or a LED pattern definition follow the same syntax and consist in a keyword (usermove or userleds) followed by a number of parameters. These are letter-number pairs, where the letter defines the type of parameter (see table).

USERMOVE U<n> P<n> N<nnn> A<n> A<n> … A<n> B<n> B<n> … B<n> S<nnn> S<nnn> … S<nnn>
USERLEDS U<n> P<nn> N<nnn> A<n> A<n> … A<n> S<nnn> S<nnn> … S<nnn>

<n> 1-digit number <nn> 1- or 2-digit number <nnn> 1- to 3-digit number

Letter prefix Parameter type Range of values for moves Range of values for LED patterns
U User preset number 1..4 1..4
P Number of Points in the move or LED pattern 1..5 1..32
N Number of cycles (times the pattern will be repeated) 0..255 0..255
A Point for servo 1 or brightness point for the LEDS 0..8
0 → 0 degrees
1 → 22.5 degrees
2 → 45 degrees

8 → 180 degrees
0..8
0 → LEDs off

4 → 50% intensity

8→ LEDs max intensity
B Point for servo 2 0..8
(same as A)
N/A
S/L Time between the current point and the next (in 20ms increments)
S will wait in the current position, then move to the next when the time has elapsed
L will gradually move from the current position to the next, over the time specified
0..127
Time x 20ms
0..127
Time x 20ms

NOTES:

  • Parameters of type A, B, S and L can appear in any order (e.g. AABBSS, ABABSS, ABSABS)
  • Parameters can be separated by any character that is not a number or a letter (e.g. space, comma, semicolon). However, the letters themselves act as separators, and it is recommended that no additional characters are used, as the serial buffer has a limited capacity and may not be able to store the whole instruction

USERTAIL Examples

Example 1 – Slow Wag 1 (same as the TAILS1 command)

Both servos move from 22.5° to 157.5° (position 1 to 7) and back, for 3 times; each cycle is (68+68)*20ms = 2.72s long

USERMOVE U1P2N3A1A7B1B7L68L68

U1 → Store into user preset 1
P2 → The move consists of 2 points
N3 Repeat the sequence 3 times
A1A7 Servo1 moves from 1 to 7 (157.5° to 22.5°)
B1B7 Servo2 moves exactly as servo1
S68S68 Position 2 is reached in 68*20ms = 1.36s; return to position 1 in the same time

Example 2 – Test Servos

Moves servos in steps of 90° every 2 seconds; servo2 is delayed by 90°

USERMOVE U2P4N3 A0A4A8A4 B4B8B4B0 S100S100S100S100

U2 Store into user preset 2
P4 The move consists of 4 points
N3 Repeat the sequence 3 times
A0A4A8A4 Move servo1 90° at a time, starting from 0°
B4B8B4B0 Move servo2 90° at a time, starting from 90°
S100S100S100S100 Each position is held for 100*20ms = 2s

USERLEDS Examples

Example 1 – Beacon (same as the LEDBEA command)

The led strip lights up for 100ms every 2s

USERLEDS U1P2N5A8A0S5S95

U1 Store into user preset 1
P2 The pattern consists of 2 brightness points
N5 Repeat pattern 5 times
A8A0 Start at full brightness, then turn off
S5S95 On for 5*20ms = 100ms; Off for 95*20ms = 1.9s (total time = 2 seconds)

Example 2 – Fade in/out (similar to LEDTRI)

The led strip lights up slowly, then dims until completely off; this is repeated 3 times

USERLEDS U2P2N3 A0A8 L100L100

U2 Store into user preset 2
P2 The pattern consists of 2 brightness points
N3 Repeat pattern 3 times
A0A8 Start off, finish at full brightness
L100L100 Each brightness point is reached in 100*20ms = 2s

Random Moves (Auto)

Defines a sequence of random moves, selected from any of 3 groups as below; interval between moves varies randomly from T1 and T2, while

Move Group List of moves in the group
Calm and Relaxed Slow Wag 1, Slow Wag 2, Slow Wag 3
Fast and Excited Fast Wag, Short Wag, Happy Wag, Erect
Frustrated and Tense Tremble 1, Tremble 2, Tremble Erect, High Wag

Commands

AUTOMODE G<n> G<n>G<n> T<nnn> T<nnn>T<nnn> STOPAUTO

The tail will pause for a random number of seconds between each move (min and max specified by the first and second T parameter, respectively). The tail will stop completely after the time passed by the 3rd T parameter.

Stopauto will abort the current ‘auto mode’ session after completing any ongoing move.

Letter prefix Parameter type Range of values
G Move Group (see table above) 1..3
T Time in 1 sec increments 15..240 (15s .. 4min)
1st parameter – min random pause between moves
2nd parameter – max random pause between moves
3rd parameter – total duration

The parameter order is not important, except that the 3 T parameters are interpreted in the above order.

Example

AUTOMODE T15 T60 T240 G1 G2

Back to top