Advertisement
RuiViana

LT_01_termometro

Oct 8th, 2016
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #ifndef cbi
  2. #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))   //clear
  3. #endif
  4. #ifndef sbi
  5. #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))    //set
  6. #endif
  7.  
  8. #include <LiquidCrystal.h>
  9. LiquidCrystal lcd(4, 3, 8, 9, 10, 11);    //LiquidCrystal(rs, enable, d4, d5, d6, d7)
  10.  
  11. volatile unsigned int count = 0;
  12. unsigned int LASTcount = 0;
  13. //-------------------------------------
  14. void setup()
  15. {
  16.   lcd.begin(16, 2);
  17.   initComp();
  18.   lcd.setCursor(0, 0);
  19.   lcd.print("Start LMT01");
  20.   delay(500);
  21.   lcd.setCursor(0, 0);
  22.   lcd.print("           ");
  23. }
  24. //-----------------------------
  25. void loop()
  26. {
  27.   char s[16];
  28.   float temp;
  29.  
  30.   if (count != 0) {                  // Se o contador não é zero, isto é, se na contagem
  31.     while (count != LASTcount)       // repete o seguinte porque ainda está na medição Se você se o número é alterado
  32.      {
  33.       LASTcount = count;             // salva o valor para a próxima vez para comparação
  34.       delay(2);                      // delay (2)
  35.     }
  36.     dtostrf(count, 6, 0, s);
  37.     lcd.setCursor(0, 0) ;
  38.     lcd.print(s) ;
  39.     temp = count / 16.0 - 50.0;
  40.     dtostrf(temp, 6, 1, s);
  41.     lcd.setCursor(0, 1) ;
  42.     lcd.print(s) ;
  43.     lcd.print("c") ;
  44.     count = 0;                       // redefinir o contador para a próxima vez
  45.   }
  46. }
  47. //-----------------------------------
  48. void initComp()
  49. {
  50.   cbi(ACSR, ACD);       // desabilitar comparador analógico
  51.   cbi(ACSR, ACBG);      // comparador analógico Bandgap Select
  52.   sbi(ACSR, ACIE);      // Habilitar Interrupção comparador analógico
  53.   cbi(ACSR, ACIC);      // comparador analógico Interrupção Modo Selecionar1
  54.   sbi(ACSR, ACIS1);     // Analog Comparator Interrupt Mode Select1
  55.   cbi(ACSR, ACIS0);     // comparador analógico Interrupção Modo Select0
  56.   sbi(PRR, PRADC);      // A CBI original (PRR0, PRADC); eem erro.
  57.   cbi(ADCSRB, ACME);    // Ativar comparador analógico Multiplexer
  58. }
  59. //-----------------------------------
  60. ISR(ANALOG_COMP_vect)
  61. {
  62.   count++;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement