AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
sensor/tsl230/demo_sensor_tsl230.c

Effectue des mesures et les affichent sur le terminal série, les valeurs sont affichées de façon tabulaire afin de pouvoir être traitée par un tableur.

#include <avrio/led.h>
#include <avrio/delay.h>
#include <avrio/tc.h>
#include <avrio/tsl230.h>
/* constants ================================================================ */
#define BAUDRATE 115200
#define PORT "tty0"
/* private variables ======================================================== */
static double dFreq, dIrradiance;
/* main ===================================================================== */
int
main (void) {
uint16_t usRange;
// Configuration du port série par défaut (8N1, sans RTS/CTS)
xSerialIos settings = SERIAL_SETTINGS (BAUDRATE);
// Ouverture du port série en sortie
FILE * serial_port = xFileOpen (PORT, O_WRONLY, &settings);
stdout = serial_port; // le port série est la sortie standard
// Init. du module TSL230
sei(); // Valide les interruptions (utilisées par les modules tsl230 et serial)
// Lecture plage de mesure intiale
usRange = usTsl230Range();
// Effectue un autorange si décommenté
usRange = usTsl230AutoRange();
// affiche la plage de mesure et l'entête
printf ("\nTsl230 Demo\nRange:%u W/m2\nfo(kHz),Ee(W/m2)\n", usRange);
for (;;) {
/*
* Déclenchement mesure et lecture fréquence
* >> Mettre false à la place de true pour désactiver l'autorange...
*/
dFreq = dTsl230ReadFreq (true);
// Convertit la fréquence en irradiance µW/cm²
dIrradiance = dTsl230FreqToIrradiance (dFreq);
// Affiche les valeurs fréquence en kHz, irradiance en W/m²
printf ("%.3f,%.3f\n", dFreq / 1000., dIrradiance / 100.);
// Temporise 100ms et bascule la led1
delay_ms (100);
}
return 0;
}
/* ========================================================================== */