Hey Leute. Dieser Code entspringt einer Schulaufgabe und mein Lehrer kann selbst den Fehler nicht finden.
#include <LiquidCrystal.h>
#include <Servo.h>
Servo Servo2;
Servo Servo3;
int g=0; //Startschuss für nach Matheaufgabe
int h=6; //not needed
int i=0; //start next Mathtask
int p=0; //Save opens if p is 3
int r=0; //Matheaufgabenantwort "richtig"
int f=0; //Matheaufgabenantwort "falsch"
int A; //1. generated number for mathtask //will be calculated with B to D
int B; //2. generated number for mathtask //will be calculated with A to D
int C; //3. generated number for mathtasksolution //has no connections to A/B/D
int D; //calculated solution of A and B
int LED1=13;
int LED2=10;
int LED3=9;
int zeit=1000; //regulate time (used in Lessons to improve code quickly)
int LDRlesezeit=1000;
int ldr=A0; //1.LDR (moves 2 Servos)
int Helligkeit; //1.Brightness
int LDR=A1; //2.LDR (Point/left)<-directioninformation is just needed for our hardware
int HElligkeit; //2.Brightness
int LdR=A2; //3.LDR (Point/right)<-directioninformation is just needed for our hardware
int HELligkeit; //3.Brightness
int LDRrichtig=A3; //4.LDR (answer "richtig") //left to the green lights
int HELLigkeit; //4.Brightness
int LDRfalsch=A4; //5.LDR (answer "falsch") //right to the green lights
int HELLIgkeit; //5.Brightness
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
void setup() {
Serial.begin(9600);
Servo2.attach (22); //bkockade-left
Servo3.attach (24); //blockade-right
Servo2.write (0);
Servo3.write (0);
digitalWrite(LED1, LOW); //RGB turns red (laser is dangerous)
digitalWrite(LED2, LOW);
digitalWrite(LED3,LOW);
i=0;
randomSeed(analogRead(A5));
pinMode(28,OUTPUT); //4.Servo (Savedoor)
pinMode(26,OUTPUT); //3.Servo (blokade-right)
pinMode(24,OUTPUT); //2.Servo (blokade-left)
pinMode(22,OUTPUT); //free
pinMode(13,OUTPUT); //1.LCD
pinMode(10,OUTPUT); //2.LCD
pinMode(9,OUTPUT); //3.LCD
pinMode(8,OUTPUT); //LCD
pinMode(7,OUTPUT); //LDR1
pinMode(6,OUTPUT); //LDR2
pinMode(1,OUTPUT); //free
pinMode(14,OUTPUT); //free
pinMode(12,OUTPUT); //LCD
pinMode(11,OUTPUT); //LCD
pinMode(5,OUTPUT); //LDR3
pinMode(4,OUTPUT); //free
pinMode(3,OUTPUT); //free
pinMode(2,OUTPUT); //free
lcd.begin(16, 2);
lcd.clear(); //is exempted from text as a precaution
lcd.setCursor(0,0);
lcd.print("Zeit eine Bank"); //start of Storyline
delay(1100);
lcd.setCursor(0,1);
lcd.print("AUSZURAUBEN!!!");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Entscheide, ob");
lcd.setCursor(0,1);
lcd.print("die Mathe-");
delay(zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("aufgabe richtig");
lcd.setCursor (0,1);
lcd.print ("oder falsch ist");
delay(zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("um den");
lcd.setCursor(0,1);
lcd.print("Laser zu hacken");
delay(zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("und nicht er-");
lcd.setCursor (0,1);
lcd.print ("wischt zu werden!");
delay (zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Du solltest Acht");
lcd.setCursor (0,1);
lcd.print ("geben, denn die");
delay (zeit);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Bank wird bald");
lcd.setCursor (0,1);
lcd.print ("auf machen!");
delay (zeit);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Dann wuerdest du");
lcd.setCursor (0,1);
lcd.print ("erwischt werden!");
delay (zeit);
delay (15000);
lcd.clear();
//Matheaufgabe
B=random(1,21);
A=random(1,21);
C=random(1,21);
lcd.setCursor (0,0);
lcd.print (A);
lcd.setCursor (2,0);
lcd.print ("*");
lcd.setCursor (4,0);
lcd.print (B);
lcd.setCursor (6,0);
lcd.print ("=");
lcd.setCursor (8,0);
lcd.print (C);
D=A*B;
Serial.print (C);
Serial.print (" und ");
Serial.println (D);
delay (1500);
g=1;
if (C==D) { //if A and B result in C, set r+1
r=r+1;}
if (C!=D) { //if A and B don't result in C, set f+1
f=f+1;}
delay (1500);
}
void loop() {
Helligkeit=analogRead(ldr);
Serial.print ("1.Helligkeit="); //wenn dunkler wird zahl kleiner normal(1020)-dunkel(1000);LDR in der Mitte
Serial.println (Helligkeit);
HElligkeit=analogRead(LDR);
Serial.print ("2.Helligkeit"); //wenn dunkler wird zahl größer normal(165)-dunkel(430);LDR neben der RGB
Serial.println (HElligkeit);
HELligkeit=analogRead(LdR);
Serial.print ("3. Helligkeit="); //wenn dunkler wird zahl größer normal(200)-dunkel(630); LDR neben Mitte
Serial.println (HELligkeit);
HELLigkeit =analogRead (LDRrichtig);
Serial.print ("4.Helligkeit=");
Serial.println (HELLigkeit);
HELLIgkeit=analogRead (LDRfalsch);
Serial.print ("5.Helligkeit=");
Serial.println (HELLIgkeit);
delay (LDRlesezeit);
if (HELLigkeit>= 200 && HELLigkeit<=220) {
r=r+1;}
if (HELLIgkeit>=200 && HELLIgkeit<=220) {
f=f+1;}
if (r==2) { //if anwer is right
p=p+1;
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Der Laser ist");
lcd.setCursor(0,1);
lcd.print("aus, er wird");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("dich nicht mehr ");
lcd.setCursor(0,1);
lcd.print("erwischen und du");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("kannst sicher");
lcd.setCursor(0,1);
lcd.print("vorbei.");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hoffentlich ist");
lcd.setCursor(0,1);
lcd.print("deine Antwort");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("richtig! Sonst");
lcd.setCursor(0,1);
lcd.print("erwartet dich am");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ende die");
lcd.setCursor(0,1);
lcd.print("POLIZEI!!! :(");
delay(zeit);
lcd.clear();}
if (f==2) { //if anwer is right
p=p+1;
digitalWrite (LED1, HIGH);
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Der Laser ist");
lcd.setCursor(0,1);
lcd.print("aus, er wird ");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("dich nicht mehr ");
lcd.setCursor(0,1);
lcd.print("erwischen und du");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("kannst sicher");
lcd.setCursor(0,1);
lcd.print("vorbei.");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Hoffentlich ist");
lcd.setCursor(0,1);
lcd.print("deine Antwort");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("richtig! Sonst");
lcd.setCursor(0,1);
lcd.print("erwartet dich am");
delay(zeit);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ende die");
lcd.setCursor(0,1);
lcd.print("POLIZEI!!! :(");
delay(zeit);
lcd.clear();}
if (r<2 && g=l) {
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Oh nein!");
lcd.setCursor (0,1);
lcd.print ("Das war nicht richtig!");
delay (zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Du bist");
lcd.setCursor (0,1);
lcd.print ("erwischt!");
delay (zeit);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Du kannst von");
lcd.setCursor (0,1);
lcd.print ("vorne beginnen!");
}
if (f<2 && g=l) {
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Oh nein!");
lcd.setCursor (0,1);
lcd.print ("Das war nicht richtig!");
delay (zeit);
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Du bist");
lcd.setCursor (0,1);
lcd.print ("erwischt!");
delay (zeit);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Du kannst von");
lcd.setCursor (0,1);
lcd.print ("vorne beginnen!");
}
if (Helligkeit >= 990 && Helligkeit <= 1000){ //when ball moves over sensor //normal(1020)-dunkel(1000)
Servo2.write (90); //Servo1 moves
Servo3.write (90);} //Servo2 moves
if (HElligkeit >= 400 && HElligkeit <= 430) { //when ball moves over 2.sensor //normal(165)-dunkel(430)
p=p+1;
digitalWrite (LED2, HIGH);}
if (HELligkeit >= 600 && HELligkeit <= 630) { //when ball moves over 3.sensor //normal(200)-dunkel(630)
p=p+1;
digitalWrite (LED3, HIGH);}
if (p==3) { //End of game
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("Du hast es");
delay (zeit);
lcd.setCursor (0,1);
lcd.print ("geschafft!");
delay (zeit);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print ("jetzt nimm dir");
lcd.setCursor (0,1);
lcd.print ("das Geld");
delay (zeit);}
}
Bei den Linien "if (f<2 && g=l)" sowie "if (r<2 && g=l)" wird mir jeweils die Fehlermeldung "l was not declared in this scope" angezeigt. Wie könnte man das fixen?