#include <LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
#define SET0(REG,BIT) REG &= ~(1<<BIT)
#define SET1(REG,BIT) REG |= (1<<BIT)
#define TEST(REG,BIT) (REG&(1<<BIT))
void setup()
{
lcd.begin(16,2);
SET0(DDRD,2);
SET1(PORTD,2);
SET0(DDRD,3);
SET1(PORTD,3);
SET1(ADCSRA,ADEN); // zapnutie ADC
SET1(ADCSRA,ADPS2); // voľba preddeličky 128
SET1(ADCSRA,ADPS1);
SET1(ADCSRA,ADPS0);
}
void loop()
{
if( TEST(PIND,2) == 0)
{
SET0(ADMUX,MUX0); // voľba kanála ADC0
SET0(ADMUX,MUX1);
SET0(ADMUX,MUX2);
SET0(ADMUX,MUX3);
SET1(ADCSRA,ADSC); // začatie konverzie
while(TEST(ADCSRA,ADIF)==0); // testovanie dokončenia
int vysledok = ADCL; // načítanie dolného registra
vysledok = vysledok | (ADCH<<8); // pripočítanie horného
lcd.setCursor(0,0);
lcd.print(vysledok);
}
else if( TEST(PIND,3) == 0)
{
SET1(ADMUX,MUX0); // voľba kanála ADC1
SET0(ADMUX,MUX1);
SET0(ADMUX,MUX2);
SET0(ADMUX,MUX3);
SET1(ADCSRA,ADSC); // začatie konverzie
while(TEST(ADCSRA,ADIF)==0); // testovanie dokončenia
int vysledok = ADCL; // načítanie dolného registra
vysledok = vysledok | (ADCH<<8); // pripočítanie horného
lcd.setCursor(0,1);
lcd.print(vysledok);
}
}