#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))
int prevLight = -1;
uint8_t pajac1[8] = {
0b00000,
0b00100,
0b01010,
0b10101,
0b10101,
0b10101,
0b01010,
0b00100,
};
uint8_t pajac2[8] = {
0b00100,
0b01010,
0b10101,
0b10101,
0b10101,
0b01010,
0b00100,
0b00000,
};
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
SET1(ADCSRA,ADEN); // zapnutie ADC
SET1(ADCSRA,ADPS2); // voľba preddeličky 128
SET1(ADCSRA,ADPS1);
SET1(ADCSRA,ADPS0);
lcd.createChar(1, pajac1);
lcd.createChar(2, pajac2);
}
void loop()
{
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 | (ADCH<<8); // načítanie dolného + horného registra
// vysledok = vysledok | (ADCH<<8); // pripočítanie horného
int light = map(vysledok,0,1023,0,15);
lcd.setCursor(light, 0);
lcd.print("\x01");
delay(100);
lcd.clear();
lcd.setCursor(light, 0);
lcd.print("\x02");
delay(100);
lcd.clear();
if (light != prevLight)
{
lcd.setCursor(0, 0);
lcd.print(" "); // Vymazanie riadku
lcd.setCursor(light, 0);
// lcd.print("x");
prevLight = light; // Aktualizácia predchádzajúcej hodnoty
}
}