#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 16, 2);
#define SET0(r,b) r&=~(1<<b)
#define SET1(r,b) r|=1<<b
#define test(r,b) (r&(1<<b))
volatile int vysledok = 0;
volatile bool dataReady = false;
void setup()
{
lcd.init();
lcd.backlight();
SET0(DDRC, 0);
Serial.begin(9600);
SET0(ADMUX, REFS1); // voľba Aref
SET1(ADMUX, REFS0);
SET0(ADMUX, ADLAR); // zarovnanie nadol
SET0(ADMUX, MUX0); // voľba kanála ADC1
SET0(ADMUX, MUX1);
SET0(ADMUX, MUX2);
SET0(ADMUX, MUX3);
SET1(ADCSRA, ADEN); // zapnutie ADC
SET0(ADCSRA, ADATE); // spúšťanie príkazom
SET1(ADCSRA, ADIE); // zapnutie prerušenia pri dokončení konverzie
SET1(ADCSRA, ADPS2);
SET1(ADCSRA, ADPS1);
SET1(ADCSRA, ADPS0);
SET1(SREG, 7);
SET1(ADCSRA, ADSC);
}
void loop()
{
if (dataReady) {
dataReady = false;
lcd.home();
lcd.print("Hodnota: ");
lcd.print(vysledok);
}
delay(100);
}
ISR(ADC_vect) {
vysledok = ADCL;
vysledok |= (ADCH << 8);
dataReady = true;
SET1(ADCSRA, ADIF);
SET1(ADCSRA, ADSC);
}