🛠 Trace horodatée de capteurs sur le port série
Objectifs
Transformer la LilyPad en mini-enregistreur : lire deux capteurs (lumière sur A2, température sur A3), horodater chaque mesure avec millis et imprimer une trace CSV copiable dans un tableur. On découvre l'échantillonnage sans delay, le débit série via FTDI et l'optimisation mémoire avec F.
Matériel
- 1 LilyPad SimpleSnap + pile 3,7 V
- 1 capteur de lumière LilyPad sur A2
- 1 capteur de température LilyPad (TMP36) sur A3
- Adaptateur FTDI USB-série + moniteur série à 9600 bauds
Code complet
// Trace capteurs horodatée en CSV — lumière A2, température A3
const uint8_t LUM = A2;
const uint8_t TMP = A3;
const unsigned long PERIODE = 1000; // 1 mesure par seconde
unsigned long dernierTour = 0;
void setup {
Serial.begin(9600); // via FTDI ; 9600 suffit pour 2 capteurs
Serial.println(F("millis;lumiere;temp_C")); // en-tête CSV, F économise la SRAM
}
void loop {
unsigned long maintenant = millis;
if (maintenant - dernierTour < PERIODE) return; // sans delay : pas de dérive
dernierTour = maintenant;
int lum = analogRead(LUM); // 0..1023
int mv = analogRead(TMP) * 5000L / 1023; // millivolts (AVcc ≈ 5 V)
int dixC = mv - 500; // TMP36 : 10 mV/°C, 500 mV à 0 °C
Serial.print(maintenant); Serial.print(';');
Serial.print(lum); Serial.print(';');
Serial.print(dixC / 10); Serial.print('.');
Serial.println(dixC % 10);
}
Vérification attendue
Une ligne par seconde au format « millisecondes;lumière;température », par exemple 12000;642;24.8. En pinçant le capteur de température entre les doigts, la valeur monte de quelques degrés en quelques secondes. L'en-tête CSV n'apparaît qu'une fois au démarrage ; la trace se copie du moniteur série vers un tableur.
Erreurs fréquentes
- delay entre les mesures : l'horodatage dérive et des mesures sont perdues quand le moniteur série sature ; utiliser millis comme ici.
- F oublié sur les chaînes : avec 2 Ko de SRAM, chaque littéral stocké en RAM compte.
- Débit trop élevé (115200) avec un vieux pilote FTDI : caractères perdus ; 9600 est sûr.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinopwm-respiration.inoArduinoluxmetre-couture.inoArduinointerrupteur-tilt.inoArduinoservo-balayage.inoArduino