/* ================================================================== Registrador o datalogger de temperaturas Autor: Pharizna basado en el de Josemanu (aprovechando codigo de Antonio Moles) http://www.ardumania.es/registrador-de-datos-con-arduino-leonardo/ Fecha: 29 de septiembre de 2012 Descripcion: registrador de temperatura ambiente los datos son volcados en una hoja de calculo OpenOffice ================================================================== */ // Control temperatura int temperaturePin = 0; float temperature = 0.0; float tmedia; int val,cnt; // Variable para llevar la cuenta de las mediciones int contador = 0; // Pines que utilizaremos int indicador = 13; // Un led en el pin 13 brillara mientras el registrador // este funcionando int interruptor = 7; // Al poner el pin 7 a GND el registrador funcionara void setup() { // ponemos indicador como salida por que ira un led pinMode(indicador, OUTPUT); // el pin interruptor lo ponemos como salida y activamos la resistencia // pullup interna, asi para activarlo nos basta con un simple puente pinMode(interruptor, INPUT_PULLUP); // Iniciamos comunicacion serie Serial.begin(9600); // Iniciamos el teclado Keyboard.begin(); } void loop() { // Solo funcionara el registrador si el pin interruptor // esta puesto a GND while(!digitalRead(interruptor)) { // encendemos el led que indica que el registrador funciona digitalWrite(indicador, HIGH); // inicializamos el valor de tmedia tmedia=0; // medimos la temperatura 10 veces y la almacenamos en tmedia for ( cnt=0; cnt<10; cnt++) { float temperature = getVoltage(temperaturePin); //getting the voltage reading from the tem //perature sensor temperature = (temperature - .5) * 100; //converting from 10 mv per degree wit 500 // mV offset //to degrees ((volatge - 500mV) times 100) tmedia=tmedia+temperature; } // calculamos la media de las medidas tmedia=tmedia/cnt; // Incrementamos el contador contador++; // Sacamos los datos por el puerto serie Serial.print("Medida num "); Serial.print(contador); Serial.print(" temperatura "); Serial.println(tmedia); // Vamos a por el teclado Keyboard.print(contador); // escribe el numero de medida Keyboard.press(KEY_TAB); // pulsa el tabulador delay(150); // espera 150ms Keyboard.release(KEY_TAB);// libera la tecla de tabulador Keyboard.print(tmedia); // escribe la temperatura delay(100); Keyboard.press(KEY_RETURN); // pulsa enter delay(150); // espera 150ms Keyboard.release(KEY_RETURN);// libera enter // espera 30 segundos (0.5 minutos) delay(1000L*60L*0.5L); } // apaga el led al salir del bucle while() digitalWrite(indicador, LOW); } /* * getVoltage() - returns the voltage on the analog input defined by * pin */ float getVoltage(int pin){ return (analogRead(pin) * .004882814); //converting from a 0 to 1023 digital range // to 0 to 5 volts (each 1 reading equals ~ 5 milliv //volts }