Forum: Mikrocontroller und Digitale Elektronik Dartscheibe Arduino


von Dartscheibe (Gast)


Lesenswert?

Hallo,

ich bin gerade dabei eine e-Dartscheibe mit einem Arduino Mini Pro zu 
verbinden. Die Dartscheibe hat eine 8x8er Kontaktmatrix. Das Auslesen 
klappt auch bei auch so weit ganz gut. Mein Problem ist jetzt 
allerdings, das eine genau eine Reihe nicht erkannt wird. Wenn ich den 
Widerstand messe reagiert diese Reihe aber wie erwartet und der 
Widerstandswert sinkt ab.

Folgenden Quellcode verwende ich bisher:
1
int Inputs[8] = { 2, 3, 4, 5, 6, 7, 8, 9};
2
int Outputs[8] = {A3, A2, A1, A0, A4, 13, 10, A5}; 
3
4
void setup(){
5
  int i;
6
  Serial.begin(19200);
7
  Serial.println("Start Config");
8
  for(i=0;i<8;i++){
9
    pinMode(Inputs[i], INPUT_PULLUP); 
10
    pinMode(Outputs[i], OUTPUT); 
11
    digitalWrite(Outputs[i], HIGH);
12
  }
13
  Serial.println("Start Reading");
14
  delay(2000);    
15
}
16
17
void loop() {
18
  int i,j;
19
  for(i=0;i<8;i++){
20
    digitalWrite(Outputs[i], LOW);
21
    for(j=0;j<8;j++){
22
      if(digitalRead(Inputs[j]) == LOW){
23
        Serial.print(i+1);
24
        Serial.println(j+1);
25
        delay(500);
26
        break;
27
      }
28
    }
29
    digitalWrite(Outputs[i], HIGH);
30
  }
31
32
}
Wenn bei den Outputs der 7. Eintrag (Pin 10) abgefragt werden soll, dann 
bekomme ich keine saubere Auswertung. Ich habe auch schon versucht die 
Reihe auf einen anderen Pin zu legen. Das hat aber nichts gebracht.

Habt Ihr noch eine Idee?

von c-hater (Gast)


Lesenswert?

Dartscheibe schrieb:

> void loop() {
>   int i,j;
>   for(i=0;i<8;i++){
>     digitalWrite(Outputs[i], LOW);
>     for(j=0;j<8;j++){
>       if(digitalRead(Inputs[j]) == LOW){
>         Serial.print(i+1);
>         Serial.println(j+1);
>         delay(500);
>         break;
>       }
>     }
>     digitalWrite(Outputs[i], HIGH);
>   }
> }

> Wenn bei den Outputs der 7. Eintrag (Pin 10) abgefragt werden soll, dann
> bekomme ich keine saubere Auswertung. Ich habe auch schon versucht die
> Reihe auf einen anderen Pin zu legen. Das hat aber nichts gebracht.
>
> Habt Ihr noch eine Idee?

Tausche einfach mal zwei Anschlüsse der Scheibe, den, der Probleme macht 
mit einem von denen, die keine macht. Wandert das Problem mit, ist die 
Ursache in der Scheibe zu suchen. Wandert es nicht mit, ist die Ursache 
in deinem Programm.

Logisch, oder?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.