commande-serie.ino

Arduino UNO R3 · 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 Uno R3 (ATmega328P, 5 V, 16 MHz) alimentée par USB ou jack 7-12 V. 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

Dans l'Arduino IDE, choisissez la carte « Arduino Uno » et le port série correspondant, puis cliquez sur Téléverser. Ouvrez le moniteur série à 9600 bauds pour suivre les messages.

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