#include <Arduino.h>;
int STCP =8; // Letch pin
int SHCP =12 ; // clock pin
int DS =11; // Data pin
int smer ; // dugme start
int zoom ; // dugme uvećaj
boolean ButtonZoom =false;
boolean LastButtonZoom = false;
int time =200; // verme
byte leds =0 ;
int cnt;
void setup() {
// put your setup code here, to run once:
// def za 74hc595
pinMode(8, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
// analogni ulaz
Serial.begin(115200);
pinMode(A0, INPUT);
// digitalni ulazi tasteri
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, OUTPUT);
/*digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, leds);
digitalWrite(STCP, HIGH);*/
time = map(time,0,1023,200,2000); // mapira očitan A0 na 0 do 2000 ms koliko se traži u zadatku
}
void updateShiftRegister( boolean smr)
{
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, smr, leds);
digitalWrite(STCP, HIGH);
}
/* Test Procedura
void Test (){
int parametar =0b11111111;
time = analogRead(A0);
time = map(time,0,1023,0,2000); // mapira očitan A0 na 0 do 2000 ms koliko se traži u zadatku
smer =digitalRead(2);
zoom =digitalRead(3);
if (smer == HIGH || time==0 ) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, parametar);
digitalWrite(STCP, HIGH);
}
else if (zoom ==HIGH || time == 2000) {
digitalWrite(STCP, LOW);
shiftOut(DS, SHCP, MSBFIRST, ~parametar);
digitalWrite(STCP, HIGH);
}
}*/
void loop() {
smer =digitalRead(2);
zoom = digitalRead(3);
time = analogRead(A0);
cnt=0;
ButtonZoom =digitalRead(3);
if (ButtonZoom != LastButtonZoom) {
if (ButtonZoom == LOW) {
cnt ++;
}
delay(50);
}
LastButtonZoom = ButtonZoom;
if (cnt > 8) {
cnt = 1;
}
if (cnt < 1) {
cnt = 8;
}
if (smer == HIGH ){
digitalWrite(4, HIGH);
// Puni niz sa levo na desno , prazni sa desno u levo
for (int i = 0; i < 8; i++) // Turn all the LEDs ON one by one.
{
bitSet(leds, i); // u varijabli leds postavlja bit po bit
updateShiftRegister(MSBFIRST);
delay(time); //
}
delay(2000);
for (int i = 0; i<8; i++) // Gasi diode jednu po jednu
{
bitClear(leds,i); // u varijabli leds postavlja bit po bit
updateShiftRegister(LSBFIRST);
delay(time); //
}
}
else if (smer == LOW) {
digitalWrite(4, LOW);
// Puni niz sa desno u levo , prazni niz sa levo u desno
for (int i = 0; i < cnt; i++)
{
bitSet(leds, i);
updateShiftRegister(LSBFIRST);
delay(time); //
}
delay(2000);
for (int i = 0; i <cnt; i++)
{
bitClear(leds,i);
updateShiftRegister(MSBFIRST);
delay(time); //
}
}
//Test();
}