commande-serie.ino

Arduino Pro Mini · Archivo : commande-serie.ino · Lenguaje : Arduino · Uso : Piloter des broches depuis le moniteur série (commandes texte)

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 Pro Mini (ATmega328P, existe en 5 V/16 MHz y 3,3 V/8 MHz) conectado a un convertidor USB-serie (FTDI) o un programador ICSP. 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

Elige « Arduino Pro Mini » en el IDE (5 V/16 MHz o 3,3 V/8 MHz según tu modelo), el procesador ATmega328P, el puerto correcto y Subir. El convertidor debe estar cableado DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.

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;
  }
}

← Volver a la ficha