Author Archive

Die besten iPhone Applikationen

Chip Online hat eine Fotostrecke zu den iPhone Applikationen, die vom AppAdvice Portal zu den besten Applikationen des ersten iPod Jahres gewählt wurden.

http://www.chip.de/news/iPhone-Die-besten-Apps-der-letzten-12-Monate_37352361.html

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Tipps & Tricks zur Naturfotografie bei SPON

Spiegel Online hat einen interessanten Artikel zum Thema Naturfotografie: http://www.spiegel.de/netzwelt/web/0,1518,638153,00.html:

Das Aufnahmeobjekt mag zwar bekannt sein – aber Naturfotografie ist nicht gleich Naturfotografie. Hier erklären Profis, wie man in freier Wildbahn atemberaubende Bilder macht: mit praktischen Tipps und anhand von konkreten, oft überraschenden Beispielen.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Diablo 3 computergenerierte Level

Golem hat einen neuen Artikel zu Diablo 3: http://www.golem.de/0907/68567.html. Wenn ich dran denke, was ich an Diablo 1 und 2 gesessen hab… 🙂

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Full RGB LEDs ansteuern – Teil 2

Die zweite blaue LED ist angeschlossen, jetzt muss nur noch das Programm angepasst werden:

#define LEDb1 10
#define LEDg 11
#define LEDr 12
#define LEDb2 13
 
void setup()
{
  pinMode(LEDr, OUTPUT);
  pinMode(LEDg, OUTPUT);
  pinMode(LEDb1, OUTPUT);
  pinMode(LEDb2, OUTPUT);
 
}
 
void loop()
{
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDr,LOW);
  delay(1000);
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDg,LOW);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
  delay(1000);
 
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDr,LOW);
  digitalWrite(LEDg,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDr,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDb1,HIGH);
  delay(1000);
  digitalWrite(LEDb2,HIGH);
  delay(1000);
 
  digitalWrite(LEDg,LOW);
  digitalWrite(LEDb1,LOW);
  digitalWrite(LEDb2,LOW);
 }

Was geschieht? Die Pins 10 bis 13 werden auf Output gestellt.

  1. Rot, Grün und Blau werden jeweils an- und wieder ausgeschaltet.
  2. Rot, Grün und Blau werden nacheinander eingeschaltet, dann zusammen ausgeschaltet.
  3. Rot, Blau, Blau wird nacheinander eingeschaltet und wieder ausgeschaltet
  4. Grün, Blau, Blau wird nacheinander eingeschaltet und wieder ausgeschaltet

Eigentlich ganz einfach. 🙂 Als nächstes werde ich mal das Dimmen per PWM ausprobieren.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Full RGB LEDs ansteuern – Teil 1

Full Color RGBs bestehen aus mehreren LEDs in einem Gehäuse. Ein Exemplar, das ich bei Conrad gekauft habe, hat zweimal Blau und je einmal Rot und Grün, dazu zwei GND Pins.

Laut Conrad Katalog liegt I_F bei 20 mA, die Spannung U_F bei 1,7V für Rot, 2,2V für Grün und 3V für Blau. Mit dem LED Vorwiderstandsrechner bekommt man dann die folgenden benötigten Widerstände:

  • 220 Ohm für Rot
  • 150 Ohm für Grün
  • 100 Ohm für Blau

Da es nicht ganz einfach ist, die 6 Pins sauber auf dem Breadboard anzuordnen, sieht die entsprechende Schaltung etwas wild aus (Es sind nicht überall die richtigen Widerständen und die Verbindung zum zweiten Blau-Pin fehlt auch noch).

Schaltung für eine Fullcolor RGB LED

Das Programm entspricht genau dem, was wir in einem früheren Artikel genutzt haben und wird erst für den nächsten Post aktualisiert.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Rainbowduino – Der erste Versuch

Heute hab ich mal den Rainbowduino, den ich bei Watterott Elektronik gekauft hatte, an die Spannungsversorgung angeschlossen. Rainbowduino, das ist ein Arduinoklon, der eine 8×8-Matrix von FULL RGB LEDs ansteuern kann und auch die entsprechende Spannungsversorgung bereitstellt.

Leider verfügt das Board nicht über einen USB-Anschluss, programmieren werde ich es daher über einen USB-Seriell Adapter, Details dazu in einen zukünftigen Post.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Die besten Firefox-Plugins bei chip.de

Chip online hat eine Fotoreihe mit den ihrer Meinung nach 50 besten Firefox-Erweiterungen veröffentlicht, siehe http://www.chip.de/bildergalerie/Top-50-Erweiterungen-fuer-Firefox-3.5-Galerie_37041468.html.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mein Arduino twittert

Dank einem interessanten Beitrag auf der Seite von Mats Vanselow kann jetzt auch mein Arduino twittern. Über das Ethershield und den bereitsgestellten Code war es eine Sache von wenigen Minuten. Code kopieren von der Seite kopieren, Username und Passwort in der Form user:password durch den Base64 Encode der Mac OS Kommandozeile jagen und zum Abschluss auf das Board übertragen. Das war’s.

