//pin set start sensor
#define sensor_start 7
//pin set motor
#define motor 6
//pin set sensor
#define sensor_groen 3
#define sensor_wit 2
#define sensor_blauw 10
#define sensor_rood 11
//pin set led
#define led_rood 4
#define led_groen 5
#define led_wit 12
#define led_blauw 13
//pin set flipper
#define flipper_links 26
#define flipper_rechts 22
//pin set drukknop flippers
#define drukknop_rechts 23
#define drukknop_links 27
//pin set drukknop
#define drukknop_up 24
#define drukknop_start 25
#define drukknop_exit 28
#define drukknop_down 29
//points
int score =0;
int punten =50;
//selectie
int select = 1;
int play = 0;
int drukknop_start_state = 0;
int drukknop_exit_state =0;
void setup() {
//seriele monitor aanzetten voor punten
Serial.begin(9600);
//set input sensor
pinMode(sensor_groen, INPUT);
pinMode(sensor_wit, INPUT);
pinMode(sensor_blauw, INPUT);
pinMode(sensor_rood, INPUT);
//set input drukknop
pinMode(drukknop_rechts, INPUT);
pinMode(drukknop_links, INPUT);
pinMode(drukknop_up, INPUT);
pinMode(drukknop_start, INPUT);
pinMode(drukknop_exit, INPUT);
pinMode(drukknop_down, INPUT);
//set output led
pinMode(led_blauw, OUTPUT);
pinMode(led_rood, OUTPUT);
pinMode(led_wit, OUTPUT);
pinMode(led_groen, OUTPUT);
//set output flipper
pinMode(flipper_rechts, OUTPUT);
pinMode(flipper_links, OUTPUT);
//set output motor
pinMode(motor, OUTPUT);
digitalWrite(motor, HIGH);
digitalWrite(led_blauw,HIGH);
digitalWrite(led_rood,HIGH);
digitalWrite(led_wit,HIGH);
digitalWrite(led_groen,HIGH);
score= 0;
}
void loop() {
// put your main code here, to run repeatedly:
start();
}
void start(){
if(digitalRead(drukknop_down) == HIGH){
select=select+1;
Serial.println("down reached");
Serial.println(select);
delay(250);
}
else if(digitalRead(drukknop_up)== HIGH){
select=select-1;
Serial.println("up reached");
Serial.println(select);
delay(250);
}
if(digitalRead(drukknop_start)==HIGH){
// rad_start();
digitalWrite(motor,HIGH);
delay(3000);
digitalWrite(motor,LOW);
play=select;
Serial.println("start reached");
}
//normaal knop
if(play== 1){
Serial.println("case 1 reached");
flippers_normaal();
led();
points();
if(digitalRead(drukknop_exit)){
Serial.println("exit reached");
select= 1;
play=0;
start();
}
}
//dubbel knop
else if(play ==2){
Serial.println("case 2 reached");
flippers_dubbel();
led();
points();
if(digitalRead(drukknop_exit)){
Serial.println("exit reached");
select= 1;
play=0;
start();
}
}
//afstand knop
else if(play == 3){
Serial.println("case 3 reached");
if(digitalRead(drukknop_exit)){
Serial.println("exit reached");
select= 1;
play=0;
start();
}
}
}
void flippers_normaal(){
//activeren van flipper
if (digitalRead(drukknop_rechts) == HIGH){
digitalWrite(flipper_rechts, HIGH);
delay(100);
digitalWrite(flipper_rechts, LOW);
}
if (digitalRead(drukknop_links) == HIGH){
digitalWrite(flipper_links, HIGH);
delay(100);
digitalWrite(flipper_links, LOW);
}
}
void flippers_dubbel(){
//activeren van flipper
if (digitalRead(drukknop_rechts) == HIGH || digitalRead(drukknop_links)){
digitalWrite(flipper_rechts, HIGH);
digitalWrite(flipper_links, HIGH);
delay(100);
digitalWrite(flipper_rechts, LOW);
digitalWrite(flipper_links, LOW);
}
}
void led(){
//activeren leds en punten verdeling
if(digitalRead(sensor_groen)==HIGH){
digitalWrite(led_groen,HIGH);
score=score+punten;
}
if(digitalRead(sensor_blauw)==LOW){
digitalWrite(led_blauw,LOW);
score=score+punten;
}
if(digitalRead(sensor_wit)==LOW){
digitalWrite(led_wit,LOW);
score=score+punten;
}
if(digitalRead(sensor_rood)==LOW){
digitalWrite(led_rood,LOW);
score=score+punten;
}
if( digitalRead(led_rood) == LOW && digitalRead(led_blauw) == LOW && digitalRead(led_wit) == LOW){
digitalWrite(led_groen, HIGH);
digitalWrite(led_rood, HIGH);
digitalWrite(led_wit, HIGH);;
digitalWrite(led_blauw, HIGH);
delay(100);
digitalWrite(led_groen, LOW);
digitalWrite(led_rood, LOW);
digitalWrite(led_wit, LOW);;
digitalWrite(led_blauw, LOW);
delay(200);
digitalWrite(led_groen, HIGH);
digitalWrite(led_rood, HIGH);
digitalWrite(led_wit, HIGH);;
digitalWrite(led_blauw, HIGH);
delay(300);
digitalWrite(led_groen, LOW);
digitalWrite(led_rood, LOW);
digitalWrite(led_wit, LOW);;
digitalWrite(led_blauw, LOW);
delay(100);
digitalWrite(led_groen, HIGH);
digitalWrite(led_rood, HIGH);
digitalWrite(led_wit, HIGH);;
digitalWrite(led_blauw, HIGH);
score=score+(punten*2);
}
}
void points(){
Serial.println("De momentele score bedraagt: ");
Serial.print(score);
}