Hey girls and guys,
learning is going on but there are still some stumbling blocks. I got solution for several problems but now i don’t find any reason why it’s not working.
The command process in “2 clicks” is working. When i copy that from “2 clicks” to
BlinkLedState[i] = millis() % (650*2) >= 650;
to the section of “1 click”
//1 click
if(BlinkButton[i].clicks == 1) {
BlinkLedState[i] = millis() % (650*2) >= 650;
}
It’s not working. Don’t know why. It’s only doing strange things. But when i see the code i don’t find any thing why that is like it is.
That is true
if(BlinkButton[i].clicks == 1)
so everything should run. But it isn’t…WHY?
Here also the whole code.
#include "ClickButton.h"
// Button Array
const int BlinkButtons = 2;
// LED
const int BlinkLedPin[BlinkButtons] = { 7, 11 }; // Arduino pins to the LEDs
int BlinkLedState[BlinkButtons] = { 0, 0 };
int BlinkLEDfunction[BlinkButtons] = { 0, 0 };
unsigned long lastActionMillis[BlinkButtons] = { 0,0 };
// Input Pin
const int BlinkButtonPin1 = 14;
const int BlinkButtonPin2 = 19;
//Intervalle
unsigned long lastActionMillis2 = 0;
const long Interval2 = 6000;
// Instantiate ClickButton objects in an array
ClickButton BlinkButton[BlinkButtons] = {
ClickButton (BlinkButtonPin1, LOW, CLICKBTN_PULLUP), // HABEN ALLE PULLUPS AM NANO?
ClickButton (BlinkButtonPin2, LOW, CLICKBTN_PULLUP),
};
//-----------------------------------
void setup()
{
//Blinkersektion
for (int i=0; i<BlinkButtons; i++) {
pinMode(BlinkLedPin[i],OUTPUT);
BlinkButton[i].debounceTime = 20; // Debounce timer in ms
BlinkButton[i].multiclickTime = 250; // Time limit for multi clicks
BlinkButton[i].longClickTime = 1000; // Time until long clicks register
}
}
//-----------------------------------
void loop()
{
//Blinksection
for (int i=0; i<BlinkButtons; i++) {
BlinkButton[i].Update();
if (BlinkButton[i].clicks != 0) {
BlinkLEDfunction[i] = BlinkButton[i].clicks;
lastActionMillis[i] = millis();
}
//1 click
if(BlinkButton[i].clicks == 1) {
BlinkLedState[i] = !BlinkLedState[i];
}
//2 clicks
if(BlinkLEDfunction[i] == 2) {
if(millis() - lastActionMillis[i] < Interval2) {
BlinkLedState[i] = millis() % (650*2) >= 650;
}
else { BlinkLedState[i] = 0;
}
}
// update the LEDs
for (int i=0; i<BlinkButtons; i++)
{
digitalWrite(BlinkLedPin[i],BlinkLedState[i]);
}
}
Thanks a lot
Z