Ho realizzato un timer con display a 7 segmenti, purtroppo sfarfalla fastidiosamente tra un secondo e l'altro, vi posto il codice e un video al rallenty del fastidioso effetto, da cosa potrebbe dipendere?
#include "Countimer.h"
#include <LedPrint.h>
int buzzer = 0;
LedPrintJustifiable myLed = LedPrintJustifiable
(
1, // DATA PIN
3, // CLOCK PIN
2, // CS PIN
8, // NUMBER OF DIGITS
1 // Orientation 0/1, if it looks backwards try the other
);
Countimer timer;
void setup() {
myLed.setIntensity(1);
// Center justify (0), alternatives -1 for left and 1 for right
myLed.justify(1);
pinMode(4, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, HIGH);
delay ( 500);
digitalWrite(buzzer, LOW);
delay ( 500);
digitalWrite(buzzer, HIGH);
delay ( 500);
digitalWrite(buzzer, LOW);
delay ( 500);
digitalWrite(buzzer, HIGH);
delay ( 500);
digitalWrite(buzzer, LOW);
delay ( 500);
// Set up count down timer with 10s and call method onComplete() when timer is complete.
// 00h:00m:10s
timer.setCounter(0, 1, 29, timer.COUNT_DOWN, onComplete);
// Print current time every 1s on serial port by calling method refreshClock().
timer.setInterval(refreshClock, 1000);
}
void refreshClock() {
//Serial.print("Current count time is: ");
myLed.println(timer.getCurrentTime());
}
void onComplete() {
myLed.println("finish");
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
digitalWrite(buzzer, HIGH);
delay(2000);
digitalWrite(buzzer, LOW);
}
void loop() {
// Run timer
timer.run();
// Now timer is running and listening for actions.
// If you want to start the timer, you have to call start() method.
if (digitalRead(4) == LOW) {
digitalWrite(buzzer, LOW);
timer.restart ();
}
}