temperature.c 1.16 KB
#include <avr/io.h>			// for the input/output register
#include <avr/interrupt.h> 	
#include <util/delay.h>  
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#include "retour.h"

#define PRESCALER 1024
#define TIME_SLOT 20
#define BAUDRATE	103

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

char Donnee[24];
float temp;

// équivalent de analogueRead()
int analogReadNew(uint8_t pin) {
  //Selection de la fréquence du prescaler
  ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  //Définition de la référence de tension
  ADMUX |= (1<<REFS0)|(1<<ADLAR);
  //Sélection de l'entrée analogique selon le pin
  ADMUX = (ADMUX&0xf0)|pin;
  //Activation de l'ADC 
  ADCSRA |= (1<<ADEN);
  //Lancement de la conversion
  ADCSRA |= (1<<ADSC);
  //On attend la fin de la conversion
  while(bit_is_set(ADCSRA, ADSC));
  //Résultat
  return ADCH;
}

int main()
{
   int reading;
   init_serial();
   while(1){
    reading=analogReadNew(0);
    temp = reading * 1.9607843;
    dtostrf(temp, 4, 1, Donnee);
    //send_serial('T');
    //send_serial('=');
    //RETOUR
    retour(Donnee);
    _delay_ms(2000);
   }
   return 0;  
}