5 Replies Latest reply on Oct 20, 2014 9:51 AM by David_J_Hunt

    Adafruit RGB LCD shield working on ubilinux Edison

    David_O_Riordan

      Quick demo of a Raspberry Pi accessory working on Intel Edison.

       

      RGB-LCDb.gif

       

      I had an Adafruit RGB LCD shield for the Raspberry Pi that I wanted to use with Intel Edison. I tried to get the Adafruit python code working using SMBus or mraa on the original Intel Edison yocto image, but without any success. I then flashed the ubilinux image and things fell into place pretty quickly.

       

      Once you have ubilinux installed and connected to the internet:

      • sudo apt-get install python-smbus
      • sudo apt-get install i2c-tools


      The Adafruit library I used is an older version of the library, as I already had it downloaded. It is available on github.

      The Intel Edison uses a different I2C bus to the RPi, so you will need to make one small change to the Adafruit _I2C.py file.

      In the init function, force I2C bus 6 by commenting out:

      • self.bus = smbus.SMBus(busnum if busnum >= 0 else Adafruit_I2C.getPiI2CBusNumber())

      Replace it with:

      • self.bus = smbus.SMBus(6);

      The other additional step is to mux out the I2C6 pins to the outside world. I copied the "Example 4: Configure IO18/IO19 for I2C connectivity" setup from EmutexLabs gpio muxing guide.

      Add these commands to a bash script, and call it before you run the Python code ( or call it from the Python code via subprocess call).


      Copy the Adafruit .py files to the same directory on your Edison and execute the Adafruit_CharLCDPlate.py file to see the Adafruit demo code, or create your own demo as I did.


      It should be as simple as that!


      One thing to note - sometimes the displayed text may become corrupted. I noticed this when running consecutive python scripts using the display.

      I had a quick look at this and put it down to there being no software reset on the display's expander chip, and the hardware reset pin is tied to Vcc.

      The simple fix is to remove 5V power from the display briefly before running another script.