#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))
bool test1 = true;
bool test2 = true;
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
SET0(DDRD,2);
SET1(PORTD,2);
SET0(DDRD,3);
SET1(PORTD,3);
DDRC |= 0b00111111;
SET1(ADCSRA,ADEN); // zapnutie ADC
SET1(ADCSRA,ADPS2); // voľba preddeličky 128
SET1(ADCSRA,ADPS1);
SET1(ADCSRA,ADPS0);
}
int pocetKrokov;
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; // načítanie dolného registra
vysledok = vysledok | (ADCH<<8); // pripočítanie horného
int nova = map(vysledok,0,1023,0,200);
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(nova);
// for(int i=0;i<nova;i++)
// {
// steps(1);
// }
while (pocetKrokov < nova)
{
pocetKrokov++;
steps(1);
}
while (nova < pocetKrokov)
{
pocetKrokov--;
steps(2);
}
}
void steps (int krok)
{
if (krok == 1)
{
SET1(PORTC,2);
SET1(PORTC,3);
delay(20);
SET0(PORTC,3);
// PORTD |= 1<<6;
// PORTD |= 1<<7;
// delay(50);
// PORTD &= ~(1<<7);
}
else if (krok == 2)
{
SET0(PORTC,2);
SET1(PORTC,3);
delay(20);
SET0(PORTC,3);
}
}