amuttsch / multiqlock

Automatically exported from code.google.com/p/multiqlock
0 stars 0 forks source link

plugin-Analog (neu) #8

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Wie angekündigt anbei das plugin für eine Analoge Uhr.
Ja, es ist etwas komisch zuerst mit viel Aufwand eine digitale Uhr zu bauen, 
nur um dann doch die Uhrzeit analog darzustellen.

Interaktion: (nicht getestet)
- Button1 (Minuten++): 
  Sekundenzeiger ein/ausblenden
- Button2 (Stunden++): 
  Minutenzeiger ein/ausblenden

Anpassbar: (in plugin_Analog.h)
- Sekunden, Minuten, Stundenzeiger anzeigen? (in plugin_Analog.cpp/initAnalog())
- Länge der einzelnen Zeiger
- Mitte der Uhr (von wo kommen die Zeiger)

Aufruf: (in multiqlock.pde)
#include "plugin_Analog.h"
registerPlugin(initAnalog, updateAnalog, showAnalog, buttonAnalog, 250);

Technische Beschreibung: 
- siehe Kommentare 

Weitere Überlegungen: 
- writeLineDegree(startX, startY, length, angleDegree)
  Wäre recht einfach möglich - könnte vielleicht auch mal nützlich sein. (siehe toDegree() und updateAnalog())

- Sekunden außen anzeigen in Snake-Art: 

Null:
#+#
###
###

15:
#++
##+
###

30:
#++
##+
#++

usw...

Original issue reported on code.google.com by goebernd...@gmail.com on 4 Jan 2012 at 9:59

Attachments:

GoogleCodeExporter commented 9 years ago

Original comment by asfa...@googlemail.com on 4 Jan 2012 at 10:34

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Sieht gut aus. Wenn du willst kann ich das Plugin noch als Download 
bereitstellen.
Die Buttons klappen auch wie sie sollen.

Kleiner Hinweis:
Das Plugin klappt nicht unter Arduino 1.0

Folgendes musst du in der plugin_Analog.h ändern:
#include "WProgramm.h"

entfernen und 

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

einfügen.

Ein Vorschlag: Die Eckleds anschalten, quasi als Rahmen. Und die Idee mit den 
Sekunden als Art Snake anzuzeigen finde ich auch gut.

Vielen Dank für deine Arbeit.

Original comment by asfa...@googlemail.com on 4 Jan 2012 at 10:45

GoogleCodeExporter commented 9 years ago
Änderungen für Arduino 1.0 und Eckleds eingearbeitet.  

Snake-Sekunden war aufwändiger als zuerst gedacht, aber jetzt funktionierts.
Habs bisher noch nicht produktiv verwendet - könnte mir aber vorstellen, dass 
es auch nett aussehen könnte zwei oder drei "Snake-Kreise" anzeigen zu lassen. 
(h+m, h+m+s)

Wie gehabt Einstellungen in plugin_Analog.h.

Andreas, ich würde mich freuen wenn du es testen könntest und - sollte es 
funktionieren ins multiqlock-projekt aufnehmen würdest. 

lg Bernhard

Aufruf: 

/* 
 * zeichnet Linien nach folgendem Muster: 
 * 
 * @param margin Abstand nach Außen (zb 2)
 * @param currentValue  Aktueller Wert (zb 45)
 * @param maxValue maximal möglicher Wert (zb 60)
 *
 *        >| |< margin=2
 * ########### || 
 * ########### \/ margin=2
 * #####0000## --
 * ########0##
 * ########0##
 * ##0#####0## currentValue=45
 * ##0#####0##    maxValue =60
 * ##0#####0##
 * ##0000000##
 * ###########
 * ###########
 * 
 * 
 */
void writeSnake (int margin, int currentValue, int maxValue);

Original comment by goebernd...@gmail.com on 5 Jan 2012 at 10:23

Attachments:

GoogleCodeExporter commented 9 years ago
Wenn man die Sekunden deaktiviert, dann bleiben die Sekunden einfach stehen. 
Die sollten noch ausgeschaltet werden.
Persönlich finde ich es auch schöner, wenn die Zeiger eine Zeile höher sind, 
also 
#define ANALOG_CENTER_Y (int)(MATRIX_ROWS/2) - 1

Ein weiterer Vorschlag:
Wenn alle Rahmenled's an sind (59. Sek) und es wieder auf 00 umspringt, den 
Vorgang andersrum machen. Also dann dann jede Sekunde eine LED ausgeht.

Ansonsten siehts gut aus, ich werde es gleich mit deinen anderen Anpassungen 
hochladen.

VG Andreas

Original comment by asfa...@googlemail.com on 7 Jan 2012 at 5:23

GoogleCodeExporter commented 9 years ago
ja dachte ich mir auch schon - die LEDS wieder der reihe nach auszuschalten. 
dafür wäre ein Displaybuffer & ToggleLED() super. 

Original comment by goebernd...@gmail.com on 9 Jan 2012 at 8:45

GoogleCodeExporter commented 9 years ago
Ein ToogleLED sollte nicht so schwer zu realisieren sein, als Vorlage könnte 
man SetLED nehmen und diese entsprechend anpassen.
Was meinst du mit Displaybuffer? Was soll dieser machen?

