#define ENCODER_CLK 2
///////////////////////////////////////////////////////////// FUNKCJA SETUP
void setup() {
pinMode(ENCODER_CLK, INPUT);
pinMode(5, OUTPUT);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, RISING);
Serial.begin(9600);
}
///////////////////////////////////////////////////////////// FUNKCJE
int counter = 0;
void readEncoder() { // funkcja zliczania w przypadku przerwania - kierunek nieważny
int dtValue = digitalRead(ENCODER_CLK);
if (dtValue == HIGH) {
counter++;
}
}
int getCounter() {
int result;
noInterrupts();
result = counter;
interrupts();
return result;
}
int interval=1000; // interwały czyli 1000 = 1sec
unsigned long previousMillis=0; // deklaracja zmiennej previosMillis
bool triggerEverySecond(){
unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis) >= interval)
{
previousMillis = currentMillis;
return true;
}
else
return false;
}
///////////////////////////////////////////////////////////// FUNKCJA LOOP
int saveDataCounter = 0;
void loop() {
if (triggerEverySecond() == true) {
saveDataCounter = getCounter()*8;
if (saveDataCounter >= 255) saveDataCounter = 255;
analogWrite(5, saveDataCounter);
counter = 0;
Serial.println(counter); Serial.println(saveDataCounter);}
}