Dual Screen, connected wireless(Updated)

After seeing the ubiquity of wireless devices sending and receiving data through invisible electromagnetic radiation, I start thinking about how this tech affects our space. In view of the fact that all currently connected devices hide the act of wireless-information transfer under the casing of the device, behind the ICE wall of the Internet. When a user body controlling a device, the cloud will automatically sync to control the user’s other device just like a ghost. When two devices are presented in front of you at the same time, the content of one device responds to the user’s real-time operation, while the other device responds intermittently but perfectly, sometimes with notable delay. This contains some weird aesthetics.

In this project, I consider this phenomenon as a syntax of the new media language. And use two E-ink screens, Arduinos, and joysticks for syntax experiment.


The interaction in this project is not complex. Two display screens connected by wireless technologies, it could be Bluetooth or WIFI. A ball moving on the screen controlled by a joystick. The ball can go over two screens when it satisfies some conditions.

There are two modes is design. If two screens are in parallel, the ball can move across the edge to the other screen. (Fig.1)

Fig.1 Joystick control the movement the ball, when it go beyond the edge, it will across to the other screen.

The other design is, two screens are back in back, when the button on the joystick was pushed, the ball “Across the back of the screen” to the other screen. (Fig.2)

Fig.2 Two screens a back in back. Once the joystick is pushed, the ball back of the screen to the other screen.


  1. 2 * Arduino Nano 33 IoT
  2. 2 * waveShare 1.54 inc 200*200 E-Ink
  3. * 2-axis Joystick with push button


Library in used

  1. Adafruit_EPD — the E-ink display library
  2. ArduinoBLE — Arduino Bluetooth library
  3. Adafruit_GFX — Graphic library to generate the ball on the e-ink display.

Cross screen is easy, take control is not.

Using Bluetooth communication is much complicated than I thought. Especially when the other joystick has to take over control of the ball when the ball goes across to the other screen. (Still working on it).

Another problem is transferring the x,y position individually will let the second Arduino receive data twice, this updates the screen twice even just with a single movement.

Mirror (Shadow)

The ball movement mirrored on the other displays.

Cross edge

The ball moves from one screen to another screen through the edge. The problems still need to be figured.

  1. Because now in the code the BLE transfers data byte by byte. Which limits the maximum number of the movement on the screen.

All the code could be found in this repo, including the test.

Waiting and Waiting

Most of the time I spend on this project is waiting, and waiting, and waiting. Waiting for the Arduino update. Waiting for the e-ink update from one screen and to the other. Two Arduino connecting to the mac together increase the risk of mistake control, I have to be really careful to overwrite the right program from the wrong Arduino.

In this situation, CoolTerm is a handy tool, that allows me monitors two serial ports of the Arduino at the same time, and occupy the serial port all the time. So every time when I plan to upload the program, I have to clear my mind, disconnect the serial connection manually and upload.