#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
volatile int vysledok = 0;
void setup ()
{
set0(ADMUX,REFS1); //nadstavenie referencneho napatia na pine Aref-00
set0(ADMUX,REFS0);
set0(ADMUX,ADLAR); //zarovnávanie bitov zprava 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);
Serial.begin(9600);
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("ADC5= ");
lcd.setCursor(0, 1); // Nastavenie kurzora na začiatok prvého riadka
lcd.print("ADC0= ");
}
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); // ziskanie vysledku
lcd.setCursor(5,0); // Nastavenie kurzora na začiatok prvého riadka
lcd.print(vysledok);
Serial.print("ADC0=");
Serial.println(vysledok);
delay(500);
set1(ADMUX, MUX0); //nastavenie vstupu A5 - 0001
set0(ADMUX, MUX1);
set1(ADMUX, MUX2);
set0(ADMUX, MUX3);
set1(ADCSRA, ADSC);
while( test(ADCSRA, ADIF) == 0 ){}; // cakanie na dokoncenie prevodu
vysledok = ADCL | (ADCH << 8); // ziskanie vysledku
lcd.setCursor(5,1); // Nastavenie kurzora na začiatok prvého riadka
lcd.print(vysledok);
Serial.print("ADC5=");
Serial.println(vysledok);
delay(500);
}