Es sind 8 PullUp-Widerstände, die fest an +5V anliegen, die jeweils damit verbundenen 8 Taster schliessen bei Tasterbetätigung gegen GND.
Hier ist der Sketch:
#include <ButtonDebounce.h>
#include <millisDelay.h>
//Establish output time
const unsigned long Debounce_Delay = 10;
const unsigned long Out_Delay = 400;
//Establish output pin numbers
int Out_1 = 11;
int Out_2 = 12;
int Out_3 = A0;
int Out_4 = A1;
int Out_5 = A2;
int Out_6 = A3;
int Out_7 = A4;
int Out_8 = A5;
//Establish ButtonDebounce instances
ButtonDebounce btn1(2,Debounce_Delay);
ButtonDebounce btn2(3,Debounce_Delay);
ButtonDebounce btn3(4,Debounce_Delay);
ButtonDebounce btn4(5,Debounce_Delay);
ButtonDebounce btn5(6,Debounce_Delay);
ButtonDebounce btn6(7,Debounce_Delay);
ButtonDebounce btn7(8,Debounce_Delay);
ButtonDebounce btn8(9,Debounce_Delay);
//Establish millisDelay instances
millisDelay Out1_Delay;
millisDelay Out2_Delay;
millisDelay Out3_Delay;
millisDelay Out4_Delay;
millisDelay Out5_Delay;
millisDelay Out6_Delay;
millisDelay Out7_Delay;
millisDelay Out8_Delay;
void setup()
{
//Establish buttonDebounce callbacks
btn1.setCallback(btn1_Changed);
btn2.setCallback(btn2_Changed);
btn3.setCallback(btn3_Changed);
btn4.setCallback(btn4_Changed);
btn5.setCallback(btn5_Changed);
btn6.setCallback(btn6_Changed);
btn7.setCallback(btn7_Changed);
btn8.setCallback(btn8_Changed);
//Set output pinouts
pinMode(Out_1,OUTPUT);
pinMode(Out_2,OUTPUT);
pinMode(Out_3,OUTPUT);
pinMode(Out_4,OUTPUT);
pinMode(Out_5,OUTPUT);
pinMode(Out_6,OUTPUT);
pinMode(Out_7,OUTPUT);
pinMode(Out_8,OUTPUT);
//Initialize outputs
digitalWrite(Out_1,LOW);
digitalWrite(Out_2,LOW);
digitalWrite(Out_3,LOW);
digitalWrite(Out_4,LOW);
digitalWrite(Out_5,LOW);
digitalWrite(Out_6,LOW);
digitalWrite(Out_7,LOW);
digitalWrite(Out_8,LOW);
}
void loop()
{
//Check output delays for completion
if (Out1_Delay.justFinished())
{digitalWrite(Out_1,LOW);}
if (Out2_Delay.justFinished())
{digitalWrite(Out_2,LOW);}
if (Out3_Delay.justFinished())
{digitalWrite(Out_3,LOW);}
if (Out4_Delay.justFinished())
{digitalWrite(Out_4,LOW);}
if (Out5_Delay.justFinished())
{digitalWrite(Out_5,LOW);}
if (Out6_Delay.justFinished())
{digitalWrite(Out_6,LOW);}
if (Out7_Delay.justFinished())
{digitalWrite(Out_7,LOW);}
if (Out8_Delay.justFinished())
{digitalWrite(Out_8,LOW);}
//Check buttons pressed
btn1.update();
btn2.update();
btn3.update();
btn4.update();
btn5.update();
btn6.update();
btn7.update();
btn8.update();
}
// ButtonDebounce callbacks
void btn1_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_1,HIGH);
Out1_Delay.start(Out_Delay);
}
}
void btn2_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_2,HIGH);
Out2_Delay.start(Out_Delay);
}
}
void btn3_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_3,HIGH);
Out3_Delay.start(Out_Delay);
}
}
void btn4_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_4,HIGH);
Out4_Delay.start(Out_Delay);
}
}
void btn5_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_5,HIGH);
Out5_Delay.start(Out_Delay);
}
}
void btn6_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_6,HIGH);
Out6_Delay.start(Out_Delay);
}
}
void btn7_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_7,HIGH);
Out7_Delay.start(Out_Delay);
}
}
void btn8_Changed(int state)
{
if (state == HIGH)
{
digitalWrite(Out_8,HIGH);
Out8_Delay.start(Out_Delay);
}
}
Lesezeichen