73 lines
1.5 KiB
Arduino
73 lines
1.5 KiB
Arduino
|
/**
|
||
|
* 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 <version>"
|
||
|
* - '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("");
|
||
|
}
|