OS: BPI-M3 Ubuntu15.10 (Kernel3.4) Version: 1.0 HDMI
Step 1: Download WiringPI
$ git clone https://github.com/BPI-SINOVOIP/BPI-WiringPi.git1 -b BPI_M3 $ cd BPI-WiringPi $ chmod +x ./build $ sudo ./build
Step 2 : Copy smaple code to 1602.c file
$ sudo vi 1602.c
Step 3 : Compile 1602.c
$ gcc -o 1602 1602.c -l wiringPi -lpthread -lwiringPiDev
Step 4: Run 1602
$ sudo ./1602
Video Demo:
Sample Code:
#include <stdio.h>
#include <wiringPi.h>
#include <pthread.h>
#include <mcp23017.h>
#include <lcd.h>
#include <time.h>
int page=3;
int select=1;
int display;
int color=0;
pthread_t id;
void show()
{
time_t timep;
struct tm *ptm;
digitalWrite ( 113, LOW);
digitalWrite ( 114, LOW);
digitalWrite ( 115, LOW);
lcdPosition(display,0,0);
switch(page)
{
case 0:
if (select==1)
{
lcdPrintf(display,">>1.System Time ");
lcdPrintf(display," 2.LED RGB ");
}
else
{
lcdPrintf(display," 1.System Time ");
lcdPrintf(display,">>2.LED RGB ");
}
break;
case 1:
time(&timep);
ptm=localtime(&timep);
lcdPrintf(display," %04d/%02d/%02d ",1900+ptm->tm_year, 1+ptm->tm_mon, ptm->tm_mday);
lcdPrintf(display," %02d:%02d:%02d ",ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
break;
case 2:
lcdPrintf(display," **LED RGB**");
lcdPrintf(display," Color: %d ",color);
digitalWrite ( 113, color&0x01);
digitalWrite ( 114, color&0x02);
digitalWrite ( 115, color&0x04);
color=(color+1)%8;
delay(400);
break;
case 3:
lcdPrintf(display,"RGB&1602 Module ");
lcdPrintf(display,"for BPI-M3 ");
break;
}
delay(100);
}
void key(void)
{
int i;
while(1)
{
for(i=108;i<113;i++)
{
if (digitalRead(i)>0)
{
switch(i)
{
case 108:
page=0;
break;
case 109:
select=select%2+1;
break;
case 110:
page=3;
break;
case 111:
page=select;
break;
case 112:
select=select%2+1;
break;
}
delay(400);
}
}
delay(100);
}
}
int main()
{
wiringPiSetup();
mcp23017Setup (100, 0x20);
pthread_create(&id,NULL,(void *)key,NULL);
digitalWrite(107,1);
digitalWrite(101,0);
display=lcdInit(2,16,4,100,102,103,104,105,106,0,0,0,0);
lcdHome(display);
for(int i=0;i<16;i++)
pinMode(100+i,OUTPUT);
while(1)
show();
}
more information:
https://bananapi.gitbooks.io/bpi-accessories/content/lcd1602displaymodule.html