XChroma.arduino_control module#

class XChroma.arduino_control.ArduinoController[source]#

Bases: object

connect_arduino()[source]#

Find and connect to an available Arduino device on Windows or macOS.

send_command(command)[source]#

Send a command to the Arduino device.


Arduino Code Documentation#

How to Use#

Send serial commands to control the servos:

Servo Control Commands#

Command

Action

‘a’

Open Servo 1

‘A’

Close Servo 1

‘z’

Open Servo 2

‘Z’

Close Servo 2

‘e’

Open Servo 3

‘E’

Close Servo 3

‘r’

Reset (all closed)

‘R’

Reset (all open)

Example Serial Input:

a  → Servo 1 opens
A  → Servo 1 closes
R  → All servos open

Arduino Code#

Code used to control servos via serial commands.

 1#include <Servo.h>
 2
 3// Create Servo objects
 4Servo servo1;
 5Servo servo2;
 6Servo servo3;
 7
 8// Servo pins
 9const int pinServo1 = 9;
10const int pinServo2 = 10;
11const int pinServo3 = 11;
12
13// Servo positions
14const int positionOuverte1 = 0;
15const int positionOuverte2 = 0;
16const int positionOuverte3 = 90;
17const int positionFermee1 = 90;
18const int positionFermee2 = 90;
19const int positionFermee3 = 0;
20
21void setup() {
22    servo1.attach(pinServo1);
23    servo2.attach(pinServo2);
24    servo3.attach(pinServo3);
25    servo1.write(positionFermee1);
26    servo2.write(positionFermee2);
27    servo3.write(positionFermee3);
28    Serial.begin(9600);
29}
30
31void loop() {
32    if (Serial.available()) {
33    char command = Serial.read();
34
35    switch (command) {
36        case 'a': servo1.write(positionOuverte1); Serial.println("Servo 1: Open"); break;
37        case 'A': servo1.write(positionFermee1); Serial.println("Servo 1: Closed"); break;
38        case 'z': servo2.write(positionOuverte2); Serial.println("Servo 2: Open"); break;
39        case 'Z': servo2.write(positionFermee2); Serial.println("Servo 2: Closed"); break;
40        case 'e': servo3.write(positionOuverte3); Serial.println("Servo 3: Open"); break;
41        case 'E': servo3.write(positionFermee3); Serial.println("Servo 3: Closed"); break;
42        case 'r':
43        servo1.write(positionFermee1);
44        servo2.write(positionFermee2);
45        servo3.write(positionFermee3);
46        Serial.println("All servos are in the closed position.");
47        break;
48        case 'R':
49        servo1.write(positionOuverte1);
50        servo2.write(positionOuverte2);
51        servo3.write(positionOuverte3);
52        Serial.println("All servos are in the open position.");
53        break;
54        default: Serial.println("Unknown command. Use a/A, z/Z, e/E, or r."); break;
55    }
56    }
57    delay(100);
58}
 1void setup() {
 2    servo1.attach(pinServo1);
 3    servo2.attach(pinServo2);
 4    servo3.attach(pinServo3);
 5    servo1.write(positionFermee1);
 6    servo2.write(positionFermee2);
 7    servo3.write(positionFermee3);
 8    Serial.begin(9600);
 9}
10
11void loop() {
12    if (Serial.available()) {
13    char command = Serial.read();
14
15    switch (command) {
16        case 'a': servo1.write(positionOuverte1); Serial.println("Servo 1: Open"); break;
17        case 'A': servo1.write(positionFermee1); Serial.println("Servo 1: Closed"); break;
18        case 'z': servo2.write(positionOuverte2); Serial.println("Servo 2: Open"); break;
19        case 'Z': servo2.write(positionFermee2); Serial.println("Servo 2: Closed"); break;
20        case 'e': servo3.write(positionOuverte3); Serial.println("Servo 3: Open"); break;
21        case 'E': servo3.write(positionFermee3); Serial.println("Servo 3: Closed"); break;
22        case 'r':
23        servo1.write(positionFermee1);
24        servo2.write(positionFermee2);
25        servo3.write(positionFermee3);
26        Serial.println("All servos are in the closed position.");
27        break;
28        case 'R':
29        servo1.write(positionOuverte1);
30        servo2.write(positionOuverte2);
31        servo3.write(positionOuverte3);
32        Serial.println("All servos are in the open position.");
33        break;
34        default: Serial.println("Unknown command. Use a/A, z/Z, e/E, or r."); break;
35    }
36    }
37    delay(100);
38}