Als nächstes will ich dann Temperaturen twittern oder den Bewässerungsstand meiner Zimmerpflanzen. Mit einer kleinen Bananenpflanze hab ich schon den perfekten Kandidaten dafür…

Erreichbar ist der Feed unter http://twitter.com/UweArduino.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Über die Ähnlichkeit von Strings

Ein Problem beim Migrieren von Datenbanken ist das Sicherstellen, dass kein Element doppelt vorkommt. Wenn a) verschiedene Datenbank-Systeme beteiligt sind und b) eine Vielzahl von Personen, die die Daten eingeben, verspricht dies, ein interessantes Problem zu werden.

Konkretisieren wir das mal an einem Beispiel: In einer Bibliothek arbeiten Frau A und Herr B. Frau A verwaltet eine Liste von Schallplatten in Excel, Herr B nutzt eine kleine Access Anwendung. Da die beiden Listen auf eine einheitliche Datenbank migriert werden sollen, gilt es jetzt die beiden Listen, die jeweils nur den Namen der Schallplatte als Schlüssel nutzen, abzugleichen. Weder die Liste von Frau A noch die Liste von Herrn B ist vollständig, jede Schallplatte ist jedoch nur einmal vorhanden, rein manuelle Kontrolle scheidet aus da a) zuviele Schallplatten vorhanden sind und b) bei der Kontrolle selbst Fehler gemacht werden können. Ziel ist daher, zusätzlich zur manuellen Kontrolle eine Unterstützung zu suchen, die die wahrscheinlich identischen Einträge hervorhebt.

Mein erster Ansatz war, die beiden Listen zusammen in einem Excel-Sheet zu speichern und jeweils zu speichern, ob der Eintrag aus der Liste von Frau A oder Herrn B stammt. Dann wurde die Liste aufsteigend sortiert, das Ergebnis war, dass von zwei Einträgen, die sich nur am Ende unterscheiden, der kürzere Eintrag vor dem längeren steht.

  • Sinead O’Connor – I Do Not Want What I Haven’t Got
  • Sinead O’Connor – I Do Not Want What I Haven’t Got (Single)

Der nächste Schritt war dann für jede Zelle zu entscheiden, ob der Zellinhalt Teil der darauffolgenden Zelle war. Dazu wurde die Finden() Funktion von Excel genutzt.

  • Sinead O’Connor – I Do Not Want What I Haven’t Got
  • Sinead O’Connor – I Do Not Want What I Haven’t Got (Single)

Einen Großteil der doppelten Einträge kann man auf diese Weise abdecken, doch versagt er bei geringsten Schreibfehlern, wie dem folgenden:

  • Sinead O’Connor – I Do Not Want What I Haven’t Got
  • Sinead OConnor – I Do Not Want What I Haven’t Got (Single)

Diese lassen sich per zeichenweisem Vergleich ermitteln. Sauber wäre eine Lösung die nur die tatsächlichen Längen berücksichtigt, als ersten Wurf habe ich jedoch einfach die Zeichen 1 bis 15 miteinander verglichen (Formel wird nachgeliefert).

Dann zählt man einfach die Anzahl der Zeichen, die unterschiedlich sind, bei geringen Abweichungen ist die Wahrscheinlichkeit hoch, einen identischen Eintrag zu haben. Eine Erweiterung dieses Konzept ist die sogenannte Levenshtein-Distanz, die ich über ein R Skript berechnen lasse.

Der Wert der Levenshtein-Distanz gibt dabei an, wieviele Zeichen man minimal ändern muss, um von String A auf String B zu kommen. Für die beiden Zeichenketten „Hello“ und „Hallo“ ist der Wert daher 1.

Über ein kurzes R-Skript lese ich die Plattennamen ein und mache jeweils einen paarweisen Vergleich, der R-Code für die Levenshtein Distanz entstammt dem R-Wiki http://wiki.r-project.org/rwiki/doku.php?id=tips:data-strings:levenshtein

data<-readLines("c:/music_names.dat")
y<-length(data)
result<-1:y
 
for(i in 2:y){
	result[i]<-levenshtein(data[i],data[i-1],case=FALSE) 
}
write.table(result, "C:/result.dat")

Den result-Vektor können wir dann in das Excel-Sheet einfügen.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Arduino Skizzen mit Fritzing

Wenn man nicht grad ein E-Technik Studium hinter sich hat, tut man sich mit Eagle recht schwer, die Schaltpläne zu Papier oder auf den Bildschirm zu bringen. Eine geniale Lösung dieses Problem bietet Fritzing, ein Projekt der University of Applied Sciences in Potsdam. Mit Fritzing lassen sich die entsprechenden Teile einfach per Drag & Drop positionieren, die Software generiert dann Einkaufslisten, etc.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website