Complete Mind-Controlled Robot

Now that we have every part working and tested, it should be easy to put it together, right? Wrong.

Even though reading constant stream of packets from the dongle works with LEDs, it’s a different case for turning the servos. LEDs, being semiconductors, take negligible time to change state. Servos move things that have mass, and are very slow compared to LEDs.

The previous attention routine assumed it will be called at suitable intervals. Here, we have to make an attention-reading function that can both be called very often and survive slight pauses.

Build the final circuit (Figure 2-33) and upload mindcontrol.pde.

Circuit diagram for complete robot, mindcontrol.pde

Figure 2-33. Circuit diagram for complete robot, mindcontrol.pde

// helloattention.pde - Show attention level (EEG) with LED color. // (c) Kimmo Karvinen & Tero Karvinen /* Disconnect TX and RX jump wires from Arduino when uploading from IDE. Turn robot on, then in a couple of seconds turn headband on. */ const int redPin = 9; const int greenPin = 10; const int bluePin = 11; const int tinyLedPin = 13; const int speakerPin = 12; const int servoRightPin = 2; const int servoLeftPin = 3; const int linePin = 4; const int potPin = A0; const float potMin = 14.0 - 1; const float potMax = 236.0 - 5; int tinyLedState = HIGH; // percent variables, 0.0 to 1.0: float tr = -1.0; float attention = 0; float speed = 0.0; void setup() ...

Get Make a Mind-Controlled Arduino Robot now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.