Archive for the ‘Programmierung’ Category.

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

Ü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

Bücher zu Arduino & Processing

Die folgenden Buchtitel zum Thema Arduino und Processing habe ich gefunden:

  • Getting Started with Arduino von Massimo Banzi
  • Making Things Talk: Practical Methods for Connecting Physical Objects von Tom Igoe
  • Programming Interactivity: Unlock the Power of Arduino, Processing, and OpenFrameworks von Joshua Noble (erscheint August 2009)
  • Arduino- Physical Computing für Bastler, Designer und Geeks von Manuel Odendahl, Julian Finn, und Alex Wenger (erscheint August 2009)
  • Processing: A Programming Handbook for Visual Designers and Artists von Casey Reas und Ben Fry
  • Pixels, Patterns, and Processing: A Beginner’s Guide to Programming Images, Animation, and Interaction (Morgan Kaufmann Series in Computer Graphics) von Daniel Shiffman
  • Algorithms for Visual Design: Using the Processing Language von Kostas Terzidis
  • Processing: Creative Coding and Computational Art von Ira A. Greenberg

Das erste Buch hab ich selbst, von den anderen sind sicher die beiden Neuerscheinungen Pflichtkäufe.

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 Intel Atom SGI- Teil 1

Vor geraumer Zeit hab ich bei Ebay günstig eine alte SGI Indy erstehen können, 1993 eine echte Leistungsmaschine für die 2D/3D-Bearbeitung, 15 Jahre später bietet selbst mein Gameboy mehr Rechenleistung.

Da das Gehäuse einfach nur cool ist und viel zu schade zum Wegwerfen, stellte sich nun die Frage, was tun. Als IT-affiner Computerfreak war schnell klar: Umbauen! Rein soll ein Mini-ITX Board (Zotac IONITX-A, schon bestellt) der dann vielleicht als Multimedia-Maschine oder Surf-PC dienen wird, die Rechenleistung reicht garantiert auch für eine kleine Instanz von SQL Server oder Apache.

Schritt 1 ist natürlich das Entfernen der alten SGI-Komponenten, im zweiten Schritt wird dann der Einbau des Boards geplant. Die Button-Leiste, die sich an der Frontseite des Netzteils befand, werde ich vermutlich benutzen, um das Atom Board zu schalten, in einer ruhigen Minute muss ich mir mal die Verschaltung ansehen.

[nggallery id=1]

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 in der c’t

In der aktuellen c’t 16/2009 ist ein umfangreicher Artikel zur Arduino Programmierung. Außerdem enthält die aktuelle c’t extra „Programmieren“ einen Artikel zur Programmierung in Processing, der dem Arduino Projekt zugrundeliegenden Programmiersprache.

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 – Einfache Ansteuerung von Full-RGB LED Matrizen

Neu bei Watterott Elektronik ist das Rainbowduino Board, das direkt eine 8×8 Matrix von Full RGB LEDs ansteuern kann. Was man damit machen kann, sieht man beispielsweise in folgendem Video:

www.vimeo.com/5195768

Ich habe so’n Ding samt LED-Matrix mal bestellt, mal sehen, was sich damit anstellen lässt.

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 Teil 3 – Mehrere LEDs anschließen

Es ist Zeit, dem Arduino den Umgang mit mehr als einer LED beizubringen.

Die Schaltung ist im Bild recht gut erkennbar, ich benutze die Pins 11 bis 13 um die LEDs anzusteuern. Vor die rote LED habe ich den 220 Ohm Widerstand gesetzt, vor die gelbe und grüne jeweils einen 150 Ohm Widerstand. Die Verkabelung auf dem Breadboard war etwas fummelig, bei nächstbester Gelegenheit werde ich eine entsprechende Skizze anfertigen.

Das Programm ist einfach eine Abwandlung aus dem ersten Artikel: Ich lege defines für die Ports 11 bis 13 an, setze die Pin Modi auf OUTPUT und lasse die einzelnen LEDs abwechselnd blinken.

arduino wrote:
#define LEDr 13
#define LEDg 12
#define LEDy 11
 
 
void setup()
{
  pinMode(LEDr, OUTPUT);
  pinMode(LEDg, OUTPUT);
  pinMode(LEDy, OUTPUT);
 
}
 
void loop()
{
  digitalWrite(LEDr,HIGH);
  delay(1000);
  digitalWrite(LEDr,LOW);
  delay(1000);
  digitalWrite(LEDg,HIGH);
  delay(1000);
  digitalWrite(LEDg,LOW);
  delay(1000);
  digitalWrite(LEDy,HIGH);
  delay(1000);
  digitalWrite(LEDy,LOW);
  delay(1000);
}

Arduino mit drei LEDs

Fritzing File

Fritzing Skizze:

Schaltbild, erstellt mit Fritzing

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

Homebrew CPU – 18 Monate, 1000 Dollar und 1253 Drähte

Auf Chip und wired.com war eben ein interessante Artikel über eine selbstgebaute 8-Bit CPU:

Chip Bildergalerie

Wired.com

Soweit will ich mit meiner Arduino-Bastelei nicht kommen, cool isses trotzdem.

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