Forum: Mikrocontroller und Digitale Elektronik int-Variable in Einerstellen und Zehnerstellen zerlegen


von Gustaf G. (hegigmbh)


Lesenswert?

Hallo
ich bin blutiger Anfänger was das Programmieren des Arduinos angeht.
Als erstes Projekt habe ich mir eine Binäruhr herausgesucht. Ich habe 
dafür unter anderem das DS3231 Echtzeitmodul verbaut. Jetzt stehe ich 
jedoch vor einem Problem:
Ich muss um die LEDs der Binäruhr anzusteuern ein Schieberegister 
verwenden. Ich habe nun eine Methode gefunden um die Dezimalzahlen, die 
mir das Modul ausspuckt in eine Dezimalzahl umzuschreiben, mit der ich 
das Schieberegister bedienen kann. Jedoch muss ich die Zehnerstellen und 
die Einerstellen dafür getrennt von einander betrachten. Die Anzahl der 
Sekunden sind bdw in einer Variablen gespeichert
Also zum Beispiel, wenn ich 34 Sekunden habe muss ich 3 und die 4 
getrennt von einander verarbeite können. Hab ihr irgeneine Idee, wie ich 
das machen kann?
Wenn möglich kopiert bitte euren Lösungsvorschlag aus dem 
Ardoinoprogramm heraus und fügt ihn in eure Antwort ein.

Liebe grüße und Danke im Vorraus.

von jz23 (Gast)


Lesenswert?

1
int zehner = deineZahl/10;
2
int einer = deineZahl%10;

von Hmmm (Gast)


Lesenswert?

Gustaf G. schrieb:
> die Dezimalzahlen, die mir das Modul ausspuckt

Die RTC liefert doch BCD, also genau das, was Du brauchst.

von Lars R. (larsr)


Lesenswert?

Gustaf G. schrieb:
> Wenn möglich kopiert bitte euren Lösungsvorschlag aus dem
> Ardoinoprogramm heraus und fügt ihn in eure Antwort ein.

Bitte?!

Schaue mal auf Seite 11 des Datenblatts.

Das Einzige, was man eventuell braucht: Rechts-Shift (>>) bzw. 
UND-Verknüpfung (&)...

Wie das geht, findest du in jedem guten Buch, dass die 
Programmiersprache C behandelt.

von Peter D. (peda)


Lesenswert?

Gustaf G. schrieb:
> Ich habe nun eine Methode gefunden um die Dezimalzahlen, die
> mir das Modul ausspuckt in eine Dezimalzahl umzuschreiben

Du solltest Methoden nicht gedankenlos kopieren, sondern auch verstehen, 
was sie machen.
Wie schon gesagt wurde, die Zahl wird im DS3231 bereits als packed BCD 
kodiert.

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.