Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef cbi
- #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) //clear
- #endif
- #ifndef sbi
- #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) //set
- #endif
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(4, 3, 8, 9, 10, 11); //LiquidCrystal(rs, enable, d4, d5, d6, d7)
- volatile unsigned int count = 0;
- unsigned int LASTcount = 0;
- //-------------------------------------
- void setup()
- {
- lcd.begin(16, 2);
- initComp();
- lcd.setCursor(0, 0);
- lcd.print("Start LMT01");
- delay(500);
- lcd.setCursor(0, 0);
- lcd.print(" ");
- }
- //-----------------------------
- void loop()
- {
- char s[16];
- float temp;
- if (count != 0) { // Se o contador não é zero, isto é, se na contagem
- while (count != LASTcount) // repete o seguinte porque ainda está na medição Se você se o número é alterado
- {
- LASTcount = count; // salva o valor para a próxima vez para comparação
- delay(2); // delay (2)
- }
- dtostrf(count, 6, 0, s);
- lcd.setCursor(0, 0) ;
- lcd.print(s) ;
- temp = count / 16.0 - 50.0;
- dtostrf(temp, 6, 1, s);
- lcd.setCursor(0, 1) ;
- lcd.print(s) ;
- lcd.print("c") ;
- count = 0; // redefinir o contador para a próxima vez
- }
- }
- //-----------------------------------
- void initComp()
- {
- cbi(ACSR, ACD); // desabilitar comparador analógico
- cbi(ACSR, ACBG); // comparador analógico Bandgap Select
- sbi(ACSR, ACIE); // Habilitar Interrupção comparador analógico
- cbi(ACSR, ACIC); // comparador analógico Interrupção Modo Selecionar1
- sbi(ACSR, ACIS1); // Analog Comparator Interrupt Mode Select1
- cbi(ACSR, ACIS0); // comparador analógico Interrupção Modo Select0
- sbi(PRR, PRADC); // A CBI original (PRR0, PRADC); eem erro.
- cbi(ADCSRB, ACME); // Ativar comparador analógico Multiplexer
- }
- //-----------------------------------
- ISR(ANALOG_COMP_vect)
- {
- count++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement