Software: The Brains of the Chalkjet
The ChalkJET has the pixel mapping of each character on a keyboard uploaded into its internal memory. The ChalkJET stores this pixel mapping as an array of bytes. Each byte corresponds to one column of pixels, with the 1 bit representing a colored pixel and a 0 bit representing a blank pixel. When the user types in a message, the Arduino uses a look up table to determine the byte array corresponding to each character in the message.
Another Arduino is used to strictly determine the ChalkJET's position. Whenever the encoder Arduino has recorded that the ChalkJET has moved 10 encoder counts forwards, it will send a 5V pulse to the first Arduino, signaling it to fire the solenoids in the next column of pixels belonging to the message. This cycle continues until all columns of the message has been chalked onto the floor.
Another Arduino is used to strictly determine the ChalkJET's position. Whenever the encoder Arduino has recorded that the ChalkJET has moved 10 encoder counts forwards, it will send a 5V pulse to the first Arduino, signaling it to fire the solenoids in the next column of pixels belonging to the message. This cycle continues until all columns of the message has been chalked onto the floor.