Raspberry Pi LCD





 

Här är det tänkt att beskriva användningen av Adafruit LCD för Raspberry Pi.
LCDn är Hitachi HD44780LCD. Interfaceet är MCP23017.

 


 

Installation.

Det första man måste göra är att uppdatera Raspberry Pi med de senaste:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install geany. Genay är ett GUI som kan vara bra att använda vid utveckling.

Fortsätt med att installera program för lcdn.
sudo apt-get install git-core. Kan redan vara installerad.
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
- - -
Under byggande av WiringPi avslutades kompileringen med följande not:

	NOTE: This is wiringPi v2, and if you need to use the lcd, Piface,
	Gertboard, MaxDetext, etc. routines then you must change your
 	compile scripts to add -lwiringPiDev
							

- - -
sudo apt-get install i2c-tools
Testa om LCDn är ansluten med kommando:
sudo i2cdetect -y 1 1:an gäller Raspberry Pi revision B. För revision A (utan nätverk) ska det vara 0.
Installera WiringPi.
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
- - -
Hämtar bcm2835-1.36.tar.gz från http://www.airspayce.com/mikem/bcm2835/. Följ instruktionerna för att installera bcm2835.
bcm2835_i2c_* funktioner tillåter dig att kontrollera BCM 2835 BSC interface, vilket gör att du kan sända och ta emot data genom I2C; vilket refererar till "två-tråds interface") . För mer information om I2C, se http://en.wikipedia.org/wiki/I%C2%B2C

- - -
Hämta, installera och kompilera http://www.comp.leeds.ac.uk/jj/linux/lcdd.tgz
Hämta, installera och kompilera http://www.comp.leeds.ac.uk/jj/linux/i2c_sw.tgz
Dokument om MPC23017 finns här.
Dokument om HD44780LCD finns här.
- - -
Editera filen /etc/modules och lägg till i slutet:
i2c-bcm2708
i2c-dev
Skapa filen /etc/modprobe.d/raspi-blacklist.conf och lägg in följande rader:
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
- - -
Kör gpio load i2c

 

Till början.


 

Testning.
Testa kretsen MCP23017 på följande sätt:
ls -l /dev/i2c-*
i2cdetect 1
Resultatet på detta test bör bli något i stil med:

WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
							 

Denna rad bör visa 20 i kolumn 0.

20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --	

Detta visar att kretsen 23017 finns på den förväntade addressen 0x20 .

i2cdump -y 1 0x20
Resultat:

No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
10: 00 00 40 de 00 00 00 00 00 00 00 00 00 00 00 00    ..@?............
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................						
								


Fortsätt med:
/home/pi/xxx/xxx/mcp23017 -v -t 0x20 all
Resultatet av detta test ger:

1391317178.865 0x20 IODIRA   (0x00) = 0xFF
1391317178.868 0x20 IODIRB   (0x01) = 0xFF
1391317178.870 0x20 IPOLA    (0x02) = 0x00
1391317178.871 0x20 IPOLB    (0x03) = 0x00
1391317178.873 0x20 GPINTENA (0x04) = 0x00
1391317178.876 0x20 GPINTENB (0x05) = 0x00
1391317178.876 0x20 DEFVALA  (0x06) = 0x00
1391317178.877 0x20 DEFVALB  (0x07) = 0x00
1391317178.878 0x20 INTCONA  (0x08) = 0x00
1391317178.880 0x20 INTCONB  (0x09) = 0x00
1391317178.881 0x20 IOCON    (0x0A) = 0x00
1391317178.881 0x20 IOCON    (0x0B) = 0x00
1391317178.882 0x20 GPPUA    (0x0C) = 0x00
1391317178.883 0x20 GPPUB    (0x0D) = 0x00
1391317178.884 0x20 INTFA    (0x0E) = 0x00
1391317178.885 0x20 INTFB    (0x0F) = 0x00
1391317178.886 0x20 INTCAPAA (0x10) = 0x00
1391317178.886 0x20 INTCAPB  (0x11) = 0x00
1391317178.887 0x20 GPIOA    (0x12) = 0x40
1391317178.888 0x20 GPIOB    (0x13) = 0xDE
1391317178.888 0x20 OLATA    (0x14) = 0x00
1391317178.889 0x20 OLATB    (0x15) = 0x00


I2C Pins

Raspberry Pi V2 GPIO pinnar som används för I2C är:

P1-03 (SDA)
P1-05 (SLC)



 

Till början.



 

Adafruits LCD och C.

Kontrollera att wiringPi är installerat. Paketet finns här:
https://projects.drogon.net/raspberry-pi/wiringpi/.
Projektet finns beskrivet i Linux Format LXF 165.

I mappen examples finns programmet lcd-adafruit.c. Kompilera programmet och kör det. För att få fullt ljus så starta programmet med kommandot: lcd-adafruit 1. Bland annat så kommer aktuell tid att visas.

Jag har gjort följande modifiering i slutet av lcd-adafruit.c:

....							
if (digitalRead (AF_DOWN) == LOW)	// Pushed
    {
      colour = colour - 1 ;
      if (colour == -1)
	colour = 7 ;
      setBacklightColour (colour) ;
      waitForRelease = TRUE ;
    }
							
if (digitalRead (AF_LEFT) == LOW)	// Stäng programmet
	{
		lcdClear (lcdHandle) ;
		adafruitLCDSetup (4) ;
		exit(0);
	}
  }

  return 0 ;
}

Det gula är ett tillägg för att kunna avsluta programmet genom att trycka på knappen LEFT.
Hela programmet i pdf-format finns här



Till början.