Servus.
Ich habe eine 10x11 Led Matrix gebaut, die über vier Schieberegister und
zwei TransistorArrays angesteuert wird.
Diese Matrix soll später (hfftl. bis zum 24.12.15) ein Qlocktwo Nachbau
werden.
Mein Programm ist nun soweit, dass ich die Pins der Matrix ansteuern
kann
Und für die erste Basic-Version einen Arduino internen Timer habe, der
per Minuten und Stunden Taster gesettet werden kann.
Nun wäre die Frage:
Wie kann ich den Code für die Ausgabe der Zeit m.H. der Matrix am
schnellsten und einfachsten in der Arduino IDE verwirklichen?
Ich hoffe mir kann dabei jemand helfen
Vllt sogar noch heute Abend.
(Soll ein Weihnachtsgeschenk werden und habe über der Woche nicht so
viel Zeit daran weiter zu arbeiten)
Erste Gedanken waren drei Switchcases laufen zu lassen, eines für die
Stunden, das zweite für die Minuten, also "fünf nach", "zehn nach" usw.
und das dritte, für die vier Led's in den Ecken, die die genaueren
Minuten anzeigen, also Text: "fünf nach" und 2 EckLeds ergeben
praktisch: "7 nach"
Ich bin zur Zeit ratlos
Ich dachte noch daran vllt BitMaps zu verwenden, und da einfach die
einzelnen Leds anzusteuern
Ich werde hier mal meinen bisherigen Code anhängen, vllt kann ja jmd was
damit anfangen und mir sogar helfen.
Vielen Dank schonmal im Voraus :D
Code:
#include <TimerOne.h>
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
volatile int Sekunde = 0;
volatile int Minute = 0;
volatile int Stunde = 0;
int Taster1 = 8;
int Taster2 = 9;
int Tasterstatus1;
int Tasterstatus2;
int iState1 = 0;
int iState2 = 0;
int iState3 = 0;
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
Timer1.initialize(1000000); // set a timer of length 100000
microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5
cycles of on-and-off, per second)
Timer1.attachInterrupt( timerIsr ); // attach the service routine
here
pinMode(Taster1, INPUT);
pinMode(Taster2, INPUT);
}
void loop()
{
switch (iState1) //Switchcase Minuten
{
}
switch (iState2) //Switchcase Stunden
{
}
switch (iState3) //1, 2, 3, 4, 6, 7, 8, 9,
{
}
}
//Übersetzt Logik auf Hardware
void updateShiftRegister( byte spalte, uint16_t leds)
{
digitalWrite(latchPin, LOW);
byte spalte_bit = 0;
if (spalte < 6) {
spalte_bit = 1 << spalte +3;
}
shiftOut(dataPin, clockPin, LSBFIRST, spalte_bit);
digitalWrite(latchPin, LOW);
spalte_bit = 0;
if (spalte >= 5) {
spalte_bit = 1 << spalte -3;
}
shiftOut(dataPin, clockPin, LSBFIRST, spalte_bit);
shiftOut(dataPin, clockPin, LSBFIRST, leds << 3);
shiftOut(dataPin, clockPin, LSBFIRST, leds >> 2);
delay (100);
digitalWrite(latchPin, HIGH);
}
void timerIsr()
{
if ( Sekunde < 59) {
Sekunde ++;
}
else {
Sekunde = 0;
if (Minute < 59) {
Minute ++;
}
else {
Minute = 0;
if (Stunde < 11) {
Stunde ++;
}
else {
Stunde = 0;
}
}
}
Tasterstatus1 = digitalRead(Taster1);
if (Minute < 59) {
if (Tasterstatus1 == HIGH) {
Minute ++;
delay(500);
}
}
else {
Minute = 0;
}
Tasterstatus2 = digitalRead(Taster2);
if (Stunde < 11) {
if (Tasterstatus2 == HIGH) {
Stunde ++;
delay(500);
}
}
else {
Stunde = 0;
}
}
Und ich bin ratlos, was du genau willst. Du solltest das besser erklären, evtl. mit einem Bild. Aber den Termin, den du dir da setzt, finde ich sehr gewagt.
https://backes-markus.de/blog/2014/02/diy-rgb-strip-wordclock/ ging schneller Beitrag "Re: Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?" https://www.mikrocontroller.net/attachment/266419/bei_herbert.jpg arduino atmega328p WS2812B Stripes RTC DS3231 TSOP31236 http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.VmyYg16xki8
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.