[HH] Seeking help on Programming I2C bus in python on Raspberry Pi

Ming kuo mingtkuo at gmail.com
Thu Nov 15 18:30:35 EST 2012


Greg, Tom, Jon

Thanks, that was it, I did not know about binary.  I assumed they were pin
numbers.  This will keep me busy for a while to get familiar with hex,
decimals and bits..

Awesome guys.

Ming


On Thu, Nov 15, 2012 at 6:17 PM, Greg London <email at greglondon.com> wrote:

> > *and I tried just setting a to various numbers 1,2,3,4,5,6,7,8,9 and
> > the led seem to light up in no understandable pattern, sometimes
> > individually and sometimes multiple LEDs go on.. *
>
> Sounds like you need to learn about binary, decimal, and hexadecimal
> number formats. And be able to convert from one to another.
>
> http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html
>
> The LED's are controlled by an 8 bit register.
> This would hold decimal numbers from 0 to 255.
> which would be 0 to FF hex
> and 0 to 1111_1111 binary.
>
> What you will have to do is think in binary.
> each bit of the binary value will control a single LED.
>
> if you write decimal numbers in sequence like 1, 2, 3, 4, 5,
> then you will get the following binary pattern:
>
> 0000_0001
> 0000_0010
> 0000_0011
> 0000_0100
> 0000_0101
>
> Every bit is wired to an LED, and every bit that is a "1"
> will turn that LED on (or maybe its the zeroes that turn it
> on, depending on how your schematic is wired)
>
> So, you'll need to think in terms of binary all the time to
> figure out which LEDs to turn on.
>
>
>
>
>
> > Thank you Tom, Jon, and Greg,
> >
> > I am grateful for all the help while I go through this challenge.
> >
> > Tom, I have previously responded to Jon and Greg privately trying to
> avoid
> > too many emails to the group.
> >
> > But yes, your tracking of my progress of the project is right, I
> basically
> > have proof of concept with hardware, circuits and now it is just the
> > software programming..
> >
> > Following the code in the previously mentioned example, I am trying to
> > adapt it to working with the Bar LED..
> >
> > I have isolated the critical piece of code is
> >
> >
> >    for x in range(0,8):
> >      a = 1 << x
> >      set_led(a,0)
> >      time.sleep(delay)
> >    set_led(0,0)
> >
> >
> > in code :  set_led(x,y) x is the data and y is the bank.
> >
> > so I am confused on x or data piece of the parameter..
> >
> >
> >
> > in the above code set_led(a,0)
> >
> > *a= 1 << x what does this statement do?*
> >
> > *and I tried just setting a to various numbers 1,2,3,4,5,6,7,8,9 and
> > the led seem to light up in no understandable pattern, sometimes
> > individually and sometimes multiple LEDs go on.. *
> >
> >
> > So basically, once I get to know how to control the leds on the bar
> > graph, then I can start deciphering the code for letters and words
> >
> >
> > Thanks to the group
> >
> >
> > Ming
> >
> >
> >
> > On Thu, Nov 15, 2012 at 2:36 PM, Tom Metro
> > <tmetro+hhacking at gmail.com>wrote:
> >
> >> Ming kuo wrote:
> >> > Hi Guys, I was recently introduced to this group, so here is my first
> >> post.
> >>
> >> Welcome to the group.
> >>
> >>
> >> > I figured out the wiring to get the bar to light up using the same
> >> codes
> >> > as above.
> >>
> >> Sounds like you've got the hard part done. If you've gotten that much to
> >> work, then you've proven the hardware works, and the basic software
> >> works. Now you just need to tweak the behavior.
> >>
> >>
> >> > I am stuck...on the python code to control the I2C.
> >> > This is my immediate challenge to figure out how to program the
> >> > I2C for the LED bar...
> >>
> >> Can you clarify?
> >>
> >> You said above that you succeeded in getting the bar to light up using
> >> the same setup as the article you referenced. That implies you have a
> >> working I2C driver and some Python code using it.
> >>
> >>
> >> > ...I need to program a python code to POV display the messages which
> >> > i can imaging that it get pretty challenging given how to form a
> >> > character with LED while timing the rotation.
> >>
> >> So POV is persistence of vision? You're looking to build something like:
> >> http://www.youtube.com/watch?v=fJBYOU-Y-ZU
> >>
> >> How do you plan to move the display?
> >>
> >> To build on what Jon Evans said in his reply, it sounds like what you
> >> have left to do is less hardware hacking and more basic Python coding.
> >> Looking at the sample code:
> >> http://www.skpang.co.uk/blog/wp-content/uploads/2012/06/ledchaser.py
> >>
> >> they provide a set_led() function, so you'll need to remove the two
> >> chunks of code used to strobe the LEDs ("# Move led left " and "# Move
> >> led right") and replace them with your character generating code.
> >>
> >> Not trivial but given that POV displays seem to be popular, likely you
> >> can find some existing code for the character generator. If not, you'll
> >> need to dig up a library or lookup table that maps characters to dot
> >> patterns. Basically a dot matrix font. Then build a function that when
> >> given a character, translates that into the equivalent array of dots.
> >>
> >> I'd be inclined to use an architecture where rows of dots are pushed
> >> onto a stack, and then some background process is responsible for
> >> pulling a row from the stack and lighting up the LEDs on a steady clock
> >> rate. (I'm not sure if that's easy to accomplish in Python.)
> >>
> >> I'm guessing that with most of these POV displays, there isn't any real
> >> synchronization between the display motion and the strobing. The builder
> >> simply tunes the strobe rate until it works most of the time for
> >> whatever RPM their display ends up running at.
> >>
> >>
> >> > So any help through email or in person would be greatly appreciated.
> >>
> >> Post some follow up questions as you get stuck and we'll see what we can
> >> do.
> >>
> >>  -Tom
> >>
> > _______________________________________________
> > Hardwarehacking mailing list
> > Hardwarehacking at blu.org
> > http://lists.blu.org/mailman/listinfo/hardwarehacking
> >
>
>
> --
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blu.org/pipermail/hardwarehacking/attachments/20121115/5ee8150b/attachment.html>


More information about the Hardwarehacking mailing list