Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Дисплей 16x2 LCD + IO Shield для ODROID C4

  • Дисплей 16x2 LCD + IO Shield для ODROID C4
  • Дисплей 16x2 LCD + IO Shield для ODROID C4
  • Дисплей 16x2 LCD + IO Shield для ODROID C4
Архівний товар, який більше не продається у нашому магазині

Увы, за этот товар уже голосовать нельзя :(

НО!

У нас есть куча других классных товаров! :)
4
 

Плата розширення з дисплеєм 16 символів 2 рядки для підключення до міні-комп'ютерів ODROID C4 (також для старих моделей C1, C0, C2). На цей дисплей можна виводити текстову інформацію і псевдографіку що дозволяє використовувати ODROID в автономних і портативних пристроях без HDMI дисплея. Також є на платі додаткові світлодіоди, 2 кнопки і 4х6 контактів GPIO портів.

Характеристики:

  • Колір символів: білий на синьому
  • Кількість рядків: 2
  • Кількість символів в рядку: 16
  • Світлодіодів: 7
  • Кнопок: 2
  • GPIO портів: 4 x 6
  • Розміри: 85 x 56мм

Посилання:

Демонстраційна програма:

//------------------------------------------------------------------------------------------------------------

//

// ODROID-C 16x2 LCD / LED / Button Test Application.

//

// Defined port number is wiringPi port number.

//

// Compile : gcc -o -lwiringPi -lwiringPiDev -lpthread

// Run : sudo ./

//

//------------------------------------------------------------------------------------------------------------

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//------------------------------------------------------------------------------------------------------------

//

// Global handle Define

//

//------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------------

//

// LCD:

//

//------------------------------------------------------------------------------------------------------------

#define LCD_ROW 2 // 16 Char

#define LCD_COL 16 // 2 Line

#define LCD_BUS 4 // Interface 4 Bit mode

#define LCD_UPDATE_PERIOD 300 // 300ms

static unsigned char lcdFb[LCD_ROW][LCD_COL] = {0, };

static int lcdHandle = 0;

static int lcdDispPos = 0;

#define PORT_LCD_RS 7 // GPIOY.BIT3(#83)

#define PORT_LCD_E 0 // GPIOY.BIT8(#88)

#define PORT_LCD_D4 2 // GPIOX.BIT19(#116)

#define PORT_LCD_D5 3 // GPIOX.BIT18(#115)

#define PORT_LCD_D6 1 // GPIOY.BIT7(#87)

#define PORT_LCD_D7 4 // GPIOX.BIT7(#104)

const unsigned char lcdDispString[LCD_ROW][LCD_COL] = {

//1234567890123456

" Hello! ODROID! ",

" - HardKernel - ",

};

//------------------------------------------------------------------------------------------------------------

//

// Button:

//

//------------------------------------------------------------------------------------------------------------

#define PORT_BUTTON1 5 // GPIOX.BIT5(#102)

#define PORT_BUTTON2 6 // GPIOX.BIT6(#103)

//------------------------------------------------------------------------------------------------------------

//

// LED:

//

//------------------------------------------------------------------------------------------------------------

static int ledPos = 0;

const int ledPorts[] = {

21, // GPIOX.BIT4(#101)

22, // GPIOX.BIT3(#100)

23, // GPIOX.BIT11(#108):PWM_B

24, // GPIOX.BIT0(#97)

11, // GPIOX.BIT21(#118)

26, // GPIOX.BIT2(#99)

27, // GPIOX.BIT1(#98)

};

#define MAX_LED_CNT sizeof(ledPorts) / sizeof(ledPorts[0])

//------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------------

//

// LCD Update Function:

//

//------------------------------------------------------------------------------------------------------------

static void lcd_update (void)

{

int i, j;

memset((void *)&lcdFb, ' ', sizeof(lcdFb));

if(lcdDispPos) lcdDispPos %= LCD_COL;

// LCD Display Shift

if(lcdDispPos < 0) {

strncpy(&lcdFb[0][abs(lcdDispPos)], &lcdDispString[0][0], LCD_COL - abs(lcdDispPos));

strncpy(&lcdFb[1][abs(lcdDispPos)], &lcdDispString[1][0], LCD_COL - abs(lcdDispPos));

}

else {

strncpy(&lcdFb[0][0], &lcdDispString[0][lcdDispPos], LCD_COL - lcdDispPos);

strncpy(&lcdFb[1][0], &lcdDispString[1][lcdDispPos], LCD_COL - lcdDispPos);

}

for(i = 0; i < LCD_ROW; i++) {

lcdPosition (lcdHandle, 0, i);

for(j = 0; j < LCD_COL; j++) lcdPutchar(lcdHandle, lcdFb[i][j]);

}

}

//------------------------------------------------------------------------------------------------------------

//

// system init

//

//------------------------------------------------------------------------------------------------------------

int system_init(void)

{

int i;

// LCD Init

lcdHandle = lcdInit (LCD_ROW, LCD_COL, LCD_BUS,

PORT_LCD_RS, PORT_LCD_E,

PORT_LCD_D4, PORT_LCD_D5, PORT_LCD_D6, PORT_LCD_D7, 0, 0, 0, 0);

if(lcdHandle < 0) {

fprintf(stderr, "%s : lcdInit failed!n", __func__); return -1;

}

// GPIO Init(LED Port ALL Output)

for(i = 0; i < MAX_LED_CNT; i++) {

pinMode (ledPorts[i], OUTPUT); pullUpDnControl (PORT_BUTTON1, PUD_OFF);

}

// Button Pull Up Enable.

pinMode (PORT_BUTTON1, INPUT); pullUpDnControl (PORT_BUTTON1, PUD_UP);

pinMode (PORT_BUTTON2, INPUT); pullUpDnControl (PORT_BUTTON2, PUD_UP);

return 0;

}

//------------------------------------------------------------------------------------------------------------

//

// board data update

//

//------------------------------------------------------------------------------------------------------------

void boardDataUpdate(void)

{

int i;

// LED Control

for(i = 0; i < MAX_LED_CNT; i++) digitalWrite (ledPorts[i], 0); // LED All Clear

digitalWrite(ledPorts[ledPos++], 1);

if(ledPos) ledPos %= MAX_LED_CNT;

// button status read

if(!digitalRead (PORT_BUTTON1)) lcdDispPos++;

if(!digitalRead (PORT_BUTTON2)) lcdDispPos--;

}

//------------------------------------------------------------------------------------------------------------

//

// Start Program

//

//------------------------------------------------------------------------------------------------------------

int main (int argc, char *argv[])

{

int timer = 0 ;

wiringPiSetup ();

if (system_init() < 0)

{

fprintf (stderr, "%s: System Init failedn", __func__); return -1;

}

for(;;) {

if (millis () < timer) continue ;

timer = millis () + LCD_UPDATE_PERIOD;

// All Data update

boardDataUpdate();

// lcd update

lcd_update();

}

return 0 ;

}

Відео

<

<

оплата картами Visa і MasterCard