Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 55
» Neuestes Mitglied: b7acky
» Foren-Themen: 52
» Foren-Beiträge: 69

Komplettstatistiken

Aktive Themen
NeoPixelClock
Forum: Projekte
Letzter Beitrag: Gorathan
08.02.2020, 16:01
» Antworten: 0
» Ansichten: 167
_GDIPlus_GraphicsDrawStri...
Forum: Scripte
Letzter Beitrag: Gorathan
04.02.2020, 19:31
» Antworten: 0
» Ansichten: 195
LED-Tester
Forum: Projekte
Letzter Beitrag: Gorathan
31.01.2020, 08:00
» Antworten: 0
» Ansichten: 190
Countdown-Timer mit I2C-L...
Forum: Projekte
Letzter Beitrag: Gorathan
15.01.2020, 15:46
» Antworten: 0
» Ansichten: 214
Wemos D1 mini mit WPS-Pus...
Forum: Nützliche Funktionen
Letzter Beitrag: Gorathan
15.01.2020, 15:15
» Antworten: 0
» Ansichten: 209
LED-Lauflicht
Forum: Projekte
Letzter Beitrag: Gorathan
30.05.2019, 19:08
» Antworten: 1
» Ansichten: 1.135
DS18B20-Tester
Forum: Projekte
Letzter Beitrag: Gorathan
09.05.2019, 10:58
» Antworten: 0
» Ansichten: 652
Backofen-Thermometer
Forum: Projekte
Letzter Beitrag: Gorathan
05.05.2019, 18:42
» Antworten: 0
» Ansichten: 680
Taster entprellen
Forum: Nützliche Funktionen
Letzter Beitrag: Gorathan
26.04.2019, 18:08
» Antworten: 0
» Ansichten: 690
Anfang der Jahreszeiten b...
Forum: Nützliche Funktionen
Letzter Beitrag: Gorathan
22.04.2019, 17:39
» Antworten: 0
» Ansichten: 677

 
Information NeoPixelClock
Geschrieben von: Gorathan - 08.02.2020, 16:01 - Forum: Projekte - Keine Antworten

So ein NeoPixel-Ring mit 60 LEDs (WS2812) eignet sich ja sehr gut zum basteln einer Uhr. Das wurde ja auch schon diverse Male gemacht. Ich wollte aber nichts nachbauen, sondern sie komplett neu bauen.
Meine NeoPixelClock besteht aus dem NeoPixel-Ring, einer 8fach 7-Segment-Anzeige (mit MAX7219) zur Anzeige des Datums (dd.mm.jjjj), einem Luxmeter (BH1750) zum regeln der Helligkeit, sowie einem Wemos D1 mini als zentralen Microcontroller.
Eingebaut habe ich das Ganze in ein Uhrengehäuse, bei dem ich die Zeiger und das Uhrwerk ausgebaut habe.
Der Durchmesser des Gehäuses von 25cm und das große Ziffernblatt passt ziemlich gut zu dem NeoPixel-Ring und dort, wo vorher das Uhrwerk drin war, kann man gut den Wemos D1 mini unterbringen.

Hier mal zwei Bilder von der fertigen Uhr:
       

In echt sieht die Uhr cooler aus. Das kann man auf dem Foto nicht so gut einfangen. Ich musste ziemlich abblenden, damit die LEDs das nicht überstrahlen und da macht mein Smartphone keine so guten Bilder.
Die Stunden werden mit drei LEDs dargestellt, die vormittags (0-11 Uhr) in Blau und nachmittags (12-23 Uhr) in Lila leuchten. Die Minuten leuchten in Grün und die Sekunden in Rot. Außerdem gibt es noch Stundenmarkierungen, die in Weiß leuchten (dunkler als die anderen LEDs).
In der Mitte befindet sich die 8fach 7-Segment-Anzeige mit dem Datum (in Rot) und darunter kann man den BH1750 erkennen, der die Helligkeit ermittelt und so die Helligkeit der Anzeigen entsprechend regelt.

Der Wemos kann per WPS-Button ins WLAN befördert werden und holt sich dann per NTP das aktuelle Datum und die aktuelle Uhrzeit, sodass die Uhr immer sekundengenau geht.
Außerdem läuft noch ein kleiner HTTP-Server, der eine Infoseite ausliefert und mit dem man den Sylvester-Countdown als Test starten kann.
Der Sylvester-Countdown zeigt am 31.12. umd 23:59 die letzten 60 Sekunden als rote LEDs an und zählt dann rückwärts. Das sieht ganz cool aus. [Bild: biggrin.gif]

Und ich habe auch die OTA-Updatefunktion eingebaut, damit ich die Uhr per WLAN updaten kann.

