Dartscheibe Arduino

Gast #3659344
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?
Gast #3659400
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?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.