void
lcdCharDef(fd, index, data)
int fd
int index
unsigned char * data
void
lcdPutchar(fd, data)
int fd
unsigned char data
####
extern void lcdCharDef(const int fd, int index, unsigned char data [8]);
extern void lcdPutchar(const int fd, unsigned char data);
####
sub lcd_char_def {
shift if @_ == 4;
my ($fd, $index, $data) = @_;
my $unsigned_char = pack "V0C*", @$data;
lcdCharDef($fd, $index, $unsigned_char);
}
sub lcd_put_char {
shift if @_ == 3;
my ($fd, $data) = @_;
lcdPutchar($fd, $data);
}
####
#include
#include
#include
int main (int argc, char *argv[]){
unsigned char newChar [8] = {
0b11111,
0b10001,
0b10001,
0b10101,
0b11111,
0b10001,
0b10001,
0b11111,
};
wiringPiSetupGpio();
static int fd;
fd = lcdInit(2, 16, 4, 23, 16, 5, 6, 13, 19, 0, 0, 0, 0);
lcdClear(fd);
lcdPosition(fd, 0, 0);
lcdCharDef(fd, 2, newChar);
lcdPutchar(fd, 2);
sleep(1);
return 0;
}
####
use warnings;
use strict;
use WiringPi::API qw(:all);
setup_gpio();
my %args = (
cols => 16,
rows => 2,
bits => 4,
rs => 23,
strb => 16,
d0 => 5,
d1 => 6,
d2 => 13,
d3 => 19,
d4 => 0,
d5 => 0,
d6 => 0,
d7 => 0,
);
my $fd = lcd_init(%args);
my $def = [
0b11111,
0b10001,
0b10001,
0b10101,
0b11111,
0b10001,
0b10001,
0b11111,
];
lcd_clear($fd);
lcd_position($fd, 0, 0);
lcd_char_def($fd, 2, $def);
lcd_put_char($fd, 2);
sleep 1;