Forum: Mikrocontroller und Digitale Elektronik WS2811 und 74HC595 Zusammen an Arduino steuren


von Niklas K. (tech_nik)


Lesenswert?

Hallo,
ich habe ein Problem mit meinem Code. Normalerweise würde ich selber 
daran Rum basteln bis es funktioniert. Aber das kann leider auch mal ein 
paar Wochen dauern und so viel Zeit habe ich nicht. Jetzt zum Thema. Ich 
möchte meiner Freundin zum Geburtstag (Morgen :( ) eine Selbstgemachte 
Uhr schenken. Praktisch und technisch funktioniert eigentlich schon das 
meiste. Ich habe ein Uhrmodul RTC DS1307) und möchte damit 4 große 7 
Segment anzeigen (mithilfe der Shift-Display Library und zwei 74HC595) 
ansteuern. Dazu sollen 60 LEDs mit WS2811 Chip quasi den Sekundenzeiger 
darstellen. Dazu kann man die Uhr mit einer IR Fernbedienung anschalten 
und die Zeit korrigieren ( hab erst zu spät gemerkt, das der RTC 
ziemlicher misst ist). Ich habe aber leider noch ein Problem mit der 
Software. Scheinbar vertragen sich die Schieberegister nicht mit dem 
WS2811. Alleine funktionieren beide Problemlos, aber wenn ich Code die 
beide Bauteile ansteuern zusammen laufen lasse blinken die 7 Segment 
anzeigen nur noch schwach.

