commande-serie.ino
La placa se convierte en un mini servidor serie: cada carácter recibido en el monitor ejecuta una orden (alternar el LED, subir/bajar el PWM, imprimir el estado). Base ideal para guionizar pruebas desde un PC.
Hardware
Un Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. Ningún componente adicional para probar; LED y carga PWM a elección.
Cableado
LED en 13 y carga PWM en 9 (con resistencia de 330 Ω). El monitor serie del IDE a 9600 baudios, fin de línea "ninguno".
Funcionamiento
Serial.available() comprueba sin bloquear, Serial.read() lee un byte y un switch ejecuta la acción. Las respuestas se imprimen como retorno visual.
Ejecución
En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.
Variantes
Sustituye el switch por Serial.readStringUntil(\n) para órdenes de varias palabras, o conecta un módulo Bluetooth HC-05 en SoftwareSerial.
commande-serie.ino
// Mini-serveur de commandes : 'l' LED, 'b' buzzer, 'u'/'d' PWM, 's' etat.
const int LED = 13;
const int PWM = 9;
int niveau = 128;
bool ledOn = false;
void setup() {
pinMode(LED, OUTPUT);
pinMode(PWM, OUTPUT);
Serial.begin(9600);
Serial.println(F("Commandes: l=LED b=buzzer u/d=pwm s=etat"));
}
void loop() {
if (!Serial.available()) return;
char c = Serial.read();
switch (c) {
case 'l':
ledOn = !ledOn;
digitalWrite(LED, ledOn ? HIGH : LOW);
Serial.println(ledOn ? F("LED ON") : F("LED OFF"));
break;
case 'u':
niveau = min(255, niveau + 16);
analogWrite(PWM, niveau);
Serial.println(niveau);
break;
case 'd':
niveau = max(0, niveau - 16);
analogWrite(PWM, niveau);
Serial.println(niveau);
break;
case 's':
Serial.print(F("LED=")); Serial.print(ledOn);
Serial.print(F(" PWM=")); Serial.println(niveau);
break;
}
}