Hallo liebe Leute.
Ich bin neu hier und relativ neu in Arduino-Programmierung.
Ich habe folgendes Problem: Für meine Facharbeit möchte ich ein alternatives Inputdivice, ähnlich wie die Tastatur bauen und Programmieren. Dieses soll aus insgesamt 16 Tasten bestehen: 12 sollen Buchstaben ausgeben (es sind die digitalen Pins 0-11 , nenne ich sie mal fin) und 4 sollen die Buchstaben, die bei fin ausgegeben werden, verändern (dies sind die analogen Pins A0-A3, nenne ich sie mal chan). Dazu habe ich einen Programmcode geschrieben, dessen void loop wie folgt aussieht (ich habe die void setup und alles davor aus Gründen der Übersicht mal weggelassen):
void loop()
{
start:
for(int j=0 ; j<=3 ;j++)
{
if(digitalRead(chan[j]) == LOW)
{
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
switch (j)
{
case 0: //Erste Auswahltaste
start0:
for(int i = 0 ; i<=11 ; i++)
{
if(digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
delay(10);
digitalWrite(led, LOW);
Keyboard.press(bef0[i]);
delay(50);
while (digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
Keyboard.press(bef0[i]);
}
digitalWrite(led, LOW);
Keyboard.releaseAll();
}
}
for(int n=0 ; n<=3 ; n++)
{
if(digitalRead(chan[n]) == LOW)
{
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
goto start;
}
else
{
goto start0;
}
}
case 1: //Zweite Auswahltaste
start1:
for(int i = 0 ; i<=11 ; i++)
{
if(digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
delay(10);
digitalWrite(led, LOW);
Keyboard.press(bef1[i]);
delay(50);
while (digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
Keyboard.press(bef1[i]);
}
digitalWrite(led, LOW);
Keyboard.releaseAll();
}
}
for(int n=0 ; n<=3 ; n++)
{
if(digitalRead(chan[n]) == LOW)
{
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
goto start;
}
else
{
goto start1;
}
}
case 2: //Dritte Auswahltaste
start2:
for(int i = 0 ; i<=11 ; i++)
{
if(digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
delay(10);
digitalWrite(led, LOW);
Keyboard.press(bef2[i]);
delay(50);
while (digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
Keyboard.press(bef2[i]);
}
digitalWrite(led, LOW);
Keyboard.releaseAll();
}
}
for(int n=0 ; n<=3 ; n++)
{
if(digitalRead(chan[n]) == LOW)
{
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
goto start;
}
else
{
goto start2;
}
}
case 3: //Vierte Auswahltaste
start3:
for(int i = 0 ; i<=11 ; i++)
{
if(digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
delay(10);
digitalWrite(led, LOW);
Keyboard.press(bef3[i]);
delay(50);
while (digitalRead(fin[i]) == LOW)
{
digitalWrite(led, HIGH);
Keyboard.press(bef3[i]);
}
digitalWrite(led, LOW);
Keyboard.releaseAll();
}
}
for(int n=0 ; n<=3 ; n++)
{
if(digitalRead(chan[n]) == LOW)
{
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
goto start;
}
else
{
goto start3;
}
}
}
}
}
}
Der Arduino macht nun folgendes: Ich muss einen analogen Pin wählen, um anfangen können zu schreiben und habe eine LED an Pin 13 zwischengeschaltet um eine Kontrollleuchte zu haben. Wähle ich jetzt einen analogen Pin von A1-A3 wird das entsprechende Case angesteuert. Aber nur einmal. Danach kann ich keinen anderen cha mehr auswählen außer A0. Wähle ich A0 aus, kann ich garnichts mehr auswählen.
Ich benutze einen Arduino Leonardo und habe noch nicht viel Erfahrung mit Hardwareprogrammierung, allerdings mir C++, spezifiziert auf QT und PHP.
Ich hoffe es sind nicht Programmcode mangelt .
Vielen Dank im Vorraus!