Hier mein Code und bitte nicht gleich Zerfleischen bin nicht gut im 
Programmieren und "klaue" mehr so zusammen. Auch stehe ich Leider unter 
Zeitdruck da ich natürlich viel zu Spät angefangen habe zu Basteln ;)
1
#include <CharacterEncoding.h>
2
#include <ShiftDisplay.h>
3
4
5
#include <Adafruit_NeoPixel.h>
6
7
8
#include <RTClib.h>
9
#include <Wire.h>
10
11
#include <boarddefs.h>
12
#include <IRremote.h>
13
#include <IRremoteInt.h>
14
#include <ir_Lego_PF_BitStreamEncoder.h>
15
16
#define PIXEL_PIN   9    // Digital IO pin connected to the NeoPixels.
17
18
#define PIXEL_COUNT 60
19
20
21
// Parameter 1 = number of pixels in strip,  neopixel stick has 8
22
// Parameter 2 = pin number (most are valid)
23
// Parameter 3 = pixel type flags, add together as needed:
24
//   NEO_RGB     Pixels are wired for RGB bitstream
25
//   NEO_GRB     Pixels are wired for GRB bitstream, correct for neopixel stick
26
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
27
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
28
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); //Initialisierung der LEDs
29
//-------------------
30
ShiftDisplay display(6,4,5,COMMON_CATHODE, 4); // Arduino pin 6 connected to shift register latch, pin 4 to clock and pin 5 to data
31
// common anode display with 4 digits
32
//----------------
33
34
35
RTC_DS1307 rtc; //Initialisierung des RTC
36
int minute_correct=0; //Variable für korrigierte Zeit
37
int time_display=0; // Korrigierte Zeit in hhmm
38
int MinuteCorrection=0; //Variable für die Zeit Korrektur
39
40
//---------------
41
int RECV_PIN=3;//Initialisierung des IR Empfängers
42
IRrecv irrecv(RECV_PIN);
43
decode_results results;
44
45
int LED_MODE=0; //Momentaner LED Mode
46
int Number_LEDModes=2; // Nummer der LED Modes
47
int start=0;
48
int i=0;
49
50
unsigned long previousMillis = 0;       //Ersatz für Delay im Sekundenzeiger
51
unsigned long previousMillis2 = 0;        // Ersatz für Delay im LOOP
52
53
54
const long interval = 1000;  // Interval für den Sekundenzeiger
55
56
//--------------
57
void IRReceiver() // Teil für den IR Empfänger
58
{
59
60
61
  if (irrecv.decode(&results)) {
62
    Serial.println(results.value, HEX);
63
    irrecv.resume(); // Receive the next value
64
  }
65
  
66
 
67
68
    if( results.value== 0xFF18E7){ //LED Mode +
69
      if(LED_MODE<Number_LEDModes)
70
      {
71
   LED_MODE++;
72
   Serial.print("LM");
73
   Serial.println(LED_MODE);
74
      }
75
      else
76
      {
77
        LED_MODE=0;
78
      }
79
    results.value = 0x00000000;
80
   }
81
     if( results.value== 0xFF4AB5){ //LED Mode -
82
      if(LED_MODE>=0)
83
      {
84
    LED_MODE=LED_MODE-1;
85
       Serial.print("LM");
86
    Serial.println(LED_MODE);
87
      }
88
      else
89
      {
90
        LED_MODE=Number_LEDModes;
91
        
92
      }
93
    results.value = 0x00000000;
94
   }
95
     if( results.value== 0xFF10EF){ //Time Correction +1 Minute
96
    MinuteCorrection--;
97
    Serial.println(MinuteCorrection);
98
    results.value = 0x00000000;
99
   }
100
    if( results.value== 0xFF5AA5){ //Time Correction -1 Minute
101
    MinuteCorrection++;
102
    Serial.println(MinuteCorrection);
103
    results.value = 0x00000000;
104
   }
105
 
106
}
107
108
void setup() {
109
  // put your setup code here, to run once:
110
  strip.begin(); //start für die LEDs
111
  
112
  strip.show(); 
113
114
115
  pinMode(RECV_PIN, INPUT);
116
irrecv.enableIRIn(); // Startet den IR Empfänger
117
118
119
Serial.begin(9600);
120
121
display.set(1234, ALIGN_LEFT);//Setzt das Display auf die aktuelle Uhrzeit
122
123
}
124
125
void loop() {
126
  // put your main code here, to run repeatedly:
127
128
IRReceiver();
129
130
if (LED_MODE==0) //Schaltet zwischen den verschiedenen Modi um
131
{
132
off();
133
start=0; 
134
}
135
if(LED_MODE==1)
136
 {
137
  
138
  if ( start==0) //Einmalig sollen alle LEDs ausgeschaltet werden, dann startet der "Sekundenzeiger"
139
  {
140
    off();
141
    start++;
142
  }
143
  sekunden_LED();
144
145
 }
146
if(LED_MODE==2)
147
{
148
  all_red();
149
  start=0;
150
}
151
152
unsigned long currentMillis2 = millis();
153
154
correct_time(); 
155
   
156
157
158
  if (currentMillis2 - previousMillis2 >= 1000) { //aktuallisiert alle 10 Sekunden das Display
159
  
160
    previousMillis2 = currentMillis2;
161
display.update();
162
    Serial.println(time_display);
163
164
  }
165
166
}
167
168
void sekunden_LED()// Rote LED "Hüpft" Jede Sekunde eins weiter
169
{
170
 
171
 strip.begin();
172
  
173
unsigned long currentMillis = millis();
174
175
  if (currentMillis - previousMillis >= interval) {
176
    // save the last time you blinked the LED
177
    previousMillis = currentMillis;
178
    Serial.println(time_display);
179
    if ( i<PIXEL_COUNT)
180
    {
181
       strip.setPixelColor(i,strip.Color(0,255,0));
182
       strip.setPixelColor(i-1,strip.Color(0,0,0));
183
       strip.show();
184
       i++;
185
    }
186
    else
187
    {
188
      i=0;
189
      off();
190
    }
191
}
192
}
193
194
void all_red() //Schalte alle LED rot
195
{
196
 
197
  for(int i=0 ; i<PIXEL_COUNT;i++)
198
  {
199
    strip.setPixelColor(i,strip.Color(0,255,0));
200
    strip.show();
201
  }
202
  
203
}
204
205
void off() // Schalte alle LEDs aus
206
{
207
for (int i=0; i<PIXEL_COUNT;i++)
208
{
209
  strip.setPixelColor(i,strip.Color(0,0,0));
210
  strip.show();
211
}
212
}
213
214
//----------------------------------------------------------------------
215
216
void correct_time() //Korrigiert Zeit vom RTC
217
{
218
  DateTime now = rtc.now();
219
220
  time_display=(now.hour()*100)+now.minute()+MinuteCorrection;
221
}

