diff --git a/arduino-thorlabs-ledd1b/arduino-thorlabs-ledd1b.ino b/arduino-thorlabs-ledd1b/arduino-thorlabs-ledd1b.ino new file mode 100644 index 0000000..ab80318 --- /dev/null +++ b/arduino-thorlabs-ledd1b/arduino-thorlabs-ledd1b.ino @@ -0,0 +1,72 @@ +/** + * Matthias Quintern, 2025 + * + * Simple Arduino program that listens via serial for single byte commands to control a ThorLabs LEDD1B + * Commands: + * - 'i': Identify - Prints "Arduino Nano CPD " + * - '0': Turn the LED off + * - '1': Turn the LED on + */ +const int LEDPIN = 11; +const int VERSION = 1; + +void setup() { + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, HIGH); + delay(500); + Serial.begin(9600, SERIAL_8N1); //USB-Prog. Port + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + pinMode(LEDPIN, OUTPUT); +} + +void loop() { + digitalWrite(LED_BUILTIN, LOW); + + if (Serial.available() <= 0) { + return; + } + char command = Serial.read(); + digitalWrite(LED_BUILTIN, HIGH); + switch (command) { + case 'i': + identify(); + break; + case '1': + Serial.println("LED ON"); + led_on(); + break; + case '0': + Serial.println("LED OFF"); + led_off(); + break; + case '\n': + break; + default: + blink_internal_led(5); + break; + + } +} +void blink_internal_led(unsigned N) { + unsigned long duration = 100; + for (unsigned i = 0; i < N; i++) { + digitalWrite(LED_BUILTIN, HIGH); + delay(duration); + digitalWrite(LED_BUILTIN, LOW); + delay(duration); + } +} +void led_on() { + digitalWrite(LEDPIN, HIGH); +} +void led_off() { + digitalWrite(LEDPIN, LOW); +} + +void identify() { + Serial.print("Arduino Nano CPD "); + Serial.print(VERSION); + Serial.println(""); +}