#define SelectButton 9 // input op digital pin 9
#define StartButton 8 // input op digital pin 8
#define LED1 7 // output op digital pin 7
#define LED2 6 // output op digital pin 6
#define LED3 5 // output op digital pin 5
#define LED4 4 // output op digital pin 4
bool StartButton_State; // TRUE or FALSE
bool SelectButton_State = LOW; // TRUE or FALSE
bool LastSelectButton_State = LOW; // Last setting SelectButton_State
byte SelectButton_Count = 0; // continious counting from 1 to 4
// byte SelectButton_Count; // continious counting from 1 to 4
// unsigned long startMillis; //some global variables available anywhere in the program
// unsigned long currentMillis;
// const unsigned int DebouncePeriod = 1000; // debounce period for pushbuttons
const unsigned int StartDelay = 10000; // Startdelay / 1000 = seconds
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); // tbv debugging
pinMode (LED1, OUTPUT); // digital output
pinMode (LED2, OUTPUT); // digital output
pinMode (LED3, OUTPUT); // digital output
pinMode (LED4, OUTPUT); // digital output
//pinMode (SelectButton, INPUT_PULLUP); // digital input
//pinMode (StartButton, INPUT_PULLUP); // digital input
pinMode (SelectButton, INPUT); // digital input
pinMode (StartButton, INPUT); // digital input
}
void loop() {
// put your main code here, to run repeatedly:
StartDelayTimer();
SelectButton_State = digitalRead(SelectButton); // read SelectButton
StartButton_State = digitalRead(StartButton); // read StartButton
Serial.print("SelectButton_State= "); // debugging
Serial.print(SelectButton_State); // "
Serial.print("\t"); // "
Serial.print("SelectButton_Count= "); // "
Serial.print(SelectButton_Count); // "
Serial.print("\t"); // "
//Serial.print("StartButton= "); // "
//Serial.println(StartButton_State); // debugging
if (SelectButton_State != LastSelectButton_State) {
// if (SelectButton_State == HIGH) {
// SelectButton_Count ++;
// LastSelectButton_State = SelectButton_State;
//}
// startMillis = millis();
// DebounceDelay();
SelectButton_Count ++;
if(SelectButton_Count > 4) {
SelectButton_Count = 1;
}
switch(SelectButton_Count) {
case 1:
digitalWrite (LED1, HIGH);
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
break;
case 2:
digitalWrite (LED1, LOW);
digitalWrite (LED2, HIGH);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
break;
case 3:
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
digitalWrite (LED3, HIGH);
digitalWrite (LED4, LOW);
break;
case 4:
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, HIGH);
break;
default:
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
}
//if (SelectButton_Count > 4) {
// SelectButton_Count = 1;
//}
}
if (StartButton_State == HIGH) {
Startladen();
}
}
/*
******************************
* Below are some Functions *
******************************
*/
void StartDelayTimer() {
//
// Timer "StartDelay" to manual select output before start. (sec.)
//
unsigned int current_millis = millis();
if (current_millis >= StartDelay) {
Startladen();
} else {
Serial.print("StartDelayTime = ");
Serial.print(current_millis /1000);
Serial.println("s");
}
}
// void DebounceDelay() {
//
// Button Debounce delay
//
//currentMillis = millis();
// while (currentMillis - startMillis <= DebouncePeriod) {
// DebounceDelay();
//}
// currentMillis = millis(); //get the current "time" (actually the number of milliseconds since the program started)
// if (currentMillis - startMillis >= period) //test whether the period has elapsed
// {
// digitalWrite(ledPin, !digitalRead(ledPin)); //if so, change the state of the LED. Uses a neat trick to change the state
// startMillis = currentMillis; //IMPORTANT to save the start time of the current LED state.
// }
//}
void Startladen() {
Serial.print(" dit is de laad cyclus ");
Serial.println(SelectButton_Count);
Startladen();
}