Der RTC ist über i2c Verbunden
Der IR Empfänger hängt an Pin 3
Der LED Strip an PIN 9
Die Schieberegister an Pin 6,4,5

Link zur Library: 
https://github.com/MiguelPynto/ShiftDisplay/blob/master/README.md

Die Teile für sich funktionieren alle in eigenen Beispielen. Nur 
Zusammen mögen sie sich nicht. Ich hoffe ihr könnt mir helfen den 
Geburtstag morgen zu retten. Freue mich über jede Hilfe.

von Mick (Gast)


Lesenswert?

Versuch mal, Neopixel mit FasLED zu ersetzen.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@ Niklas Krug (tech_nik)

>möchte meiner Freundin zum Geburtstag (Morgen :( ) eine Selbstgemachte

Aha, also 5 vor 12.

>darstellen. Dazu kann man die Uhr mit einer IR Fernbedienung anschalten
>und die Zeit korrigieren ( hab erst zu spät gemerkt, das der RTC
>ziemlicher misst ist).

Dann machst du was falsch. So eine RTC geht schon ganz gut.

> Ich habe aber leider noch ein Problem mit der
>Software. Scheinbar vertragen sich die Schieberegister nicht mit dem
>WS2811. Alleine funktionieren beide Problemlos, aber wenn ich Code die
>beide Bauteile ansteuern zusammen laufen lasse blinken die 7 Segment
>anzeigen nur noch schwach.

>Hier mein Code und bitte nicht gleich Zerfleischen bin nicht gut im
>Programmieren und "klaue" mehr so zusammen.

Aha.

> Auch stehe ich Leider unter
>Zeitdruck da ich natürlich viel zu Spät angefangen habe zu Basteln ;)

Logisch.

Dein Quelltext ist sehr schlecht formatiert und SEHR damit schlecht 
lesbar. Die Einrückungen sind Schrott! Außerdem gehören lange Quelltexte 
ind den Anhang, siehe Netiquette.

Strukturierte Programmierung auf Mikrocontrollern

Ich war mal so frei, siehe Anhang.

Ich sehe keinen direkten Fehler, allerdings sehe ich auch keine Stelle, 
wo auf dein Display neue Daten geschrieben werden. Das passiert nur 
einmalig am Anfang in setup() mit display.set . . .

von Falk B. (falk)


Lesenswert?

Alleine funktionieren beide Problemlos, aber wenn ich Code die
beide Bauteile ansteuern zusammen laufen lasse blinken die 7 Segment
anzeigen nur noch schwach.

Kann es sein, daß dein Netzteil zu schwach ist?

von Niklas K. (tech_nik)


Lesenswert?

Danke schonmal für die Antworten. Tut mir leid das mit dem Quellcode 
wusste ich nicht. Wird ab jetzt so gemacht. versprochen.

@Mick danke für den Tipp bin jetzt gerade dabei die Library zu 
installieren und zu testen.

@Falk Nur unter Druck entstehen Diamante ;). Leider musste ich auf Teile 
aus China warten und daher kam es zu einiger Verzögerung. Tut mir leid 
wenn ich hier nicht alles richtig gemacht habe. Bin mehr der Stille 
Leser und schreibe nur sehr selten einen Beitrag. Vielen Dank fürs 
Formatieren.
Das display.set() im Setup{} war auch zu Versuchszwecken. Hat aber 
keinen Einfluss auf das Problem. Es scheint so, dass sich die Librarys 
nicht vertragen.

