<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>davidnin1 [ at ] gmail.com</description><title>dotmatrixdesign: Twitter LED Scroller Build Log</title><generator>Tumblr (3.0; @dotmatrixdesign)</generator><link>http://dotmatrixdesign.tumblr.com/</link><item><title>Here’s 4 seconds of it in action. It should be longer but...</title><description>&lt;object width="400" height="336"&gt;&lt;param name="movie" value="http://www.youtube.com/v/W_A4ADtAUXw&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/W_A4ADtAUXw&amp;rel=0&amp;egm=0&amp;showinfo=0&amp;fs=1" type="application/x-shockwave-flash" width="400" height="336" allowFullScreen="true" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Here’s 4 seconds of it in action. It should be longer but youtube doesn’t like it for some reason. You can see a few letters of a message. &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787714</link><guid>http://dotmatrixdesign.tumblr.com/post/20787714</guid><pubDate>Tue, 04 Dec 2007 03:14:08 -0500</pubDate></item><item><title>Et, voila!</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/2086098376/" title="P1030902.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2189/2086098376_cc348c6214.jpg" width="500" height="375" alt="P1030902.JPG"/&gt;&lt;/a&gt; &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787665</link><guid>http://dotmatrixdesign.tumblr.com/post/20787665</guid><pubDate>Tue, 04 Dec 2007 03:09:23 -0500</pubDate></item><item><title>Then I get this idea that I'm going to cast the whole thing in clear polyster resin</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/2086056402/" title="IMG_1829.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2208/2086056402_e4d0f66d5d.jpg" width="500" height="375" alt="IMG_1829.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://flickr.com/photos/davidnin/sets/72157603372291689/"&gt;Check out the fully detailed set of photos here&lt;/a&gt; &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787656</link><guid>http://dotmatrixdesign.tumblr.com/post/20787656</guid><pubDate>Tue, 04 Dec 2007 03:08:43 -0500</pubDate></item><item><title>Then I write a bit of Arduino code:</title><description>&lt;p&gt;&lt;br/&gt;&lt;br/&gt;//Very initial code borrowed from this example:&lt;br/&gt;//**************************************************************//&lt;br/&gt;//  Name    : shiftOutCode, Hello World                         //&lt;br/&gt;//  Author  : Carlyn Maw,Tom Igoe                               //&lt;br/&gt;//  Date    : 25 Oct, 2006                                      //&lt;br/&gt;//  Version : 1.0                                               //&lt;br/&gt;//  Notes   : Code for using a 74HC595 Shift Register           //&lt;br/&gt;//          : to count from 0 to 255                            //&lt;br/&gt;//****************************************************************&lt;br/&gt;&lt;br/&gt;//Pin connected to ST_CP of 74HC595&lt;br/&gt;int latchPin = 9;&lt;br/&gt;//Pin connected to SH_CP of 74HC595&lt;br/&gt;int clockPin = 8;&lt;br/&gt;////Pin connected to DS of 74HC595&lt;br/&gt;int dataPin = 11;&lt;br/&gt;&lt;br/&gt;int enablePin = 10; //Active Low!&lt;br/&gt;&lt;br/&gt;//int col[5] = {6,5,2,3,4};&lt;br/&gt;int col[5] = {4,3,2,5,6};&lt;br/&gt;&lt;br/&gt;byte row;&lt;br/&gt;&lt;br/&gt;byte pattern[80];&lt;br/&gt;&lt;br/&gt;byte frame[5] =  {B00010000,&lt;br/&gt;                  B00010000,&lt;br/&gt;                  B00010000,&lt;br/&gt;                  B00010000,&lt;br/&gt;                  B00010000,&lt;br/&gt;                 };&lt;br/&gt;&lt;br/&gt;int i;&lt;br/&gt;int cycles = 0;&lt;br/&gt;int framenum = 0;&lt;br/&gt;&lt;br/&gt;int totalframes = 100;&lt;br/&gt;&lt;br/&gt;int newline;&lt;br/&gt;int reading_flag = 0;&lt;br/&gt;int readindex = 0;&lt;br/&gt;unsigned long read_timeout;&lt;br/&gt;unsigned long req_timeout = 0;&lt;br/&gt;int nextcheck = 1000;&lt;br/&gt;&lt;br/&gt;//——States——&lt;br/&gt;int state = 0;&lt;br/&gt;&lt;br/&gt;void setup() {&lt;br/&gt;  //set pins to output because they are addressed in the main loop&lt;br/&gt;  pinMode(latchPin, OUTPUT);&lt;br/&gt;  pinMode(clockPin, OUTPUT);&lt;br/&gt;  pinMode(dataPin, OUTPUT);&lt;br/&gt;  pinMode(enablePin, OUTPUT);&lt;br/&gt;&lt;br/&gt;  for(i = 0; i    pinMode(col[i], OUTPUT);&lt;br/&gt;  }  &lt;br/&gt;  &lt;br/&gt;  &lt;br/&gt;    Serial.begin(9600);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;void loop() {&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;      for (int j = 0; j  &lt;br/&gt;        //Set all the column registers high, except the columnwe want to show&lt;br/&gt;        for(i = 0; i          digitalWrite(col[i], HIGH);&lt;br/&gt;        }  &lt;br/&gt;        digitalWrite(col[j],LOW);&lt;br/&gt;        &lt;br/&gt;        //ground latchPin and hold low for as long as you are transmitting&lt;br/&gt;        digitalWrite(latchPin, LOW);  &lt;br/&gt;        //disable the outputs while we are shifting&lt;br/&gt;        digitalWrite(enablePin, HIGH);&lt;br/&gt;    &lt;br/&gt;        shiftOut(dataPin, clockPin, MSBFIRST, frame[j]);&lt;br/&gt;        //return the latch pin high to signal chip that it &lt;br/&gt;        //no longer needs to listen for information&lt;br/&gt;        digitalWrite(latchPin, HIGH);&lt;br/&gt;        //enable the outputs&lt;br/&gt;        digitalWrite(enablePin, LOW);&lt;br/&gt;        delay(1);&lt;br/&gt;        //digitalWrite(col[j],HIGH);&lt;br/&gt;        &lt;br/&gt;      }//done displaying frame&lt;br/&gt;      &lt;br/&gt;&lt;br/&gt;      if (Serial.available() &gt; 0) {&lt;br/&gt;        newline = Serial.read();&lt;br/&gt;        for (int j = 0; j            frame[j] = frame[j]         }&lt;br/&gt;      &lt;br/&gt;        frame[0] = frame[0] | (newline &amp; 1) == 1;&lt;br/&gt;        frame[1] = frame[1] | (newline &amp; 2) == 2;&lt;br/&gt;        frame[2] = frame[2] | (newline &amp; 4) == 4;&lt;br/&gt;        frame[3] = frame[3] | (newline &amp; 8) == 8;&lt;br/&gt;        frame[4] = frame[4] | (newline &amp; 16) == 16;&lt;br/&gt;      &lt;br/&gt;      } &lt;br/&gt; &lt;br/&gt;} &lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787629</link><guid>http://dotmatrixdesign.tumblr.com/post/20787629</guid><pubDate>Tue, 04 Dec 2007 03:06:01 -0500</pubDate></item><item><title>Then I write a little (okay, a LOT of) Processing code:</title><description>&lt;p&gt;import processing.serial.*;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;class twit { &lt;br/&gt;  String description;&lt;br/&gt;  int[] bytes = new int[len*5];&lt;br/&gt;  int pxlength;&lt;br/&gt;  &lt;br/&gt;  twit () {  &lt;br/&gt;    description = “”;&lt;br/&gt;    pxlength = 0;&lt;br/&gt;  }&lt;br/&gt;&lt;br/&gt;  void update () {&lt;br/&gt;    nextpos = 0;&lt;br/&gt;    for(int c = 0; c       description = description.toLowerCase();&lt;br/&gt;      bytes = addLetter(description.charAt(c), bytes, nextpos+1);&lt;br/&gt;    }&lt;br/&gt;    pxlength = nextpos;&lt;br/&gt;  }&lt;br/&gt;  &lt;br/&gt;  void drawpx (int xref, int yref) {&lt;br/&gt;    for(int x = 0; x        if((bytes[x] &amp; 1) == 1) {point(x+xref, yref+0);}&lt;br/&gt;       if((bytes[x] &amp; 2) == 2) {point(x+xref, yref+1);}&lt;br/&gt;       if((bytes[x] &amp; 4) == 4) {point(x+xref, yref+2);}&lt;br/&gt;       if((bytes[x] &amp; 8) == 8) {point(x+xref, yref+3);}&lt;br/&gt;       if((bytes[x] &amp; 16) == 16) {point(x+xref, yref+4);}&lt;br/&gt;    }&lt;br/&gt;  }&lt;br/&gt;} &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;int bits=5;&lt;br/&gt;int len=200;&lt;br/&gt;&lt;br/&gt;int i = 0, j = 0;&lt;br/&gt;int sqrsize = 5;&lt;br/&gt;int centerx, centery;&lt;br/&gt;float avg;&lt;br/&gt;float bias = .1;&lt;br/&gt;int xpos, ypos;&lt;br/&gt;float h = random(0,255);&lt;br/&gt;int rowint[] = new int[len];&lt;br/&gt;String lines[] = new String[20];&lt;br/&gt;String new_lines[] = new String[20];&lt;br/&gt;twit tweets[] = new twit[20];&lt;br/&gt;int black = 0;&lt;br/&gt;int nextpos = 0;&lt;br/&gt;&lt;br/&gt;int next_tw_refresh = 30*60;&lt;br/&gt;int current_twitter = 0;&lt;br/&gt;int next_line = 0;&lt;br/&gt;int rate = 15;&lt;br/&gt;&lt;br/&gt;Serial myPort;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;void setup() &lt;br/&gt;{&lt;br/&gt;  background(255);&lt;br/&gt;  colorMode(RGB, 255);&lt;br/&gt;  ellipseMode(CORNERS);&lt;br/&gt;  strokeWeight(1);&lt;br/&gt;  noSmooth();&lt;br/&gt;  frameRate(30);&lt;br/&gt;  &lt;br/&gt;  centerx = width/2;&lt;br/&gt;  centery = height/2;&lt;br/&gt;&lt;br/&gt;    &lt;br/&gt;  println(Serial.list());&lt;br/&gt;  myPort = new Serial(this, Serial.list()[0], 9600);&lt;br/&gt;  &lt;br/&gt;  for(i = 0; i     tweets[i] = new twit();&lt;br/&gt;  }&lt;br/&gt;  &lt;br/&gt;  update_twits();&lt;br/&gt; &lt;br/&gt;  size(len*sqrsize, lines.length*sqrsize+1);  // Size should be the first statement  &lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;void draw() &lt;br/&gt;{ &lt;br/&gt;&lt;br/&gt;  background(255);&lt;br/&gt;  &lt;br/&gt;  stroke(255,0,0);&lt;br/&gt;  line(125,0,125,400);&lt;br/&gt;&lt;br/&gt;  stroke(0);&lt;br/&gt;  for(int count = 0; count     tweets[count].drawpx(0,count*(sqrsize+1));&lt;br/&gt;  }&lt;br/&gt; &lt;br/&gt;   if(frameCount &gt; next_tw_refresh) {&lt;br/&gt;     println(“Refreshing messages…”);&lt;br/&gt;     next_tw_refresh = frameCount + 3000; //30 fps x 60 seconds&lt;br/&gt;     print(frameCount);&lt;br/&gt;     update_twits();&lt;br/&gt;   }&lt;br/&gt;   &lt;br/&gt;   if(frameCount &gt; next_line_time) {&lt;br/&gt;      myPort.write(tweets[current_twitter].bytes[nextline]);&lt;br/&gt;      nextline++;&lt;br/&gt;      if(nextline &gt;= tweets[current_twitter].pxlength) {current_twitter++;}&lt;br/&gt;       if(current_twitter &gt;= 20) {current_twitter = 0;}&lt;br/&gt;   }&lt;br/&gt;} &lt;br/&gt;&lt;br/&gt;void update_twits() {&lt;br/&gt;  new_lines = loadStrings(“http://linuxbox.dotmatrixdesign.net/~david/twit.php”);&lt;br/&gt;  if(new_lines[0] != lines[0]) {&lt;br/&gt;    lines = new_lines;&lt;br/&gt;    current_twitter = 0; &lt;br/&gt;    for (int i=0; i       tweets[i].description = lines[i];&lt;br/&gt;      tweets[i].update();&lt;br/&gt;    }&lt;br/&gt;    println(“new Twitters downloaded”);&lt;br/&gt;  } &lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;void write_to_arduino (twit tosend) {&lt;br/&gt;     myPort.write(‘w’);&lt;br/&gt;     /*for(i = 0; i         myPort.write(byte(tosend.bytes[i]));&lt;br/&gt;        print(tosend.bytes[i]);&lt;br/&gt;        print(” “);&lt;br/&gt;        delay(15);&lt;br/&gt;     }*/&lt;br/&gt;     myPort.write(byte(tosend.bytes));&lt;br/&gt;     print(byte(tosend.bytes));&lt;br/&gt;    println(“sent”); &lt;br/&gt;        &lt;br/&gt;}//end write&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;int[] addLetter(char letter, int bytes[], int startpos) {&lt;br/&gt;  int col[] = new int[8];&lt;br/&gt;  String colstr[] = new String[8];&lt;br/&gt;  int letter_length;&lt;br/&gt;  String zeros = “000”;&lt;br/&gt;  &lt;br/&gt;  switch (letter) {&lt;br/&gt;    case ‘a’:&lt;br/&gt;      colstr[0] = “11110”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “11110”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘b’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “01010”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘c’:&lt;br/&gt;      colstr[0] = “01110”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “10001”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘d’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “01110”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘e’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “10101”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘f’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “00101”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘g’:&lt;br/&gt;      colstr[0] = “01110”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “10101”;&lt;br/&gt;      colstr[3] = “11101”;&lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;&lt;br/&gt;    case ‘h’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00100”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘i’:&lt;br/&gt;      colstr[0] = “10001”;      &lt;br/&gt;      colstr[1] = “11111”;&lt;br/&gt;      colstr[2] = “10001”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘j’:&lt;br/&gt;      colstr[0] = “11100”;      &lt;br/&gt;      colstr[1] = “10000”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘k’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00100”;&lt;br/&gt;      colstr[2] = “01010”;&lt;br/&gt;      colstr[3] = “10001”;&lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;&lt;br/&gt;    case ‘l’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10000”;&lt;br/&gt;      colstr[2] = “10000”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘m’:&lt;br/&gt;      colstr[0] = “11110”;      &lt;br/&gt;      colstr[1] = “00001”;&lt;br/&gt;      colstr[2] = “11110”;&lt;br/&gt;      colstr[3] = “00001”;&lt;br/&gt;      colstr[4] = “11110”;&lt;br/&gt;      letter_length = 5;&lt;br/&gt;      break;&lt;br/&gt;    case ‘n’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00010”;&lt;br/&gt;      colstr[2] = “00100”;&lt;br/&gt;      colstr[3] = “11111”;&lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;&lt;br/&gt;    case ‘o’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘p’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “00111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘q’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      colstr[3] = “01000”;     &lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;&lt;br/&gt;    case ‘r’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “11010”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘s’:&lt;br/&gt;      colstr[0] = “10111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “11101”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘t’:&lt;br/&gt;      colstr[0] = “00001”;      &lt;br/&gt;      colstr[1] = “11111”;&lt;br/&gt;      colstr[2] = “00001”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘u’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10000”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘v’:&lt;br/&gt;      colstr[0] = “00111”;      &lt;br/&gt;      colstr[1] = “11000”;&lt;br/&gt;      colstr[2] = “00111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘w’:&lt;br/&gt;      colstr[0] = “01111”;      &lt;br/&gt;      colstr[1] = “10000”;&lt;br/&gt;      colstr[2] = “01111”;&lt;br/&gt;      colstr[3] = “10000”;&lt;br/&gt;      colstr[4] = “01111”;&lt;br/&gt;      letter_length = 5;&lt;br/&gt;      break;&lt;br/&gt;    case ‘x’:&lt;br/&gt;      colstr[0] = “11011”;      &lt;br/&gt;      colstr[1] = “00100”;&lt;br/&gt;      colstr[2] = “11011”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘y’:&lt;br/&gt;      colstr[0] = “00111”;      &lt;br/&gt;      colstr[1] = “11100”;&lt;br/&gt;      colstr[2] = “00111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;    case ‘z’:&lt;br/&gt;      colstr[0] = “11001”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “10011”;&lt;br/&gt;      colstr[3] = “10001”;&lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;&lt;br/&gt; &lt;br/&gt; &lt;br/&gt;      case ‘0’:&lt;br/&gt;      colstr[0] = “01110”;      &lt;br/&gt;      colstr[1] = “10001”;&lt;br/&gt;      colstr[2] = “01110”;            &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘1’:&lt;br/&gt;      colstr[0] = “00010”;      &lt;br/&gt;      colstr[1] = “11111”;&lt;br/&gt;      letter_length = 2;&lt;br/&gt;      break;&lt;br/&gt;     case ‘2’:&lt;br/&gt;      colstr[0] = “11010”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “10010”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘3’:&lt;br/&gt;      colstr[0] = “10101”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘4’:&lt;br/&gt;      colstr[0] = “00111”;      &lt;br/&gt;      colstr[1] = “00100”;&lt;br/&gt;      colstr[2] = “11111”;            &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘5’:&lt;br/&gt;      colstr[0] = “10111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “01001”;            &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘6’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “11101”;            &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘7’:&lt;br/&gt;      colstr[0] = “11001”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “00011”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘8’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10101”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;     case ‘9’:&lt;br/&gt;      colstr[0] = “00111”;      &lt;br/&gt;      colstr[1] = “00101”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt; &lt;br/&gt; &lt;br/&gt;    case ’ ‘:&lt;br/&gt;      colstr[0] = “00000”;      &lt;br/&gt;      colstr[1] = “00000”;&lt;br/&gt;      letter_length = 2;&lt;br/&gt;      break;&lt;br/&gt;    case ‘!’:&lt;br/&gt;      colstr[0] = “10111”;      &lt;br/&gt;      letter_length = 1;&lt;br/&gt;      break;&lt;br/&gt;    case ‘.’:&lt;br/&gt;    case ‘,’:&lt;br/&gt;      colstr[0] = “10000”;      &lt;br/&gt;      letter_length = 1;&lt;br/&gt;      break;&lt;br/&gt;    case ‘:’:&lt;br/&gt;      colstr[0] = “01010”;      &lt;br/&gt;      letter_length = 1;&lt;br/&gt;      break;&lt;br/&gt;    case ‘/’:&lt;br/&gt;      colstr[0] = “11000”;      &lt;br/&gt;      colstr[1] = “00100”;      &lt;br/&gt;      colstr[2] = “00011”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;      &lt;br/&gt;    case ‘\’:&lt;br/&gt;      colstr[0] = “00011”;      &lt;br/&gt;      colstr[1] = “00100”;      &lt;br/&gt;      colstr[2] = “11000”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;      &lt;br/&gt;    case ‘+’:&lt;br/&gt;      colstr[0] = “00100”;      &lt;br/&gt;      colstr[1] = “01110”;      &lt;br/&gt;      colstr[2] = “00100”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;      &lt;br/&gt;    case ‘-‘:&lt;br/&gt;      colstr[0] = “00100”;      &lt;br/&gt;      colstr[1] = “00100”;      &lt;br/&gt;      colstr[2] = “00100”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;      &lt;br/&gt;    case ‘@’:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “10001”;      &lt;br/&gt;      colstr[2] = “11101”;      &lt;br/&gt;      colstr[3] = “11101”;      &lt;br/&gt;      letter_length = 4;&lt;br/&gt;      break;      &lt;br/&gt;    case ‘?’:&lt;br/&gt;      colstr[0] = “00001”;      &lt;br/&gt;      colstr[1] = “10101”;      &lt;br/&gt;      colstr[2] = “00111”;           &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;  &lt;br/&gt;    case ‘'’:&lt;br/&gt;      colstr[0] = “00011”;      &lt;br/&gt;      letter_length = 1;&lt;br/&gt;      break; &lt;br/&gt;   case ‘*’:&lt;br/&gt;      colstr[0] = “00010”;      &lt;br/&gt;      colstr[1] = “00111”;      &lt;br/&gt;      colstr[2] = “00010”;      &lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;   &lt;br/&gt;   case ‘(‘:&lt;br/&gt;      colstr[0] = “01110”;      &lt;br/&gt;      colstr[1] = “10001”;      &lt;br/&gt;      letter_length = 2;&lt;br/&gt;      break; &lt;br/&gt;   case ‘)’:&lt;br/&gt;      colstr[0] = “10001”;      &lt;br/&gt;      colstr[1] = “01110”;      &lt;br/&gt;      letter_length = 2;&lt;br/&gt;      break;       &lt;br/&gt;      &lt;br/&gt;    default:&lt;br/&gt;      colstr[0] = “11111”;      &lt;br/&gt;      colstr[1] = “11111”;&lt;br/&gt;      colstr[2] = “11111”;&lt;br/&gt;      letter_length = 3;&lt;br/&gt;      break;&lt;br/&gt;  }&lt;br/&gt;  &lt;br/&gt;  for(int ch = 0; ch     colstr[ch] = zeros.concat(colstr[ch]);&lt;br/&gt;    bytes[startpos+ch] = unbinary(colstr[ch]);&lt;br/&gt;  }&lt;br/&gt;  &lt;br/&gt;  nextpos = startpos + letter_length;&lt;br/&gt;  &lt;br/&gt;  return(bytes);&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787612</link><guid>http://dotmatrixdesign.tumblr.com/post/20787612</guid><pubDate>Tue, 04 Dec 2007 03:04:13 -0500</pubDate></item><item><title>Thanks to the Twitter API</title><description>&lt;a href="http://groups.google.com/group/twitter-development-talk/web/api-documentation"&gt;Thanks to the Twitter API&lt;/a&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787583</link><guid>http://dotmatrixdesign.tumblr.com/post/20787583</guid><pubDate>Tue, 04 Dec 2007 03:03:16 -0500</pubDate></item><item><title>So I write a little PHP code</title><description>&lt;p&gt;&lt;br/&gt;$ch = curl_init();&lt;br/&gt;&lt;br/&gt;// set URL and other appropriate options&lt;br/&gt;$test_str = “http://twitter.com/statuses/friends_timeline/davidnin.xml”;&lt;br/&gt;curl_setopt($ch, CURLOPT_URL, $test_str);&lt;br/&gt;curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);&lt;br/&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&lt;br/&gt;curl_setopt($ch, CURLOPT_HEADER, false);&lt;br/&gt;&lt;br/&gt;// grab URL and pass it a string&lt;br/&gt;$str = curl_exec($ch);&lt;br/&gt;&lt;br/&gt;// close cURL resource, and free up system resources&lt;br/&gt;curl_close($ch);&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;if (!$myxml=simplexml_load_string($str)) {&lt;br/&gt;    echo ‘Error reading the XML file’;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;foreach($myxml as $status){&lt;br/&gt;&lt;br/&gt;    echo $status-&gt;{‘user’}-&gt;{‘screen_name’} . “: ” . $status-&gt;{‘text’} . “\n”;&lt;br/&gt;&lt;br/&gt;} //end for each status&lt;br/&gt;&lt;br/&gt;?&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787572</link><guid>http://dotmatrixdesign.tumblr.com/post/20787572</guid><pubDate>Tue, 04 Dec 2007 03:02:24 -0500</pubDate></item><item><title>More time passes, and I read this incredibly inspiring book</title><description>&lt;a href="http://www.amazon.com/Making-Things-Talk-Practical-Connecting/dp/0596510519"&gt;More time passes, and I read this incredibly inspiring book&lt;/a&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787536</link><guid>http://dotmatrixdesign.tumblr.com/post/20787536</guid><pubDate>Tue, 04 Dec 2007 02:59:52 -0500</pubDate></item><item><title>And it actually works!</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/1524290977/" title="P1030248.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2301/1524290977_b1f4e42d1d.jpg" width="500" height="375" alt="P1030248.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; …with a couple of slight tweaks of course. (note the tiny green and yellow wires) &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787493</link><guid>http://dotmatrixdesign.tumblr.com/post/20787493</guid><pubDate>Tue, 04 Dec 2007 02:57:02 -0500</pubDate></item><item><title>3 weeks pass. then magically, from the far east...</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/1524288647/" title="P1030237.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2257/1524288647_de812fe4dd.jpg" width="500" height="375" alt="P1030237.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/1524289749/" title="P1030243.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2331/1524289749_a50c547ddb.jpg" width="500" height="375" alt="P1030243.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787478</link><guid>http://dotmatrixdesign.tumblr.com/post/20787478</guid><pubDate>Tue, 04 Dec 2007 02:56:03 -0500</pubDate></item><item><title>Another shot from their confirmation </title><description>&lt;img src="http://21.media.tumblr.com/WZUSQEAmP2jqo5trwtYXIXlB_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Another shot from their confirmation &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787432</link><guid>http://dotmatrixdesign.tumblr.com/post/20787432</guid><pubDate>Tue, 04 Dec 2007 02:53:39 -0500</pubDate></item><item><title>You send them your board designs, they send you back a cool...</title><description>&lt;img src="http://23.media.tumblr.com/WZUSQEAmP2jqnoaqElFQYULi_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;You send them your board designs, they send you back a cool acknowledgement generated by their DRC bot. &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787423</link><guid>http://dotmatrixdesign.tumblr.com/post/20787423</guid><pubDate>Tue, 04 Dec 2007 02:53:16 -0500</pubDate></item><item><title>I had this PCB built by a great SparkFun.com service: batchpcb.com</title><description>&lt;a href="http://www.batchpcb.com/"&gt;I had this PCB built by a great SparkFun.com service: batchpcb.com&lt;/a&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787390</link><guid>http://dotmatrixdesign.tumblr.com/post/20787390</guid><pubDate>Tue, 04 Dec 2007 02:52:00 -0500</pubDate></item><item><title>Here's a link to a zip file with my Eagle schematics and board design</title><description>&lt;a href="http://dotmatrixdesign.net/electronics/LEDMatrixArduinoShield-Eagle.zip"&gt;Here's a link to a zip file with my Eagle schematics and board design&lt;/a&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787338</link><guid>http://dotmatrixdesign.tumblr.com/post/20787338</guid><pubDate>Tue, 04 Dec 2007 02:49:01 -0500</pubDate></item><item><title>Behold! After some newly learned tricks, and some fun...</title><description>&lt;img src="http://18.media.tumblr.com/WZUSQEAmP2jqef9opO71EFcF_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Behold! After some newly learned tricks, and some fun auto-routing by Eagle, we have a board design. I modified this one with the expectation of using chemicals to etch my own. However… &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787292</link><guid>http://dotmatrixdesign.tumblr.com/post/20787292</guid><pubDate>Tue, 04 Dec 2007 02:46:04 -0500</pubDate></item><item><title>And now the board needs to be laid out. </title><description>&lt;img src="http://14.media.tumblr.com/WZUSQEAmP2jqd2xd05AZukhd_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;And now the board needs to be laid out. &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787285</link><guid>http://dotmatrixdesign.tumblr.com/post/20787285</guid><pubDate>Tue, 04 Dec 2007 02:45:02 -0500</pubDate></item><item><title>A schematic comes together… </title><description>&lt;img src="http://4.media.tumblr.com/WZUSQEAmP2jqchjiG7GQ7iYJ_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;A schematic comes together… &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787278</link><guid>http://dotmatrixdesign.tumblr.com/post/20787278</guid><pubDate>Tue, 04 Dec 2007 02:44:34 -0500</pubDate></item><item><title>EagleCAD, love it.</title><description>&lt;a href="http://www.hobby-elec.org/e_eagle.htm"&gt;EagleCAD, love it.&lt;/a&gt;: &lt;p&gt;I learned everything I needed to know about EagleCad from this website. &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787264</link><guid>http://dotmatrixdesign.tumblr.com/post/20787264</guid><pubDate>Tue, 04 Dec 2007 02:43:40 -0500</pubDate></item><item><title>Some drawings for future reference</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/1524294091/" title="P1030249.JPG by davidnichols, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2035/1524294091_eb30712489.jpg" width="500" height="375" alt="P1030249.JPG"/&gt;&lt;/a&gt; &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20787159</link><guid>http://dotmatrixdesign.tumblr.com/post/20787159</guid><pubDate>Tue, 04 Dec 2007 02:33:02 -0500</pubDate></item><item><title>Saying hello for the first time</title><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/davidnin/1457507862/" title="P1010268.jpg by davidnichols, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1345/1457507862_40951919be.jpg" width="500" height="375" alt="P1010268.jpg"/&gt;&lt;/a&gt; &lt;/p&gt;</description><link>http://dotmatrixdesign.tumblr.com/post/20786999</link><guid>http://dotmatrixdesign.tumblr.com/post/20786999</guid><pubDate>Tue, 04 Dec 2007 02:21:30 -0500</pubDate></item></channel></rss>
