Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int ledPin = 13;
- const int buttonPin = 12;
- int counter = 0;
- int totalTime = 0;
- int prevButtonState = -1;
- unsigned long prevTime = 0;
- void setup() {
- Serial.begin(9600);
- pinMode(ledPin, OUTPUT);
- pinMode(buttonPin, INPUT);
- }
- void loop() {
- int buttonState = digitalRead(buttonPin);
- unsigned long curTime = millis();
- if (buttonState == HIGH) {
- // reset
- if (prevButtonState == LOW) {
- counter = 0;
- totalTime = 0;
- }
- // zet led aan
- if (digitalRead(ledPin) == LOW) {
- digitalWrite(ledPin, HIGH);
- }
- // elke seconde
- if (prevTime - curTime >= 1) {
- prevTime = curTime;
- counter++;
- }
- } else {
- // alleen als we de knop langer dan 2sec hebben ingedrukt kijken we
- if (counter > 2000) {
- // on-release
- if (prevButtonState == HIGH) {
- Serial.println(counter);
- // zet halve seconde uit
- if (digitalRead(ledPin) == HIGH) {
- digitalWrite(ledPin, LOW);
- delay(500);
- }
- totalTime = counter;
- prevTime = curTime;
- }
- }
- // laat led aan voor zolang we dat zelf deden
- if (curTime - totalTime < prevTime) {
- if (digitalRead(ledPin) == LOW) {
- digitalWrite(ledPin, HIGH);
- }
- } else {
- // zet uit
- if (digitalRead(ledPin) == HIGH) {
- digitalWrite(ledPin, LOW);
- }
- // nog een keer na een halve seconde
- delay(500);
- prevTime = curTime;
- }
- }
- prevButtonState = buttonState;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement