Pages: 1 2 3 [4] 5 6 ... 8   Go Down
Author Topic: Led Uhr  (Read 5407 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich glaube ich versuche es jetzt einfach mit 132 If anweisungen. Es ist sehr Hilfreich das ihr mir Helft doch leider verstehe ich davon relativ wenig also was den Code angeht. Aber wenn jemand von euch noch Tipps hatt den Code etwas zu kürzen würde ich mich trotzdem sehr freuen.

Liebe Grüße,
Valli
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

Du bist mit:
Quote
1=00111000
2=00110100
3=00101100
4=01011000
5=01010100
6=01001100
7=10011000
8=10010100
9=10001100
der lösung schon recht nah.
wenn Du Dir ein byte-array erstellst:

byte seks[9] = {B00111000, B00110100, B00101100, B01011000, B01010100,
B01001100, B10011000, B10010100, B10001100};

und dann, wenn die RTC sekunde=0 meldet, einfach seks[sekunde] an Dein schieberegister sendest, hast Du einen anfang.
Du brauchst dazu natürlich keine if-abfragen, die library von der RTC sendet Dir ja den sekunden-wert schon in einer variablen, also sie sagt Dir zb.
hr=3
mn=15
sc=3
also schickst Du ans schieberegister seks[sc]

Du solltest auch nur ans schieberegister senden, wenn sich der sekunden-wert ändert, sonst schickst Du tausende male jede sekunde, aber das ist ein zweiter schritt.
wo Dein problem mit der 10-sekunden-verzögerung usw liegt, kann ich nicht sagen, dazu mußt Du ein schaltbild und den sketch herzeigen.

gruß stefan
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

danke danke danke das ist richtig gut, vorallem weil ich es verstehe also muss man sozusagen:

byte sek[60]und hier die Werte
byte min[60]und hier die Werte
byte stunde[12]und hier die Werte

und dann muss ich sek[sekunde] min[minute] stunde[hour] schreiben ????
aber das geht leider nicht ganz auf, denn ich habe 132 led´s also 12 cotoden und 13 anoden das heißt ein schiebe register muss die hälfte catodeund die andere hälfte anoden steuern das muss ich dann mit if und bitWrite funktionen machen oder ??

Liebe Grüße  smiley

Valli

Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

tja, und genau da klink' ich mich aus, ich bin kein fan von multiplexing.
vorteile:
1. du brauchst weniger schieberegister (pro stück 30cent)
nachteile:
1. keine volle helligkeit der leds.
2. wesentlich kompliziertere programmierung.

früher war das viel wichtiger, weil alles teurer war, aber heute find' ich's nicht mehr zeitgemäß.
und wenn man nicht so auf's geld schauen muß, empfehl' ich sowieso leds mit controller (rgb-leds mit controller 40cent pro stück). da kannst Du alle farben nach tagesverfassung eingeben, jede helligkeit einstellen usw.

gruß stefan
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

vom grund prinzip hast du ja recht aber ich wil eine uhr bauen, das heißt sie soll nicht all zu groß werden wenn ich 17 schiebe register auf eine Platine baue ist das eine sehr große Uhr. Wenn ich auch noch RGB einbauen würde brauche ich 50 schiebe register. Das sind sehr sehr viele.
Wenn ich den Code schreibe werde ich sehr wahrscheinlich nochmal auf eure Hilfe zurück kommen.

Herzlichen Dank,
Valli

Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

nein, das mit den RGBs hast Du falsch verstanden, die haben das "schieberegister" schon eingebaut.

beim programmieren sagst Du dann einfach:
LED[56] rot:50%, blau 70%, grün 10%

oder Du legst die farbwerte generell fest und sagst nur led[56] an.

mehr bauteile gibt es nicht.

gruß stefan
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 49
Posts: 2741
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1. multiplexen ist nicht kompliziert ( dein 3x3 geht ja schon )

2. Mit 8 Kathoden und 8 Anoden brauchst du 2 Schieberegister für 64 LED
   Das gleiche für Minuten +  in einem 5. Register 4*4 für die Stunden
   
  Bei der Methode kannst du dir die BitPosition auch ausrechnen, falls dir die Tabelle mit 60 Einträgen unheimlich ist
  Und je 1 LED leuchtet 100%.

oder

3.  Mit 12 x 12 hast du 144 LED in 3 Schieberegistern
     Musst allerdings die 3 LED nacheinander ansteuern.

Statt 132 if solltest du dir vielleicht mal switch () case anschauen, aber Stefans table lookup ist tatsächlich besser,
vor allem da du die Tabelle schon aufgeschrieben hast:

Probier mal sein
Code:
byte seks[9] = {
   0B00111000,   // 0
   0B00110100,   // 1
   0B00101100,   // 2
   0B01011000,   // 3
   0B01010100,   // 4
   0B01001100,   // 5
   0B10011000,   // 6
   0B10010100,   // 7
   0B10001100    // 8
};
mit deinem 3x3 Test und bau ihn dann auf 4x4 für 12 (16) Stunden aus...

RGB Led sind natürlich cooler, aber das wird dann eine andere Uhr smiley-wink
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

erstmal bin ich verblüfft, daß man die ausgänge der schieberegister auch als GND schalten kann. verwendest Du 74HC595 ?

uwe ??? im datenblatt steht ja tri-state. heißt das, daß man die ausgänge als +, -, und undefiniert schalten kann ? und wie schaltet man den dritten zustand ?

falls das geht, hast Du, valli, es ja recht einfach, das ist dann auch nicht das, was ich als multiplexing bezeichnen würde, also akzeptabel für mich. smiley-razz

gruß stefan
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

die Platine ist so gut wie fertig. Der atmega funktioniert schon aber die schiebe register habe ich noch nicht auf die Platine gesteckt. Da ich sehr wahrscheinlich kein netzteil finde das genau 5V liefert habe ich einen Spannungswandler mit Hilfe dieser anleitung: http://www.arduino-tutorial.de/2010/08/spannungsregler-2/ auf der Platine untergebracht. Aber messe ich bei ca. 8,9V Input eine Spannung von 5,7V. Deshalb ist meine Frage verkraftet der Atmaga die 0,7V zu viel ???
Wenn nicht was kann ich dann machen?
« Last Edit: May 19, 2013, 06:34:51 am by uwefed » Logged

Austria
Offline Offline
Full Member
***
Karma: 2
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

im datenblatt steht ja tri-state. heißt das, daß man die ausgänge als +, -, und undefiniert schalten kann ? und wie schaltet man den dritten zustand ?

Wenn ich das Datenblatt richtig verstehe, kann man den dritten Zustand (High Impedance) nur für alle Pins gleichzeitig aktivieren.
Dafür ist der Pin /G (Output Enable) zuständig, wird dieser auf HIGH gelegt, dann sind alle 8 Ausgänge hochohmig.

Grüße,
J3RE
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

die Platine ist so gut wie fertig. Der atmega funktioniert schon aber die schiebe register habe ich noch nicht auf die Platine gesteckt. Da ich sehr wahrscheinlich kein netzteil finde das genau 5V liefert habe ich einen Spannungswandler mit Hilfe dieser anleitung: http://www.arduino-tutorial.de/2010/08/spannungsregler-2/ auf der Platine untergebracht. Aber messe ich bei ca. 8,9V Input eine Spannung von 5,7V. Deshalb ist meine Frage verkraftet der Atmaga die 0,7V zu viel ???
Wenn nicht was kann ich dann machen?

Hast Du die Diode an der richtigen Stelle? Unabhängig davon würe es besser sie zwischen +Pol Buchse und Vin des Spannungsstabilisators zu schalten.
Grüße Uwe
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1397
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da ich sehr wahrscheinlich kein netzteil finde das genau 5V liefert habe ich einen Spannungswandler mit Hilfe dieser anleitung: http://www.arduino-tutorial.de/2010/08/spannungsregler-2/ auf der Platine untergebracht. Aber messe ich bei ca. 8,9V Input eine Spannung von 5,7V. Deshalb ist meine Frage verkraftet der Atmaga die 0,7V zu viel ???
Wenn nicht was kann ich dann machen?
Das Problem ist, das die Diode in dem Beispiel an der falschen Stelle sitzt. Die 0,7V zuviel sind nämlich genau die Spannung die über der Diode abfällt und die sich zu den 5V des Reglers addiert. Setz die Diode mal statt auf die Masseleitung auf die 12V Eingangsleitung (dann natürlich mit anderer Polung).
Dann solltest Du 5V messen.
Einige gute Beispiele für die Beschaltung der 78XX Regler findet man hier: http://www.ferromel.de/tronic_5.htm
oder hier : http://bwir.de/technik/spannungsregler
Mario.
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20196
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

erstmal bin ich verblüfft, daß man die ausgänge der schieberegister auch als GND schalten kann. verwendest Du 74HC595 ?

uwe ??? im datenblatt steht ja tri-state. heißt das, daß man die ausgänge als +, -, und undefiniert schalten kann ? und wie schaltet man den dritten zustand ?

falls das geht, hast Du, valli, es ja recht einfach, das ist dann auch nicht das, was ich als multiplexing bezeichnen würde, also akzeptabel für mich. smiley-razz

gruß stefan
Die Ausgänge des 74HC595 könne LOW (0V) HIGH (+Versorgungsspannung oder anders gesagt zwischen 2V bis 6V) oder hochohmig sein. Man kann nur alle Ausgänge gleichzeitig mit !OE auf hochohmig schalten und verliert dabei den Inhalt des Schieberegisters.

Grüße Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

das mit dem Spannungswandler habe ich sehr gut hinbekommen ich habe die diode einfach bei dem input für die Spannung gesetzt nun wollte ich meine RTC ausprobieren es hat funktioniert (ohne Batterie) Dann habe ich die batterie eingelegt um zu sehen ob die zeit gespeichert wird. Ergebnis: Ja sie wird gespeichert. Nun wollte ich das erste mal die Schiebe register ausprobieren. Vorher habe ich alles noch mal mit einem Voltmeter Geprüft ob auch da 5V ist wo es sein soll.
Das eigentliche Problem ist das die RTC aus unerklärlichen gründen warm-heiß wurde ich hatte den ftdi und die Batterie stecken. Die Batterie hat eine Spannung von 3,12V Aber wieso wurde die RTC warm? Ich habe die RTC und die Batterie natürlich sofort aus dem Sockel genommen.

Liebe Grüße,
Valli
Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

ist Dir klar, daß Du die batterie nicht zu den 5V am "normalen" VCC-anschluß dazuhängen darfst? dafür gibt es einen eigenen pin an der RTC (zwischen GND und den beiden pins für den quarz).

gruß stefan
Logged

Pages: 1 2 3 [4] 5 6 ... 8   Go Up
Jump to: