Arduino-Gebastel

Begonnen von RalleBert, 05. August 2012, 10:57:07

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

RalleBert

Ich hab mir vor knapp einem Jahr ein Arduino zugelegt, bisher hat er einmal eine LED blinken lassen - sensationell!

Ab und an, wenn etwas interessantes dabei ist, werde ich sicher mal ein Projekt hier vorstellen. Aber erstmal will ich mit dem Sternenhimmel fertig werden, daher hab ich den Arduino wieder rausgekramt.
Die Rheinturmuhr des Kollegen ist auch mechanisch bereit, nur hier ist der Arduino mit dem Code aus dem Netz nicht ganz einverstanden. Vielleicht hat hier einer schon die volle Erfahrung mit dem Arduino, und weiß wie diese Fehlermeldung zu betrachten ist:

Zitatarduino-1.0.1\hardware\arduino\variants\standard/pins_arduino.h:49: error: expected unqualified-id before numeric constant

Diese gibt es nochmal mit 50: und 51: - ich habe schon andere Arduinoversionen durch, daran liegt es nicht. Und falsch kann der Code eigentlich auch nicht sein, ich habe mal beim Entwickler nachgefragt, bei ihm läuft alles. In der entspechenden Datei sind die Angaben zur Pinkonfiguration hinterlegt, aber da seh ich nicht durch.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

Dragoon

Welchen Arduino nutzt du denn genau?
Ich wollte demnächst auch mit welchen anfangen zu basteln, Uno, Nano und Pro Mini.

Schon komisch dass beim Kollegen der Code funktioniert und bei dir wirft es Exceptions...

RalleBert

Ich habe einen Uno, das ist aber unerheblich, denn es ist ja schon beim compilieren. Es ist auch egal, welches Board ich auswähle. Auch beim Kollegen funtioniert es nicht, selbes problem, geicher Arduino. Funktionieren tut es laut Aussage des Entwicklers auf seiner Hardware - muß man glauben, auf seiner Homepage ist ja ein Bild davon.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

sumsum

#3
Hallo,

was passiert denn wenn die ersten drei defines auskommentiert werden? (Der Fehler kam bei mir auch, bis die drei ge// wurden, allerdings sind weitere Fehler vorhanden :nixweis)


Edit:

Ok hab nun den Code aus der PDF kopiert und die drei defines am Anfang (A0, A1, A2) auskommentiert und nun wird das Programm komplett ohne Fehler compiliert. Hoffe bei dir wirds auch so.

Hintergrund: die A0 ... werden in der  pins_arduino.h als statische Konstanten deklariert (aber mit den selben Werten wie in den defines).

RalleBert

#4
Ich werd´s gleich testen - mein Kollege wird sich sehr freuen! Danke schon mal!

Edit:

Ja, klappt, allerdings werden damit doch die drei Analogeingänge nicht mehr zu Digitalausgängen umdefiniert, oder? Das muß aber sein, da die Schaltung diese braucht, kann ich die anders umdefinieren :???

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

sumsum

Muss ehrlich gesagt gestehen, dass ich den nichts mit dem arduino am Hut hab.

Hab mir nur testweise die Software zum Compilieren geladen, um den Fehler anzuschauen. Müsste mich mal damit beschäftigen um da evtl. weiterzuhelfen.

ZitatDas muß aber sein, da die Schaltung diese braucht, kann ich die anders umdefinieren
Kann schon sein, müsste mir das mal anschauen.

RalleBert

Ich werde auch mal sehen, wie es sich verhält, wenn der Turm mit der laufenden Soft betrieben wird. Das umkonfigurieren wird doach auch auf der Arduinoseite nachzulesen sein, muß dort noch soooo viel lesen ;)
Danke für Deine Hilfe!

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

sumsum

Zitat von: RalleBert am 05. August 2012, 16:12:19
Ja, klappt, allerdings werden damit doch die drei Analogeingänge nicht mehr zu Digitalausgängen umdefiniert, oder? Das muß aber sein, da die Schaltung diese braucht, kann ich die anders umdefinieren :???

