Code Arduino pour afficheur analogique externe pour ordinateur

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Code Arduino pour réaliser un afficheur analogique externe pour ordinateur avec des voltmètres à aiguilles.

Code source :

Voir le code source brut | Télécharger serial_stats.ino | Télécharger serial_stats.ino.zip

/**
 * Afficheur analogique externe pour ordinateur.
 */

/* Taille du buffer de réception série */
const byte BUFFER_SIZE = 64;

/* Nroches analogiques (PWM) */
const byte ANALOG_A_PIN = 3;
const byte ANALOG_B_PIN = 9;
const byte ANALOG_C_PIN = 10;
const byte ANALOG_D_PIN = 11;

/* Buffer de réception série  */
static char buffer[BUFFER_SIZE] = { 0 };


/** Fonction setup() */
void setup() {
  
  /* Initialise le port série */
  Serial.begin(115200); 
  Serial.setTimeout(2000); // Timeout de réception série

  /* Valeurs par défaut */
  analogWrite(ANALOG_A_PIN, 0);
  analogWrite(ANALOG_B_PIN, 0);
  analogWrite(ANALOG_C_PIN, 0);
  analogWrite(ANALOG_D_PIN, 0);
}

/** Fonction loop() */
void loop() {
 
  /* Lit une ligne de texte */
  int read = Serial.readBytesUntil('\n', buffer, BUFFER_SIZE - 1);
  if (read) {
    
    /* Cloture la chaine de caractéres */
    buffer[read] = '\0';
    
    /* Extrait les valeurs A, B, C et D */
    int a, b, c, d;
    if (sscanf(buffer,"%d %d %d %d", &a, &b, &c, &d) == 4) {
      
      /* Rafraichi l'affichage */
      analogWrite(ANALOG_A_PIN, a & 0xFF);
      analogWrite(ANALOG_B_PIN, b & 0xFF);
      analogWrite(ANALOG_C_PIN, c & 0xFF);
      analogWrite(ANALOG_D_PIN, d & 0xFF);
    }
  }
}