Baust du die Funktionen ein? (Damit wir die Arbeit nicht doppelt machen ;) )

Bei mir steht als nächstes eine Umstrukturierung der DisplayMatrix an, da ein 
Kollege RGB LEDs hat und wir die Firmware für diese Fit machen werden. Da 
könnte ich das auch direkt mitmachen, ich weiß nur nicht wann die Version 
Releasebereit sein wird. Das könnte durchaus noch etwas dauern.

VG Andreas

Original comment by asfa...@googlemail.com on 9 Jan 2012 at 9:37

GoogleCodeExporter commented 9 years ago
RGB-LEDS werden von clockthree verwendet: 
http://code.google.com/p/clockthree/

schau dir das mal an. wirkt sehr umfangreich und ausgereift...

Original comment by goebernd...@gmail.com on 9 Jan 2012 at 9:47

GoogleCodeExporter commented 9 years ago
Vielen Dank für den Tipp, das werden wir uns mal ansehen.

Original comment by asfa...@googlemail.com on 9 Jan 2012 at 9:53

GoogleCodeExporter commented 9 years ago
Anbei neue Version von plugin_Analog.

Changelog: 
v3.0 2012-01-10
 - "Snake-Mode" = zeige wo Zeiger bereits waren statt die Zeiger selbst
  (siehe 21:30 - außen Stunden, innen Minuten - siehe <Multiqlock-plugin_AnalogSnake-21Uhr30.jpg>)
  registerPlugin(initAnalog, updateAnalog, showAnalog, buttonAnalog, 1000);
  registerPlugin(initAnalog, updateAnalogSnake, showAnalogSnake, buttonAnalog, 1000);

  Anzeigemodi (änderbar mit m+/h+ buttons)
   \ Stundenzeiger (0|1|2)
   \ Stundenzeiger (0|1) und Minutenzeiger (3) <Multiqlock-plugin_AnalogSnake-21Uhr30.jpg>
   \ Stundenzeiger (0|1) und Sekundenzeiger (3) 
   \ Stundenzeiger (0|1) und Minutenzeiger (3) und Sekundenzeiger (4) - macht wenig sinn, aber der Vollständigkeit halber

 - Analog_sDisp statt Analog_sHide 
 - toDegree() auskommentiert (nur toRadian wird verwendet, aber vielleicht kann es ja mal jemand brauchen)

BITTE TESTEN!

Original comment by goebernd...@gmail.com on 10 Jan 2012 at 9:51

Attachments:

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Das sieht sehr cool aus, gute Arbeit :)

Ich werde es testen und dann im nächsten Release einbinden.

Original comment by asfa...@googlemail.com on 11 Jan 2012 at 7:02

GoogleCodeExporter commented 9 years ago
So, habs getestet, sieht soweit gut aus.

Was ich nur verwirrend finde sind die Modus, die man per Buttons wechseln kann. 
Da muss man erstmal herausfinden was was nun ist ;)

Ich werde es mit in der nächsten Version hochladen.

Original comment by asfa...@googlemail.com on 11 Jan 2012 at 5:33

GoogleCodeExporter commented 9 years ago
Ich konnte mich nicht entscheiden welcher Modus mir am besten gefällt, also 
wurde es mal so implementiert. 
Es ist durchaus angedacht buttonAnalog durch buttonClock zu ersetzen. 

Anbei die neue Version 4.

changelog:
v4 2012-01-11
 - Buttons getauscht
   # Button1, bzw. Minute++ : Minutenzeiger  ein/ausblenden
   # Button2, bzw. Stunde++ : Sekundenzeiger ein/ausblenden

 - Sekundenzeiger wird jetzt standardmäßig nicht angezeigt 
   Ich finde diesen eher störend als hilfreich. 
   Wer möchte kann diesen mit Button2/h++ wieder einblenden

 - Eckleds zeigen jetzt Tag/Nacht an:
    AM (oberen zwei leuchten) 
    PM (unteren zwei leuchten) 

 - Analog_update entfernt da es Probleme gab wenn man den Modus wechselte und die Sekunden nicht anzeigte. 
   Dann wurde Analog_update nicht gesetzt da sich ja die Uhrzeit nicht ändert. 
   Init***() wird ja leider da nicht mehr aufgerufen - sonst hätte ich es dort hineingeschrieben. 
   Aber ich finde DisplayMatrix sollte die Aufgabe übernehmen (Issue #12)

Original comment by goebernd...@gmail.com on 11 Jan 2012 at 11:39

Attachments:

GoogleCodeExporter commented 9 years ago
Wird in der nächsten Version eingebunden.

Original comment by asfa...@googlemail.com on 20 Jan 2012 at 10:50

GoogleCodeExporter commented 9 years ago
Ich habe ein Problem bei der normalen Analoguhr festgestellt. Jetzt (14:08) 
steht der Minutenzeiger korrekt, der Stundenzeiger ist anscheinend um 180° 
gedreht. Er zeigt also auf ca. 7 Uhr

Original comment by asfa...@googlemail.com on 21 Jan 2012 at 1:12