2011-02-19

Ampel V5

Meine Nichte (4) äußerte zu Weihnachten den Wunsch nach einer Ampel. (Wie sie darauf kam ist meiner Schwester und mir ein Rätsel - meine bisherigen Exemplare hat sie meines Wissens nach bisher nicht gesehen.)
Entstanden ist wiederum eine neue modifizierte Variante mit folgenden Features:

  • reduzierter Bauteilaufwand (kein Quarz, kein Spannungsregler)
  • Ein-Taster-Bedienung - Ein/Aus, Tag/Nachtmodus
  • automatische Abschaltung nach ca. 5 min

Und so sieht die Ampel aus:



Code und Schaltplan werde ich bei Gelegenheit noch hier ablegen.

USB4all unter OSX 10.6

USB4all stellt ein USB Interface für die Ansteuerung von Hardware bereit.

Im Download-Paket auf der Seite befindet u.a. sich ein Archiv mit Beispielen zur Ansteuerung von USB4all unter Linux (usb4all-linux-v103.tgz). Um die Beispiele auf OSX zu übersetzen, benötigt man die MacPorts libusb und libusb-compat. Diese installiert man mit:
sudo port install libusb libusb-compat
In den Beispielen muss dann in den Makefiles die Variable LIB um die Pfade zu usb.h und libusb ergänzt werden (-I und -L Parameter):
LIB="-I/opt/local/include -L/opt/local/lib -lusb"

2010-11-02

Cylon Jack-O-Lantern

Als kurzfristiges Halloween Projekt haben wir uns ein Cylon Jack-O-Lantern vorgenommen. Die Idee haben wir von hier und hier. Allerdings haben wir eine andere Hardwarebasis gewählt (Microcontroller).

Die Hardware wurde aus 16 LEDs, einem Microcontroller (PIC 16F876A) sowie Widerstände, Quarz, Kondensatoren  am Samstag Nachmittag zusammengelötet. Als "Gehäuse" dient ein Plastikei einer Riesen-Kinderüberraschung (gut das ich sowas als potentielle Gehäuse aufhebe ;-).
Der einstellbare Widerstand sollte dazu dienen die Geschwindigkeit der Animation einzustellen - dieses Feature fiel aber dann der knappen Zeit zum Opfer.

Weiter ging es dann mit dem Schnitzen des Kürbis. Vorlagen oder Muster für einen Cylon-Kürbis finden sich im Netz genug, sodass wir hier nur nachahmen mußten. Wie wir finden ist uns das fürs erste Mal ganz gut gelungen.

Dann blieb nur noch das Programm für die Ansteuerung zu schreiben. Als Betriebsmodi haben wir implementiert: Wake-Up (Leuchtdioden werden von der Mitte aus aktiviert, wenn alle an sind, schalten sie kurz auf volle Helligkeit), Stand-By (Wandernder Leuchtpunkt mit einer LED) und Scan (Wandernder Leuchtpunkt mit 5 LED).


Der Quellcode ist nicht unser Glanzstück, aber es musste halt schnell gehen - und schließlich zählt das Ergebnis: Der Jack-O-Lantern konnte mit beginnender Dunkelheit in Betrieb genommen werden.

Wer das Projekt nachbauen will: Den Quellcode gibt es hier.

Für das nächste Jahr wollen wir das Projekt ausbauen: Bewegungsmelder, Sound, ... mal sehen was uns sonst noch einfällt.

2010-10-02

Single-Hand Watch - Win7 Gadget

On my wishlist is a single hand watch from BOTTA which not only has only one hand but also has a 24h display - see UNO24.

To check if I able to cope with this sort of watch I make a Windows 7 gadget of such a watch. The picture shows the watch at about 11:30 pm.

The gadget can be downloaded here.
In the source code repository also the svg files are contained, if you want to create your own design.

2010-08-12

Define cucumber environment in .couchapprc

When you set-up a .couchapprc file you can define different databases, hosts ... for different environments (see couchapp doc).
To use these set-up when running cucumber I modify the env.rb mentioned here. It use the test environment defined in .couchapprc for cucumber scenarios.


Example .couchapprc file:

2010-08-01

BrainDump: CouchDB link cheatsheet

Note: "File" and "folder" refer to a couchapp directory structure.

{prefix} = /{db}/_design/{application}
{list_function} = name of file in lists folder (without .js)
{show_function} = name of file in shows folder (without .js)
{view_function} = name of subfolder in views folder

functionality link function Read on
list {prefix}/_list/{list_function}/{view_function} function(head, req) CouchDB book
show {prefix}/_show/{show_function}/{doc_id} function(doc, req) CouchDB book
view {prefix}/_view/{view_function} map: function(doc)
reduce: function(keys, values, rereduce)
intro,
view parameter