Am Netzteil liegt es nicht. Ist ein Labornetzteil mit bis zu 5A.

Vielen Dank schonmal für die Tipps und Hilfen.

von Falk B. (falk)


Lesenswert?

@Niklas Krug (tech_nik)

>Das display.set() im Setup{} war auch zu Versuchszwecken. Hat aber
>keinen Einfluss auf das Problem. Es scheint so, dass sich die Librarys
>nicht vertragen.

Glaub ich nicht. Wie soll den das Display flackern, wenn es nicht 
angesprochen wird? Dann müsste ja andere Software dort unzulässig an den 
Pins wackeln. Glaub ich eher weniger. Prüfe mal deinen Aufbau. GGf. 
schließ das LCD an andere Pins an.

>Am Netzteil liegt es nicht. Ist ein Labornetzteil mit bis zu 5A.

Strombegrenzung hochgedreht?

von Niklas K. (tech_nik)


Lesenswert?

Strombegrenzung auf 150mA das sollte reichen

Die Sieben Segment Anzeigen funktionieren wenn ich nur einen einfachen 
Test Code hochlade.
Nur Zusammen wollen sie nicht. Leider auch nicht mit der anderen 
Library. Scheint wohl ein Timer Problem zu sein.

von Falk B. (falk)


Lesenswert?

@ Niklas Krug (tech_nik)

>Strombegrenzung auf 150mA das sollte reichen

Hmm. Warum so wenig? Mach mal 500mA.

>Die Sieben Segment Anzeigen funktionieren wenn ich nur einen einfachen
>Test Code hochlade.

Welchen?

>Nur Zusammen wollen sie nicht. Leider auch nicht mit der anderen
>Library. Scheint wohl ein Timer Problem zu sein.

Jaja, es sind immer die Anderen Schuld ;-)

Nimm mal den Programm und kommentiere Schritt für Schritt Funktionen 
aus. Dann solltest du was sehen.

von Niklas K. (tech_nik)


Angehängte Dateien:

Lesenswert?

War ein "Explosionsschutz"


Falk B. schrieb:
> Nimm mal den Programm und kommentiere Schritt für Schritt Funktionen
> aus. Dann solltest du was sehen.

Das habe ich die letzte Stunde gemacht und bin auf die Adafruit_NEO 
PIXEL Library gestoßen. Wenn ich alles blockiere was mit ihr zu tun hat 
läuft das 7 Segment Display einwandfrei.

habe meine Hoffnung etwas aufgegeben und bin gerade dabei zwei Arduinos 
das Sprechen beizubringen. Muss mich da aber auch erst einlesen, hab ich 
vorher noch nie gemacht.

Mein Plan ist jetzt : ein Arduino übernimmt die LEDs, die Uhr und den IR 
Empfänger und der Andere bekommt vom 1. Arduino die Uhrezeit geschickt 
und bringt sie auf das 7 Segment Display. Ist zwar nicht wunderschön 
aber ich hoffe das es so funktioniert.

Der Code im Anhang funktioniert mit meinerSchaltung einwandfrei ( ist 
ein Beispiel Code)

Danke für deine vielen Tipps Falk

von Falk B. (falk)


Lesenswert?

@Niklas Krug (tech_nik)

>Das habe ich die letzte Stunde gemacht und bin auf die Adafruit_NEO
>PIXEL Library gestoßen. Wenn ich alles blockiere was mit ihr zu tun hat
>läuft das 7 Segment Display einwandfrei.

Hmm.

>habe meine Hoffnung etwas aufgegeben und bin gerade dabei zwei Arduinos
>das Sprechen beizubringen. Muss mich da aber auch erst einlesen, hab ich
>vorher noch nie gemacht.

Bitte nicht! Das ist russisch!

RTFM!

https://github.com/MiguelPynto/ShiftDisplay/blob/master/README.md

>    display.update()

>Show on the display the stored value. For multiplexed drive, this must be >in a 
loop; for static drive, the value is shown until update()/clear()
>/show() is called.

Das fehlt in deiner Loop!!!

Diese Displayansteuerung nutzt keinerlei Timer etc, nur periodische 
Aufrufe aus der loop(). Also können die Neopixel nicht direkt Schaden 
anrichten. Bestenfalls indirekt, wenn du die zu oft aktualisierst.

Du hast diesen Constructor kopiert.

ShiftDisplay display(6,4,5,COMMON_CATHODE, 4);

So ist der dokumentiert

ShiftDisplay display([latchPin, clockPin, dataPin, ]displayType, 
displaySize[, displayDrive])

Den optionalen Parameter displayDrive hast du weggelassen. Der ist aber

displayDrive: constant MULTIPLEXED_DRIVE or STATIC_DRIVE, defining the 
drive algorithm of the display; if is not specified, the default is 
MULTIPLEXED_DRIVE.

Also ist deine Anzeige im Multiplex-Betrieb. D.h. du musst 
display.update() möglichst oft aufrufen, nicht nur 1x pro Sekunde!

Lösung. Platziere

display.update();

direkt nach

IRReceiver();

in deiner loop(), ohne Bedingung etc.

von Niklas K. (tech_nik)


Lesenswert?

Danke!! Das hat mich nen großen Schritt weiter gebracht. Ich darf nur so 
selten wie möglich einen neuen Befehl an die LEDs schicken. Das dauert 
immer eine Weile und währenddessen funktioniert das natürlich 
Multiplexing nicht. Super jetzt schreibe ich mal den Code um und Schaue 
das ich so Selten die LEDs aktualisiere wie es geht. Ich muss mal testen 
ob ich die Strips in kleinere Teile a 10 LEDS aufteilen kann. Das immer 
nur ein Befehl an den kurzen Teil Strip gegeben werden muss in dem 
gerade der "Sekundenzeiger" ist.

Ich könnte dich küssen Falk vielen Dank für die mühe und deine Geduld 
mit mir.

Wird noch ne lange Nacht :)

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Niklas K. schrieb:
> Wird noch ne lange Nacht :)

Pass bloß auf dass du morgen den Geburtstag deiner Holden nicht 
verpennst!

:D

von Ralph S. (jjflash)


Lesenswert?

Ich denke, das wird so nichts, denn:

Die WS28xx benötigen eine Datenfrequenz von ca. 800 kHz. Das ist für 
einen ATmega schon recht "sportlich".

Ich hatte (allerdins nicht für Arduino) auch Routinen für WS28xx 
geschrieben gehabt und ohne Maschinen hätte ich es wohl gar nicht 
hinbekommen.

Wenn eine Ausgabe auf WS28xx erfolgt mußte ich die Interrupts sperren, 
damit ich das Timing einhalten konnte.

Niklas K. schrieb:
> (mithilfe der Shift-Display Library und zwei 74HC595)

Hieraus entnehme ich, dass mit 2 Schieberegistern 4 7-Segmentanzeigen 
zwingend gemultiplexd werden (höchstwahrscheinlich über einen 
Timerinterrupt).

Für die Zeit in der die Ausgabe auf die Leuchtdiodenkette erfolgt, wird 
die 7 Segmentanzeige nicht gemultiplext und bleibt für die Dauer der 
Ausgabe auf die LEDs an einer Ziffernpostion hängen.

Hm, dein Programm sollte also die WS28xx LED-Reihe nur dann refreshen, 
wenn eine Sekunde wirklich um ist.

Für diesen Fall hast du eine komplette Übertragung an die LEDs zu:

jeweils 8 (serielle) Bits für rot, grün und blau.

Sind 24 Bits pro LED.

60 LEDs * 24 Bit = 1440 Bits.

Getaktet mit 800 kHz ergbit das eine Verzögerung von 1,8 mS.

