Arduino Würfel

OP (Firma: Rentner) #7374075
Lesenswert?

Darf ich etwas fragen, ohne gleich furchtbar ausgelacht zu werden? Ich habe die Pins im Source-Code so abgeändert, dass das Spielzeug (7-Segment-Würfel) autonom auf einer "selbstgeschnitzten" Platine laufen soll, aber ich komme nicht drauf, warum es zwar auf der UNO-Platine läuft und da nicht. Platine ist korrekt und garantiert fehlerfrei. // Sieben Segment Würfel autonom auf separater Platine

int segmente[10][7] = { {1,1,1,1,1,1,0}, // 0 {0,1,1,0,0,0,0}, // 1 {1,1,0,1,1,0,1}, // 2 {1,1,1,1,0,0,1}, // 3 {0,1,1,0,0,1,1}, // 4 {1,0,1,1,0,1,1}, // 5 {1,0,1,1,1,1,1}, // 6 {1,1,1,0,0,0,0}, // 7 {1,1,1,1,1,1,1}, // 8 {1,1,1,1,0,1,1}}; // 9

int pinArray[] = {14, 15, 5, 6, 11, 13, 12};

int buttonPin = 18;

void setup() {

pinMode (pinArray[5,6,11,12,13,14,15], OUTPUT);

pinMode(buttonPin, INPUT);

randomSeed(analogRead(0));

}

void loop() {

if (digitalRead(buttonPin)==1) {

1
for (int i=0; i<40; i++) {
2
 
3
  showDigit(random(1,7));
4
  
5
  delay(i);
6
}

} }

void showDigit(int num) {

1
for (int j=0; j<7; j++) {
2
  
3
  if (segmente[num][j]==1) {
4
    
5
    digitalWrite(pinArray[j], HIGH);
6
  }
7
  else {
8
   
9
    digitalWrite(pinArray[j], LOW);
10
  }   
11

12

13
}

}

(Fürs Arduino UNO Board sieht der Anfang so aus:

int pinArray[] = {8,9,3,4,5,7,6};

int buttonPin = 12;

void setup() {

for (int i=3; i<10; i++) { pinMode(i, OUTPUT); }

Die FOR- Schleife kann ich autonom nicht anwenden, weil die Ausgangspins nicht in einer Reihe liegen.

Der ATMega ist korrekt auf Pins 7, 20 und 21 mit Versorgungsspannung und auf 8 und 22 mit GND gespeist und die Verdrahtung passt.

OP (Firma: Rentner) #7374081
Lesenswert?

Lässt sich compilieren aber ich habe es zuerst anders gemacht:

void setup() {

1
 pinMode(5, OUTPUT);
2
 pinMode(6, OUTPUT);
3
 pinMode(11, OUTPUT);
4
 pinMode(12, OUTPUT);
5
 pinMode(13, OUTPUT);
6
 pinMode(14, OUTPUT);
7
 pinMode(15, OUTPUT);

pinMode(buttonPin, INPUT);

randomSeed(analogRead(0)); }

klappt auch nicht

#7374095
Lesenswert?

Gerhard H. schrieb:

Ich habe die Pins im Source-Code so abgeändert, dass das Spielzeug (7-Segment-Würfel) autonom auf einer "selbstgeschnitzten" Platine laufen soll, aber ich komme nicht drauf, warum es zwar auf der UNO-Platine läuft und da nicht.

Was heißt "läuft nicht"? Geht es ein bisschen genauer? Hat dein Compiler vielleicht bereits Probleme mit dem Code und gibt die Fehlermeldung "warning: left operand of comma operator has no effect [-Wunused-value] pinMode (pinArray[5,6,11,12,13,14,15], OUTPUT);" aus?

Gast #7374096
Lesenswert?

Fange erstmal ganz einfach an, indem du alle LEDs einschaltest. Sonst nichts.

1
void setup() {
2
  pinMode(14,OUTPUT);
3
  pinMode(15,OUTPUT);
4
  pinMode(5,OUTPUT);
5
  pinMode(6,OUTPUT);
6
  pinMode(11,OUTPUT);
7
  pinMode(13,OUTPUT);
8
  pinMode(12,OUTPUT);
9

10
  digitalWrite(14,HIGH);
11
  digitalWrite(15,HIGH);
12
  digitalWrite(15,HIGH);
13
  digitalWrite(6,HIGH);
14
  digitalWrite(11,HIGH);
15
  digitalWrite(13,HIGH);
16
  digitalWrite(12,HIGH);
17
}
18

19
void loop() {}

Leuchten dann alle Segmente? Wenn nicht, kontrolliere die Verkabelung. Wenn das soweit klappt, schreibe die wiederholten Funktionsaufrufe in eine for-Schleife mit pinArray um.

Danach sehen wir weiter.

Gast #7374112
Lesenswert?

Stefan F. schrieb:

Dann der nächste Schritt: Gebe eine Zahl aus.

Gerhard H. schrieb:

in dem Fall ganz bestimmt

Was heißt das, funktioniert dein Programm soweit? Oder denkst du nur, dass es funktionieren sollte? Hast du die fehlenden Kondensatoren nachgerüstet?

Baue dein Programm schrittweise auf, bis der Fehler wieder auftritt. Dann weißt du genau, an welchem Punkt es scheitert. Frage dann nochmal nach, wir helfen gerne weiter.

Beitrag #7374113 wurde von einem Moderator gelöscht.
OP (Firma: Rentner) #7374120
Lesenswert?

Wie oben geschrieben, funktioniert das Programm mit den für den UNO äquivalenten Pin-Nummern auf dem UNO-Board perfekt, nur die eigenständige Platine ergibt keine Anzeige, was mir total unverständlich ist. 100µF beim Stabi - Eingang und 100nF beim Stabi-Ausgang hab ich nachgerüstet.

Ich habe auch Folgendes probiert: ATMega in der Original-UNO-Platine und wie üblich, Drahtverhau zu den Vorwiderständen der 7-Segment-Anzeige probeweise verlegt und das läuft problemlos. Seltsame Sache

Gast #7374124
Lesenswert?

Gerhard H. schrieb:

100µF beim Stabi - Eingang und 100nF beim Stabi-Ausgang hab ich nachgerüstet.

Halte dich an die Vorgaben aus dem Datenblatt des Spannungsreglers. Kontrolliere die Stromversorgung an allen Versorgungspins, auch GND. Kontrolliere die Spannung am Reset Eingang. Wenn der Mikrocontroller für einen Quarz konfiguriert wurde, muss man den auch anschließen.

Deine Angabe welches Programm bzw. welcher Test nun erfolgreich war, und welcher nicht, sind widersprüchlich. Sortiere dich mal. Wir brauchen den Schaltplan, Fotos vom Aufbau und exakt das Programm (Quelltext) mit der dazu gehörigen Fehlerbeschreibung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren