Hallo zusammen,
ich habe mir ein Arduino Uno zugelegt, um ein bisschen zu basteln.
Und folgende Idee, welche ich umsetzten möchte:
Ich habe ein 4 Zahlen 7 Segmente Display. Dieses Display soll jeden Tag um ein Wert steigen um 24:00 Uhr.
Sodass ich z.B. von morgen 15.11.2018 ausgehe als Tag 0. Am 16.11.2018 soll um 24 Uhr das Dispaly die Zahl 1 anzeigen, am 17.11 die Zahl 2 etc..
Zusätzlich soll ein "Knopf" zum drücken dran sein, um das ganze zu resetten.
Also wenn z.B. am 06.09.2018 der Wert 1 ist und ich den Knopf drücke, soll wieder 0 da stehen und von vorne angefangen werden.
Sinn des Ganzen ist:
ich möchte ein rauchfrei seit ... Schild erstellen und verschenken.
Ich habe mir ein Tutorial auf YT angesehn, wegen der "Bepinnung".
Beim Display bin ich von unten links ausgegangen, 1 2 3 4 5 6 ; dann oben rechts nach links 7,8,9,10,11,12
Arduinopin: Display:
2 11
3 7
4 4
5 2
6 1
7 10
8 5
9 2
10 3
11 8
12 6
Ich habe folgende Komponenten:
Arduino Uno
Segment Display: KW4-12041CLA
RTC: DS3231SN
Verwendete Libs: ADAFRUIT RTC LIB
Mein Problem:
Das ganze läuft nicht so wie ich mir das vorgestellt habe...
folgendes wird mir im serielen Monitor angezeigt:
2018/9/30 (Sunday) 21:7:35
since midnight 1/1/1970 = 1538341655s = 17804d
now + 7d + 30s: 2018/10/8 9:37:41
ich habe jetz hier das :
#include "SevSeg.h"
SevSeg sevseg;
void setup(){
byte numDigits = 4;
byte digitPins[] = {9, 10, 11, 12};
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
sevseg.setNumber(1);
sevseg.refreshDisplay();
}
allerdings wird mir wenn ich in sevseg eine 1 eingebe an digit 1 und 4 eine 1 angezeigt? wieso ist das so?
Das Display allein bekomme ich zum Laufen ... Testzahlen usw. den RTC mit der LIB auch, mir wird dort das hier angezeigt:2018/9/30 (Sunday) 21:7:35
since midnight 1/1/1970 = 1538341655s = 17804d
now + 7d + 30s: 2018/10/8 9:37:41
Wenn ich jetz zb bei folgendem "code" die zahlen unten eingebe
#include "SevSeg.h"
SevSeg sevseg;
void setup(){
byte numDigits = 4;
byte digitPins[] = {9, 10, 11, 12};
byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
}
void loop(){
sevseg.setNumber(1);
sevseg.refreshDisplay();
allerdings wird mir wenn ich in sevseg eine 1 eingebe an digit 1 und 4 eine 1 angezeigt?
Gehe ich so vor das ich im ersten Teil des "Codes" den RTC zum laufen bringe und dauerhaft die Uhrzeit bzw. das Datum abrufe.
Dann sage ich wenn 23.59 bzw. 0.00 Uhr dann sevseg.setNumber = 1 und den Abgleich dann alle 12h? oder wie?
mir fehlt das "denken" dazu ich möchte das gerne verstehen usw.
Das ist der "Code" mit welchem ich geübt habe verschiedene Zahlen auf dem 7Segment Display wiederzugeben, das klappt auch soweit.
Dann habe ich hier das verwendet um den RTC "anzusteuern" (Libary 3231)
Dabei wird mir im Serial Monitor folgendes angezeigt:
2018/10/5 (Friday) 22:56:50
since midnight 1/1/1970 = 1538780210s = 17809d
now + 7d + 30s: 2018/10/13 11:26:56
anschließend habe ich hier das verwendet, da ich dachte ich gleiche etwas ab und sage dann wenn Datum höher als das "start" datum und >23.59 dann Zahl auf Display +1
Hierbei wird mir wenn ich bei SEGSEV.SETNUMBER () eine 1 eingebe an DIGIT 1 und 4 eine 1 angezeigt.
da fängt dann auch mein problem an...
Ich hoffe Ihr könnt mir helfen!
Vielen Dank für Eure Hilfe
Liebe Grüße