Blame view

codes/temperature.c 1.17 KB
6637616f   lahouass   code de températu...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  #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 "libretour.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;  
  }