/** * 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);