Schaltplan:
   

Den Sketch gibt es im ZIP-Archiv (Anhang).

Nochwas zum Stromverbrauch. Der liegt zwischen 160mA und 360mA (je nachdem, wie weit die LEDs "aufgedreht" werden). Also nichts für Batteriebetrieb.
Ich benutze hier ein 5V / 1A USB-Steckernetzteil (hatte ich noch rumliegen).



Angehängte Dateien
.zip   NeoPixelClock_D1mini.zip (Größe: 5,48 KB / Downloads: 0)
Drucke diesen Beitrag

Information _GDIPlus_GraphicsDrawStringRotate
Geschrieben von: Gorathan - 04.02.2020, 19:31 - Forum: Scripte - Keine Antworten

Ich habe hier eine Funktion geschrieben, mit der man einen String auf eine GDI+ Graphic zeichnen lassen kann.
Das Besondere daran ist, dass man den String um 90, 180 oder 270 Grad gedreht zeichnen lassen kann. Außerdem kann man Fontname, Schriftgröße, Schriftstil und die Ausrichtung (links, zentriert, rechts) angeben.
Auch mehrzeilige Strings sind möglich.
Im Beispiel habe ich außerdem einen Backbuffer mit eingebaut, um zu zeigen, wie man mit GDI+ auf andere Fenster (überlagernd) reagieren muss.

Edit: Neue Version! Man kann jetzt auch die Schriftfarbe angeben. Smile

Screenshot:
   



Angehängte Dateien
.au3   _GDIPlus_GraphicsDrawRotateString.au3 (Größe: 5,78 KB / Downloads: 0)
Drucke diesen Beitrag

Information LED-Tester
Geschrieben von: Gorathan - 31.01.2020, 08:00 - Forum: Projekte - Keine Antworten

LED-Tester
Da mir das Testen von LEDs mit dem Multimeter zu blöd war, vor allem, weil sie dabei nicht leuchten und man die Helligkeit beurteilen kann, habe ich mir einen LED-Tester gebaut.
Aufgebaut auf einer, selbst erstellten, doppelseitigen Platine. Mit zehn LM317 (die im TO92-Gehäuse) als Konstantstromquelle (5 verschiedene Ströme mal jeweils 2 Steckplätze).
Damit stehen folgende Ströme zum testen zur Verfügung: 2mA, 5mA, 10mA, 15mA und 20mA.
Durch die unterschiedlichen Ströme kann man beim entwickeln durchtesten, bei welchem Strom die gewünschte Helligkeit erreicht wird. Und dadurch, dass jeweils zwei Steckplätze vorhanden sind, kann man testen, ob zwei LEDs auch gleich hell leuchten. Das ist ganz hilfreich, wenn die LEDs aus der "Grabbelkiste" sind und man die genauen Daten nicht kennt.
Für den Stromanschluss habe ich eine Mikro-USB-Buchse vorgesehen. Es gibt so fertige Breakout-Platinen, wo die USB-Buchse auf eine 5polige Stiftleiste geführt wird. Meine Platine habe ich passend dazu angepasst, sodass ich die dort einlöten kann.
Hier mal ein Bild von der Platine:
   

Und vom fertigen Aufbau:
   

Wer sich auch so eine Platine anfertigen lassen will, darf gern die Gerberdateien benutzen (ZIP-Archiv, Anhang).



Angehängte Dateien
.zip   LED-Tester.zip (Größe: 10,13 KB / Downloads: 33)
Drucke diesen Beitrag

Information Countdown-Timer mit I2C-LCD
Geschrieben von: Gorathan - 15.01.2020, 15:46 - Forum: Projekte - Keine Antworten

Dieses Programm stellt einen Countdown-Timer dar.

