#include <LiquidCrystal_I2C.h>
#define set0(r,b) r&=~(1<<b)
#define set1(r,b) r|=(1<<b)
#define test(r,b) (r&(1<<b))
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inicializácia LCD s I2C adresou 0x27
int vysledok = 0;
void setup ()
{
set0(ADMUX,REFS1); //nadstavenie referencneho napatia na pine Aref-00
set0(ADMUX,REFS0);
set0(ADMUX,ADLAR); //zarovnávanie bitov sprava v ADCL a ADCH registroch
set1(ADCSRA,ADEN); //zapnutie AD prevodnika
set1(ADCSRA,ADPS2); //preddelicka 111- delenie taktovacej frekvencie 128
set1(ADCSRA,ADPS1);
set1(ADCSRA,ADPS0);
lcd.begin(16,2); // Inicializácia LCD s 16x2 znakmi
lcd.backlight(); // Zapnutie podsvietenia LCD
lcd.setCursor(0, 0); // Nastavenie kurzora na začiatok prvého riadka
lcd.print("ADC0= ");
Serial.begin(9600);
}
void loop() {
set0(ADMUX, MUX0); //nastavenie vstupu AO - 0000
set0(ADMUX, MUX1);
set0(ADMUX, MUX2);
set0(ADMUX, MUX3);
set1(ADCSRA, ADSC); //spustenie prevodu - start prevodu
while( test(ADCSRA, ADIF) == 0 ){} // cakanie na dokoncenie prevodu
vysledok = ADCL | (ADCH << 8);
lcd.setCursor(5, 0);
lcd.print(vysledok); // ziskanie vysledku
Serial.print("ADC0=");
Serial.println(vysledok);
delay(500);
}