TheMemberFormerlyKnownAsAWOL:
Return gets you out of the function you're in; if you're in loop(), then loop() gets called straight away, and you get another attempt at what you were doing.
But what the logic is is hard to tell from your snippet
Ow now I begin to understand. But is return used for getting out a function (like a break in a loop) or is return used for restart a function (like a continue in a loop) ? Is that what you mean ?
Here is my whole code
#include <SPI.h>
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int pinRST = 9;
const int pinSS = 10;
MFRC522 mfrc522(pinSS, pinRST);
int incomingByte;
int rood = 2;
int wit = 3;
int geel = 4;
int groen = 5;
int lijstGetallen[14];
int teller = 4;
int tellerr = 1;
int seconden = 0;
int minuten = 2;
int aantalFouteBadge = 0;
boolean badgeOpnieuw = true;
boolean doorOfNiet = true;
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
randomSeed((analogRead(0)));
pinMode(6, OUTPUT);
pinMode(rood, OUTPUT);
pinMode(wit, OUTPUT);
pinMode(geel, OUTPUT);
pinMode(groen, OUTPUT);
for(int a = 0; a < 14; a++){
lijstGetallen[a] = random(2,6);
}
lcd.begin();
badge();
}
void loop() {
//hier wordt de memory game afgespeeld
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("level " + (String)tellerr);
for(int b = 0; b < teller; b++){
digitalWrite(lijstGetallen[b], HIGH);
delay(500);
digitalWrite(lijstGetallen[b], LOW);
delay(500);
}
//hier voert de gebruiker zijn gegevens via bluetooth
for(int c = 0; c < teller; c++){
while(Serial.available() <= 0){
}
if (Serial.available() > 0) {
incomingByte = Serial.read();
switch(incomingByte){
case '5':
digitalWrite(groen, HIGH);
delay(500);
digitalWrite(groen, LOW);
break;
case '4':
digitalWrite(geel, HIGH);
delay(500);
digitalWrite(geel, LOW);
break;
case '3':
digitalWrite(wit, HIGH);
delay(500);
digitalWrite(wit, LOW);
break;
case '2':
digitalWrite(rood, HIGH);
delay(500);
digitalWrite(rood, LOW);
break;
}
delay(200);
if((incomingByte-48) != lijstGetallen[c]){
doorOfNiet = false;
lcd.clear();
lcd.print("failed");
tone(6,500);
for(int d = 0; d < 4; d++){
digitalWrite(rood, HIGH);
digitalWrite(wit, HIGH);
digitalWrite(geel, HIGH);
digitalWrite(groen, HIGH);
delay(250);
digitalWrite(rood, LOW);
digitalWrite(wit, LOW);
digitalWrite(geel, LOW);
digitalWrite(groen, LOW);
delay(250);
}
noTone(6);
}
}
}
//blinkende lampen en buzzer indien alles juist
delay(200);
if(doorOfNiet){
tellerr++;
if(teller < 14){
teller++;
}
tone(6,1000);
digitalWrite(rood, HIGH);
digitalWrite(wit, HIGH);
digitalWrite(geel, HIGH);
digitalWrite(groen, HIGH);
delay(500);
digitalWrite(rood, LOW);
digitalWrite(wit, LOW);
digitalWrite(geel, LOW);
digitalWrite(groen, LOW);
noTone(6);
delay(1000);
}
}
void morse(){
tone(6, 500);
delay(250);
noTone(6);
delay(250);
tone(6, 500);
delay(250);
noTone(6);
delay(250);
tone(6, 500);
delay(1000);
noTone(6);
delay(250);
tone(6, 500);
delay(1000);
noTone(6);
delay(500);
tone(6, 500);
delay(1000);
noTone(6);
delay(500);
}
void badge(){
while(badgeOpnieuw){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Luister en scan");
lcd.setCursor(0,1);
lcd.print("de juiste badge");
delay(2000);
morse();
while ( ! mfrc522.PICC_IsNewCardPresent()){
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()){
return;
}
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++){
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
if (content.substring(1) == "2B 41 71 0D"){
lcd.clear();
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
lcd.setCursor(0,0);
lcd.print("proficiat, pass:");
lcd.setCursor(0,1);
lcd.print("1234");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("download arduin.");
lcd.setCursor(0,1);
lcd.print("bluetooth contr.");
badgeOpnieuw = false;
delay(3000);
}
else{
aantalFouteBadge++;
if(aantalFouteBadge != 1){
Serial.println();
Serial.println("minuten before doubling: ");
Serial.println(minuten);
minuten = minuten*2;
Serial.println("minuten after doubling: ");
Serial.println(minuten);
}
lcd.clear();
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
lcd.print("foute badge");
tone(6, 500);
delay(1000);
noTone(6);
lcd.setCursor(0,1);
seconden = 60;
while(true){
lcd.setCursor(0,1);
if(seconden < 10){
lcd.print((String)(minuten-1)+ ":0" + (String)seconden);
}else{
lcd.print((String)(minuten-1)+ ":" + (String)seconden);
}
seconden--;
if(minuten == 1 && seconden == 0){
break;
}
if(seconden == 0){
seconden = 60;
minuten--;
}
delay(1000);
}
}
}
}