Zuerst mal die benötigte Hardware:
1. Einen Arduino Nano oder Clone (https://www.berrybase.de/raspberry-pi-co...satz?c=300)
2. Ein Standard 16x2 LCD  (https://www.berrybase.de/raspberry-pi-co...gelb?c=123)
3. Ein I2C-Backpack (https://www.berrybase.de/bauelemente/akt...lays?c=123)
4. Einen Drehencoder (https://www.berrybase.de/bauelemente/pas...oard?c=164)
5. Einen Taster (https://www.berrybase.de/bauelemente/sch...5-0mm?c=86)
6. Ein Relais-Modul (https://www.berrybase.de/bauelemente/sen...lais-modul)
7. Ein 5V Netzteil (https://www.berrybase.de/strom/netzteile...warz?c=393)

Gesamtkosten: ca. 20 € (plus Versandkosten)

Schaltplan:
   

Mein Programm bietet nun die Möglichkeit, die Minuten (0 bis 99) und die Sekunden (0 bis 59) mit Hilfe des Drehencoders einzugeben. Die Klickfunktion des Encoders wird benutzt, um zwischen der Eingabe der Minuten und der Sekunden hin- und herzuschalten.
Mit dem Taster (S1 im Schaltplan) kann man den Countdown starten/stoppen.
Das Relaismodul ist dazu da, dass man damit ein Gerät (z.B. eine Lampe) für diese Zeit einschalten kann und auf dem LCD wird die Restzeit (Minuten/Sekunden) fortlaufend angezeigt.

Das Programm befindet sich im ZIP-Archiv (Anhang).



Angehängte Dateien
.zip   I2C_Countdown.zip (Größe: 2,05 KB / Downloads: 1)
Drucke diesen Beitrag

Information Wemos D1 mini mit WPS-Pushbutton
Geschrieben von: Gorathan - 15.01.2020, 15:15 - Forum: Nützliche Funktionen - Keine Antworten

Um einen "Wemos D1 mini" (oder einen anderen ESP8266) mit dem WLAN zu verbinden, muss man nicht unbedingt SSID und PSK im Programm mitgeben.
Das würde den Betrieb ja auch auf das eine WLAN beschränken.
Es gibt auch die Möglichkeit, einen Taster (einfach von D3 bzw. GPIO 0 nach GND) als WPS-Pushbutton zu benutzen:
   

Die Funktion "WiFi.beginWPSConfig()" in der "ESP8266WiFi.h"-Library übernimmt dann den Datenaustausch mit dem Router.

Ich habe ein Programm geschrieben, das folgendes ermöglicht:
1. Man startet die WPS-Pushbutton-Methode auf dem WLAN-Router.
2. Man hält die WPS-Taste am Wemos min. 2 Sekuden gedrückt, bis die WLAN-LED schnell blinkt.
3. Dann lässt man die Taste los und wartet etwas (maximal dauert das 2 Minuten).
4. Der Wemos verbindet sich mit dem WLAN.
Wenn die Verbindung erfolgreich war, dann leuchtet die WLAN-LED nun dauerhaft. Wenn nicht, dann blitzt die LED einmal pro Sekunde kurz auf und man muss die Prozedur wiederholen.

Bei erfolgreicher WLAN-Verbindung holt sich das Programm dann das aktuelle Datum/Uhrzeit von einem NTP-Server aus dem Internet.
Außerdem habe ich noch die Möglichkeit eines "OverTheAir"-Updates (OTA) eingebaut. So kann man weitere Firmware-Updates über das WLAN durchführen.

Das Programm befindet sich im ZIP-Archiv (Anhang).



Angehängte Dateien
.zip   Wemos_WPS_Pushbutton.zip (Größe: 2,6 KB / Downloads: 0)
Drucke diesen Beitrag

Information LED-Lauflicht
Geschrieben von: Gorathan - 30.05.2019, 11:39 - Forum: Projekte - Antworten (1)

Hier ist mal eine kleine Lauflicht-Schaltung.
Es werden 8 Low-Current-LEDs (2 mA pro LED) sowie 8 Widerstände mit 1.5 kOhm verwendet.
Als Mikroprozessor kommt ein Arduino Nano (oder Clone) zum Einsatz.

Hier mal der Fritzing-Schaltplan:
   

Das Programm für den Nano (siehe Anhang) bietet 10 verschiedene Lauflicht-Programme, die man über eine Eingabe auf der seriellen Schnittstelle ändern kann.
Außerdem kann man die Laufrichtung (Links <-> Rechts) ändern.
Das Ganze läuft blockierungsfrei (ohne Delays) und (wer will) kann die Programme noch anpassen (Standard: bis zu 30 Schritte je Programm).
Man kann natürlich auch noch die maximale Anzahl der Schritte erhöhen. So lange, wie der Speicher des Nano noch ausreicht...



Angehängte Dateien
.zip   LED_Lauflicht.zip (Größe: 1,58 KB / Downloads: 1)
Drucke diesen Beitrag

Information DS18B20-Tester
Geschrieben von: Gorathan - 09.05.2019, 10:58 - Forum: Projekte - Keine Antworten

Hier ist ein Programm zum testen von DS18B20-Temperatur-Sensoren.
Die Ausgabe erfolgt über den seriellen Port und über ein I2C-LCD (optional).
Die DS18B20-Class habe ich selbst geschrieben, weil ich möglichst viel Speicher sparen wollte. Diese Klasse kann man ganz gut in eigene Projekte einbauen.
Wie gesagt, sie ist klein und lässt sich einfach abfragen. Die Temperatur wird asynchron eingelesen, wodurch man währenddessen andere Funktionen ausführen kann.
Das eigentliche einlesen geschieht dann innerhalb von 17-18 ms. Die übliche Konvertierungszeit kann man anderweitig nutzen.
Ich habe das Programm ausführlich kommentiert, sodass die Funktionsweise der Klasse hoffentlich verständlich wird.

Hier mal ein "Fritzing-Schaltplan":
   

Das Programm und die Klassen-Dateien (.cpp und .h) befinden sich im ZIP-Archiv (Anhang).



Angehängte Dateien
.zip   DS18B20-Tester.zip (Größe: 189,7 KB / Downloads: 1)
Drucke diesen Beitrag

Information Backofen-Thermometer
Geschrieben von: Gorathan - 05.05.2019, 18:42 - Forum: Projekte - Keine Antworten

Ich habe gerade mein neuestes Projekt fertiggestellt. Es handelt sich dabei um ein Backofen-Thermometer. Ich möchte es hier mal vorstellen.
Dabei habe ich folgendes eingesetzt:
- einen Arduino Nano (ok, einen China-Clone)
- eine RTC (DS3231)
- ein 16x2 LCD mit I2C-Backpack
- ein MAX6675 mit K-Thermoelement (0...800 Grad C.)
- ein Battery Shield für einen 18650 Li-Ionen-Akku (inkl. Lade-/Entladeschaltung und 5V-Ausgang)
- einen Dreh-Enkoder mit Taster (beim runterdrücken)
- einen aktiven Buzzer (so einen kleinen Piepser)
- und einen Schalter (zum ein-/ausschalten)
Zusammengebaut sieht es so aus:
   

Schaltplan:
   

Zitat: schrieb:Der Sketch verwendet 11058 Bytes (35%) des Programmspeicherplatzes. Globale Variablen verwenden 400 Bytes (19%) des dynamischen Speichers.
Speichermäßig ist da also noch Luft. Es fehlt ja noch die Möglichkeit die Uhrzeit der DS3231 zu stellen. Das werde ich noch einbauen.
Den Sketch findet ihr im ZIP-Archiv (Anhang), falls es jemanden interessiert.



Angehängte Dateien
.zip   Backofen_Thermometer.zip (Größe: 4,71 KB / Downloads: 0)
Drucke diesen Beitrag

Information Taster entprellen
Geschrieben von: Gorathan - 26.04.2019, 18:08 - Forum: Nützliche Funktionen - Keine Antworten

Da ich in meinen Projekten oftmals einen oder mehrere Taster verwende und ich zum entprellen nicht gleich eine "riesige" Library einbinden will, habe ich mal eine kleine PushButton-Klasse geschrieben. Die verbraucht nur wenig Speicher und hat doch alles, was ich so brauche (inkl. konfigurierbarer Tastenwiederholung).
Diese Klasse verwendet keine Interrupts!
Der Tastenzustand wird jedes Mal bei "Btn.pressed()" ausgelesen, was bedeutet, dass die Methode jedes Mal in der Loop-Funktion aufgerufen werden muss.
Und die Loop-Funktion darf nicht blockierend programmiert sein (was sich sowieso von selbst verstehen sollte). Delays unbedingt vermeiden!



Show ContentPushButton.h:

Show ContentPushButton.cpp:

Im Anhang befindet sich noch ein Beispiel-Sketch für einen Arduino-Nano.



Angehängte Dateien
.zip   My_PushButton_Class.zip (Größe: 2,33 KB / Downloads: 0)
Drucke diesen Beitrag

Information Anfang der Jahreszeiten berechnen
Geschrieben von: Gorathan - 22.04.2019, 17:39 - Forum: Nützliche Funktionen - Keine Antworten

Um den Anfang der Jahreszeiten genau berechnen zu können, muss man schon einen 32-Bit-Mikroprozessor nehmen. Also einen ESP8266 zum Beispiel.
Ein 8-Bit ATmega (z.B. Arduino UNO oder Nano) würde ein "falsches" Ergebnis liefern. Die Ungenauigkeit liegt dort bei bis zu 12 Stunden.

Mit einem ESP8266 funktioniert das Programm aber recht genau (Abweichung liegt bei +-1 Minute).
Ich habe das Programm auf Mitteleuropäische Zeit konfiguriert. Die Sommerzeit wird automatisch addiert. Es wird keine zusätzliche Bibliothek benötigt.
Vielleicht könnt ihr so ein Programm ja gebrauchen...



Angehängte Dateien
.zip   CalcSeason.zip (Größe: 2,92 KB / Downloads: 1)
Drucke diesen Beitrag