Niklas K. schrieb:
> ( hab erst zu spät gemerkt, das der RTC
> ziemlicher misst ist)

Der DS1307 reagiert "alergisch", wenn er permanent befeuert wird (sprich 
durchgehend gelesen oder hohe Busaktivität auf dem I2C).

Abhilfe schaffen hier Serienbedämpfungswiderstände in den Leitungen zum 
DS1307 von ca. 100 Ohm. Auf einmal war bei mir die Genauigkeit ein 
Vielfaches höher als zuvor.

von Niklas K. (tech_nik)


Angehängte Dateien:

Lesenswert?

danke Ralph für die ausführlichen Informationen dann werde ich auf jeden 
Fall noch 2x100 Ohm Widerstände in die Leitung hängen. Ich habe mein 
Vorhaben jetzt etwas verkleinert und auf die IR-Fernbedienung 
rausgeschmissen. Überlege vielleicht noch zwei Taster für die Zeit 
Korrektur einzubauen sonst lasse ich es so wie es jetzt ist.
Jetzt gerade sitze ich noch am Löten und werde morgen wohl noch die Uni 
schwänzen dann klappt hoffentlich alles. Wenn nicht noch grob was schief 
läuft.
Wünsche allen eine schöne Nacht und nochmals Danke für die viele Hilfe 
sieht momentan echt Vielversprechend aus.

Edit Im Anhang noch mein momentaner, sehr gekürzter, Code.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Niklas Krug (tech_nik)

>Danke!! Das hat mich nen großen Schritt weiter gebracht. Ich darf nur so
>selten wie möglich einen neuen Befehl an die LEDs schicken.

Machst du doch so oder so nur einmal pro Sekunde. Das ist nix.

> Das dauert
>immer eine Weile und währenddessen funktioniert das natürlich
>Multiplexing nicht.

Das sind vielleicht 5ms, vergiss es.

> Super jetzt schreibe ich mal den Code um und Schaue
>das ich so Selten die LEDs aktualisiere wie es geht. Ich muss mal testen
>ob ich die Strips in kleinere Teile a 10 LEDS aufteilen kann.

Ist nicht nötig.

>Ich könnte dich küssen Falk

Aber nur Bruderkuss!

>Wird noch ne lange Nacht :)

Und morgen erst! ;-)

von Falk B. (falk)


Lesenswert?

@Ralph S. (jjflash)

>Die WS28xx benötigen eine Datenfrequenz von ca. 800 kHz. Das ist für
>einen ATmega schon recht "sportlich".

Und das sind sie wieder, die Reichsbedenkenträger. OMG!

Die Neopixel-Lib macht das schon richtig! Punkt!

>Hieraus entnehme ich, dass mit 2 Schieberegistern 4 7-Segmentanzeigen
>zwingend gemultiplexd werden (höchstwahrscheinlich über einen
>Timerinterrupt).

NEIN! Lies den Link!

>Für die Zeit in der die Ausgabe auf die Leuchtdiodenkette erfolgt, wird
>die 7 Segmentanzeige nicht gemultiplext und bleibt für die Dauer der
>Ausgabe auf die LEDs an einer Ziffernpostion hängen.

Genau, und dann geht die Welt unter.

>Hm, dein Programm sollte also die WS28xx LED-Reihe nur dann refreshen,
>wenn eine Sekunde wirklich um ist.

Macht er schon, hat er richtig copy&pasted!

von Joachim B. (jar)


Lesenswert?

Falk B. schrieb:
>>und die Zeit korrigieren ( hab erst zu spät gemerkt, das der RTC
>>ziemlicher misst ist).
>
> Dann machst du was falsch. So eine RTC geht schon ganz gut.

die DS1307 die er hat ist Mist, die läuft schnell ungenau, aber er kann 
mit demselben Code (fast) die genauere DS3231 ansteuern.

Die DS1307 braucht zum einstellen ein STOP und danach ein START 
Kommando, die DE3231 eben nicht.
1
if(i2c_test_flags&(1<<I2C_RTC_1307)) { _i2c_busy=1; RTC.stopClock(); _i2c_busy=0; }
2
      RTC.fillByYMD( atoi(lefts(c_str,4)), atoi(mids(c_str,6,2)), atoi(mids(c_str,9,2)) );
3
      RTC.fillByHMS( atoi(mids(c_str,12,2)), atoi(mids(c_str,15,2)), atoi(rights(c_str,2)) );
4
      _i2c_busy=1; RTC.setTime(); _i2c_busy=0;
5
      if(i2c_test_flags&(1<<I2C_RTC_1307)) { _i2c_busy=1; RTC.startClock(); _i2c_busy=0; }
6
      (i2c_test_flags&(1<<I2C_RTC_3231)) ? Serial.println(F(" DS3231 RTC ist gestellt")) : Serial.println(F(" DS1307 RTC ist gestellt"));
7
      _i2c_busy=1; RTC.getTime(); _i2c_busy=0;

von Niklas K. (tech_nik)


Lesenswert?

Ja so habe ich das auch gelesen. Der DS1307 soll bis zu mehrere Minuten 
pro Woche Falsch gehen und der DS3231 deutlich genauer sein. Vielleicht 
gibt es den ja zu Weihnachten. Also so weit ich beurteilen kann, läuft 
die Schaltung auf dem Steckbrett. Ich muss mich nochmal über die 
Korrekte Ansteuerung des RTC1307 belesen, das ich da auch alles wichtige 
auf der Platine habe.
Nach ein paar Stündchen Schlaf mache ich mich morgen dann an die Platine 
und wenn alles Klappt habe ich dann bald eine "mehr oder weniger " gute 
Uhr. So weit der Plan.

von Niklas K. (tech_nik)


Angehängte Dateien:

Lesenswert?

Anstrengender Tag aber es ist soweit alles super gelaufen. Bin endlich 
fertig und es sieht super aus. Vielen Dank an Falk und an alle anderen 
die geholfen haben!! Ohne euch hätte ich es nicht geschafft. Im Anhang 
ein paar Bilder von der fertigen Uhr.

Der Geburtstag kann kommen und mal sehen ob es ihr gefällt.

von Falk B. (falk)


Lesenswert?

@ Niklas Krug (tech_nik)

>    Johanna_GB_fertig_vorne.jpg

>Anstrengender Tag aber es ist soweit alles super gelaufen. Bin endlich
>fertig und es sieht super aus.

Herzlichen Glühstrumpf!

>ein paar Bilder von der fertigen Uhr.

Was sehe ich da? Was für James Bond seine Walter PPK, ist für den 
Bastler seine Heißklebepistole! Und beide werden nur selten kalt. ;-)

von Falk B. (falk)


Lesenswert?

Sehe ich das richtig? Diese LEDs gibe es auch als bedrahtete Bauteile? 
und du hast die einfach direkt miteinander verbunden? Und es gibt an 
KEINER LED einen Entkoppelkondensator? Und die funktionieren alle? Oder 
haben die schon einen eingebaut?

https://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator

Ich würde mal wenigstens alle 10 LEDs so ein Ding verlöten, das geht ja 
nun schnell.

von Niklas K. (tech_nik)


Lesenswert?

Es funktionieren alle. Aber dann mach ich das noch schnell. Bin mir 
nicht sicher ob sie einen eingebaut haben. Aber dann muss ich bald los 
;)

von cool (Gast)


Lesenswert?

Es kann nur ein Mann auf die Idee kommen, ein selbstgebasteltes Uhr zu 
schenken ;-) Ich hoffe es gefällt ihr. Und wenn es Ihr gefällt, dann 
hast Du eine tolle Frau :-)

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Herzlichen Glühstrumpf!

Eeeey... das is MEIN Spruch!  ?

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.