Hi,
ich beschäftige mich seit ein paar Wochen mit einem Arduino Uno und habe auch schon mein erstes "Programm" geschrieben. Ich würde mich sehr über Verbesserungsvorschläge, Tipps oder auch Anregungen freuen. Gerne auch kleine Details und Vorschläge zum Kürzen des Codes. Vielen Dank schonmal!
Was macht das Programm?(zusammen gefasst)
-Zufallszahl mittels Button und Lichtsensor
-gerade/ungerade -> starte links/rechts
-2 LEDs "schießen mit 5 anderen LEDs auf sich(Anzahl der Zufallszahl)
-LED welche als erstes 25 erreicht hat gewinnt
int t=95,wins=25,winsRight=0,winsLeft=0,counterRight=0,counterLeft=0,counterWinnerRight=0,counterWinnerLeft=0,counterSkip=0,randomnumber=0,counter=0,buttonstatus=0;
void setup()
{
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,INPUT);
randomSeed(analogRead(0));
Serial.begin(9600);
}
int LightSensor()
{
randomnumber=analogRead(A1);
return randomnumber;
}
void GenerateRandomnumber()
{
int buttoncounter=0;
while(buttonstatus==LOW)
{
buttoncounter=buttoncounter+1;
buttonstatus=digitalRead(12);
delay(20);
}
LightSensor();
randomnumber=buttoncounter+LightSensor();
counter=counter+1;
}
int Checker()
{
if((randomnumber%2)==0)
{
return 1;
}
else
{
return 2;
}
}
void Light(int value)
{
if(value==1)
{
value=6;
randomnumber=random(1,5);
while((randomnumber!=counterRight)&&(winsRight<wins)&&(winsLeft<wins))
{
digitalWrite(10,HIGH);
if(counterSkip!=1)
{
digitalWrite(5,HIGH);
delay(t);
digitalWrite(5,LOW);
}
while(value<10)
{
digitalWrite(value,HIGH);
delay(t);
digitalWrite(value,LOW);
value=value+1;
}
winsRight=winsRight+1;
counterRight=counterRight+1;
counterSkip=0;
value=6;
}
counterRight=0;
counterSkip=1;
digitalWrite(10,LOW);
}
else if(value==2)
{
value=8;
randomnumber=random(1,5);
while((randomnumber!=counterLeft)&&(winsLeft<wins)&&(winsRight<wins))
{
digitalWrite(11,HIGH);
if(counterSkip!=1)
{
digitalWrite(9,HIGH);
delay(t);
digitalWrite(9,LOW);
}
while(value>4)
{
digitalWrite(value,HIGH);
delay(t);
digitalWrite(value,LOW);
value=value-1;
}
winsLeft=winsLeft+1;
counterLeft=counterLeft+1;
counterSkip=0;
value=8;
}
counterLeft=0;
counterSkip=1;
digitalWrite(11,LOW);
}
}
void Winner(int value)
{
if(value==1)
{
digitalWrite(10,HIGH);
delay(2000);
digitalWrite(10,LOW);
delay(300);
counterWinnerRight=counterWinnerRight+1;
}
else if(value==2)
{
digitalWrite(11,HIGH);
delay(2000);
digitalWrite(11,LOW);
delay(300);
counterWinnerLeft=counterWinnerLeft+1;
}
SerialPrint();
int counterEnd=0;
while(counterEnd<3)
{
digitalWrite(7,HIGH);
delay(100);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(6,HIGH);
delay(100);
digitalWrite(8,LOW);
digitalWrite(6,LOW);
digitalWrite(9,HIGH);
digitalWrite(5,HIGH);
delay(100);
digitalWrite(9,LOW);
digitalWrite(5,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
delay(100);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
delay(200);
counterEnd=counterEnd+1;
}
winsRight=winsLeft=counterRight=counterLeft=counter=counterEnd=counterSkip=0;
delay(2000);
}
void SerialPrint()
{
Serial.print("Green: ");
Serial.print(counterWinnerRight);
Serial.print(" >>> ");
Serial.print((counterWinnerRight*100)/(counterWinnerLeft+counterWinnerRight));
Serial.println("%");
Serial.print("White: ");
Serial.print(counterWinnerLeft);
Serial.print(" >>> ");
Serial.print((counterWinnerLeft*100)/(counterWinnerLeft+counterWinnerRight));
Serial.println("%");
Serial.println();
}
void loop()
{
if(counter==0)
{
GenerateRandomnumber();
}
Checker();
while((winsRight<wins)&&(winsLeft<wins))
{
if(Checker()==1)
{
Light(1);
Light(2);
}
else
{
Light(2);
Light(1);
}
}
if(winsRight>winsLeft)
{
Winner(1);
}
else
{
Winner(2);
}
}