So wie ich den Quelltext verstehe, findet die Umdefinierung der 3 analogen Pins in der Setup Fkt. statt.
Es werden alle Digitalen zuerst als Ausgang definiert und dann die 3 analogen auf Ausgang und High über die For Schleifen.

Funktioniert es denn überhaupt nicht (mehr)?

RalleBert

Es hat noch nie funktioniert, wir haben letztens erst mal weiter probiert. Da ich die "Hardware", also den Turm nicht hier habe, kann ich momentan auch nicht testen.
Das umdefinieren hatte ich beim "Define" angenommen, laut Arduino.cc geht dies aber mit
ZitatpinMode(A0, OUTPUT);
Die erste for-Schleife legt doch nur die Ausgänge auf high, als Setup für den start. Das ganze gibt ja einen Multiplex für die drei Reihen. Vielleicht komm ich nächste Woche dazu, das mal am Kollegen zu testen.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

sumsum

Zitat von: RalleBert am 05. August 2012, 17:24:45
Es hat noch nie funktioniert, wir haben letztens erst mal weiter probiert. Da ich die "Hardware", also den Turm nicht hier habe, kann ich momentan auch nicht testen.
Das umdefinieren hatte ich beim "Define" angenommen, laut Arduino.cc geht dies aber mit
ZitatpinMode(A0, OUTPUT);
Genau, so hab ich es auch verstanden, das mit den defines würde evtl. über die #ifndef ...  #endif Befehle gehen.

Zitat von: RalleBert am 05. August 2012, 17:24:45
Die erste for-Schleife legt doch nur die Ausgänge auf high, als Setup für den start. Das ganze gibt ja einen Multiplex für die drei Reihen. Vielleicht komm ich nächste Woche dazu, das mal am Kollegen zu testen.
Weiß jetzt nicht welche for-Schleife du meinst. Aber das definieren muss ja vor dem Multiplexen passieren (und nur ein Mal), zumindest versteh ich das so und interpretiere die Setup Fkt. entsprechend.

Hier der Ausschnitt:

Zitatvoid setup()
{int i;
for(i=0; i<sizeof(oneSecond);i++)pinMode(oneSecond,OUTPUT);
for(i=0; i<sizeof(tenSecond);i++)pinMode(tenSecond,OUTPUT);
for(i=0; i<sizeof(theSwitch);i++)pinMode(theSwitch,OUTPUT);
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
}
(aus der Verlinkung "Sizeof macht HTML-Formatierungsprobleme, Arduino-Quelltext hier.")

In der Ersten For-S. werden zuerst alle Digitalen einer Sekunden als DiOut definiert. Ist diese abgeschlossen, gehts zu den Zehnern, danach die Analogen Ausgänge als DiOut definieren und im Anschluss alle 3 auf High Pegel setzen.   
Soweit richtig?

Und dann beginnt doch der eigentliche Prozess mit Ausgabe und Multiplexing.

Über das Ergebnis des Tests kannst ja dann schreiben. Viel Erfolg. :thumb

RalleBert

Durch den Code muß ich noch komplett durchsteigen, das ist noch nicht der Fall... Die Routine ist ein Zähler (+1), der durch den Intervall getaktet ist. Dann wird beim Überlauf der Sek. die 10er Sek. um 1 erhöht, die Sek. genullt, ebenso mit den Minuten usw. Werde so bald wie möglich berichten.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -

RalleBert

Zitat von: RalleBert am 05. August 2012, 22:02:41
Werde so bald wie möglich berichten.

So bald wie möglich halt ;D

Habe die Sachen eben mal auf ein Steckbrett gesetzt und die 3 ersten Defines gelöscht, der Code läuft und es blinkert schön. Danke an sumsum!
Ob die jetzt auch über Wochen hin synchron arbeiten wird stelle ich mal in Frage, aber für die erste Stunde hats sich gut geschlagen. Falls es gar nicht vernünftig geht, habe ich ein Uhrenmodul hier liegen, das evtl. noch eingebunden wird. Am schönsten wäre ja DCF77, aber so ist schon mal genug für´s erste.
Bilder gibts, wenn das ganze mal in einem Turm eingebaut ist.

- veni, vidi, ferruminavi -
- ich kam, ich sah, ich l?tete -