commande-serie.ino

Arduino Pro Mini · Fichier : commande-serie.ino · Langage : Arduino · Usage : Piloter des broches depuis le moniteur série (commandes texte)

La carte devient un mini-serveur série : chaque caractère reçu dans le moniteur exécute une commande (basculer la LED, monter/descendre le PWM, afficher l'état). Base idéale pour scripter des tests depuis un PC.

Matériel requis

Une Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz et 3,3 V/8 MHz) reliée à un convertisseur USB-série (FTDI) ou un programmeur ICSP. Aucun composant supplémentaire pour tester ; LED et charge PWM au choix.

Câblage

LED sur 13 et charge PWM sur 9 (avec résistance 330 Ω). Le moniteur série de l'IDE est réglé sur 9600 bauds, fin de ligne "aucun".

Fonctionnement

Serial.available() teste sans bloquer, Serial.read() lit un octet, un switch exécute l'action. Les réponses sont imprimées pour retour visuel.

Exécution

Choisissez « Arduino Pro Mini » dans l'IDE (5 V/16 MHz ou 3,3 V/8 MHz selon votre modèle), le processeur ATmega328P, le bon port, puis Téléverser. Le convertisseur doit être câblé DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.

Variantes

Remplacez le switch par Serial.readStringUntil('\n') pour des commandes à plusieurs mots, ou connectez un module Bluetooth HC-05 sur SerialSoftware.

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

← Retour à la fiche