Danke für die überaus schnellen Antworten!
Ihr seid eine super Community, hätte nicht erwartet, dass so schnell so hilfreiche Antworten kommen :DD
Auf jeden Fall hat alles super funktioniert! Ich habe den vorgeschlagenen memcmp-Befehl verwendet und er funktioniert tadelos. Auch die Idee von panpira fand ich super und habe sie mit in mein Programm eingebaut (:
Nachfolgend möchte ich nochmal meinen gesamten Programmcode hier posten. Eventuell hat jemand Lust sich das ein wenig genauer anzuschauen und mir Verbesserungstipps dazu zu geben.
int yAchse = 1;
int xAchse = 0;
int zAchse = 7;
int ledR = 2;
int ledO = 3;
int ledL = 4;
int ledU = 5;
int ledM = 6;
int valX = 0;
int valY = 0;
int valZ = 0;
long randNumber;
int state = 0;
byte generiert[10];
byte eingabe[10];
int rWert;
int index = 0;
int buttonStateZ_HIGH = 0;
int buttonStateYl_HIGH = 0;
int buttonStateYr_HIGH = 0;
int buttonStateXu_HIGH = 0;
int buttonStateXo_HIGH = 0;
int durchlauf = 1;
void setup() {
pinMode(zAchse, OUTPUT);
pinMode(ledR, OUTPUT);
pinMode(ledO, OUTPUT);
pinMode(ledL, OUTPUT);
pinMode(ledU, OUTPUT);
pinMode(ledM, OUTPUT);
pinMode(8, INPUT);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
digitalWrite(ledR,LOW);
digitalWrite(ledO,LOW);
digitalWrite(ledL,LOW);
digitalWrite(ledU,LOW);
digitalWrite(ledM,LOW);
digitalWrite (8, HIGH);
digitalWrite(13,LOW);
digitalWrite(12,LOW);
randomSeed(analogRead(0));
Serial.begin(9600);
}
void loop() {
digitalWrite(ledR,LOW);
digitalWrite(ledO,LOW);
digitalWrite(ledL,LOW);
digitalWrite(ledU,LOW);
digitalWrite(ledM,LOW);
digitalWrite(13,LOW);
digitalWrite(12,LOW);
Zufallsgenerator();
Steuerung();
//Anzeige();
}
/*void Anzeige()
{
Serial.print("X:");
Serial.print(valX, DEC);
Serial.print(" | Y:");
Serial.print(valY, DEC);
Serial.print(" | Z: ");
Serial.println(valZ, DEC);
delay(100);
}*/
void Steuerung()
{
for (int x = 7; x > 6; x++)
{
state = digitalRead(8);
valX = analogRead(xAchse);
valY = analogRead(yAchse);
valZ = digitalRead(zAchse);
if (valZ == 1)
{
digitalWrite (ledM, HIGH);
}
else
{
digitalWrite (ledM, LOW);
}
if (valY > 750)
{
digitalWrite (ledL, HIGH);
}
else
{
digitalWrite (ledL, LOW);
}
if (valY > 250)
{
digitalWrite (ledR, LOW);
}
else
{
digitalWrite (ledR, HIGH);
}
if (valX > 750)
{
digitalWrite (ledU, HIGH);
}
else
{
digitalWrite (ledU, LOW);
}
if (valX > 250)
{
digitalWrite (ledO, LOW);
}
else
{
digitalWrite (ledO, HIGH);
}
if(state == LOW)
{
index = 0;
durchlauf = 1;
break;
}
ZaehlfunktionM();
ZaehlfunktionL();
ZaehlfunktionR();
ZaehlfunktionU();
ZaehlfunktionO();
if (index == durchlauf)
{
rWert = memcmp(generiert, eingabe, durchlauf);
if (rWert == 0)
{
digitalWrite(13,HIGH);
delay(2000);
digitalWrite(13, LOW);
durchlauf++;
index = 0;
break;
}
if (rWert != 0)
{
digitalWrite(12, HIGH);
delay (2000);
digitalWrite(12,LOW);
index = 0;
//break;
}
}
}
}
void Zufallsgenerator()
{
for (int i = 0; i < durchlauf; i++)
{
randNumber = random(2, 7);
generiert[i] = randNumber;
Serial.println(randNumber);
digitalWrite(randNumber, HIGH);
delay(500);
digitalWrite(randNumber, LOW);
delay(500);
}
}
void ZaehlfunktionM()
{
valZ = digitalRead(zAchse);
if (valZ == HIGH)
{
buttonStateZ_HIGH = 1;
}
if (valZ == LOW && buttonStateZ_HIGH == 1)
{
eingabe[index] = 6;
index++;
buttonStateZ_HIGH = 0;
}
//Serial.println(index);
}
void ZaehlfunktionL()
{
valY = analogRead(yAchse);
if (valY > 750)
{
buttonStateYl_HIGH = 1;
}
if (valY < 750 && buttonStateYl_HIGH == 1)
{
eingabe[index] = 4;
index++;
buttonStateYl_HIGH = 0;
}
//Serial.println(index);
}
void ZaehlfunktionR()
{
valY = analogRead(yAchse);
if (valY < 250)
{
buttonStateYr_HIGH = 1;
}
if (valY > 250 && buttonStateYr_HIGH == 1)
{
eingabe[index] = 2;
index++;
buttonStateYr_HIGH = 0;
}
//Serial.println(index);
}
void ZaehlfunktionU()
{
valX = analogRead(xAchse);
if (valX > 750)
{
buttonStateXu_HIGH = 1;
}
if (valX < 750 && buttonStateXu_HIGH == 1)
{
eingabe[index] = 5;
index++;
buttonStateXu_HIGH = 0;
}
//Serial.println(index);
}
void ZaehlfunktionO()
{
valX = analogRead(xAchse);
if (valX < 250)
{
buttonStateXo_HIGH = 1;
}
if (valX > 250 && buttonStateXo_HIGH == 1)
{
eingabe[index] = 3;
index++;
buttonStateXo_HIGH = 0;
}
//Serial.println(index);
}
Der Code darf ebenfalls gerne von Anderen weiter verwendet werden, wenn Bedarf besteht! Bei Fragen könnt ihr euch auch gerne an mich wenden um genauere Informationen zu bekommen. Ich habe leider keine Kommentare geschrieben...