Advertisement

Mendrive Banyak LED Dot Matrix menggunakan Arduino dan MAX7219

0 17,878

Beberapa tahun yang lalu embeddednesia pernah membahas tentang dasar – dasar led dot matrix dan bagaimana menggunakan display led dot matrix bersama dengan ic driver MAX7129. Dalam tulisan kali ini, penulis akan membahas bagaiamana menggunakan 4 led dot matrix yang telah di-cascade dengan MAX7129

IC Driver MAX7219 memiliki kelebihan salah satunya bisa di-cascade dengan driver MAX7219 yang lain sehingga perancang dapat menyusun  modul led dot matrix sepanjang mungkin.

 

  • Prasyarat Perangkat keras

Dalam tutorial ini digunakan spesifikasi komponen/perangkat keras sebagai berikut

  • Modul 4 in 1  LED Dot Matrix Display 

Modul ini  di tiap led dot matrix-nya berukuran 8×8 dengan spesifikasi Common Cathode. Dimana 4 led dot matrix display tersebut di-cascade dalam satu modul menggunakan 4 IC MAX7129. Berikut adalah tampilan dari Modul LED Dot Matrix Display 4 in 1 tersebut

Pembaca dapat membeli Modul LED Dot Matrix Display 4 in 1 melalui TOKO BEY dengan mengakses halaman pembelian di tautan berikut.  Jika pembaca merasa tulisan ini bermanfaat, pembaca dapat berterimakasih dengan membeli produk di TOKO BEY

Adverstiment

 

  • Arduino Uno

Sebagai kontroler di dalam tulisan ini diganakan board Arduino Uno, board ini  bisa didapatkan  di TOKO BEY dengan mengunjungi halaman pembelian di tautan berikut

  • Prasyarat Perangkat Lunak

Sistem Operasi dan software / perangkat lunak yang digunakan dalam tulisan ini adalah sebagai berikut

  • Sistem Operasi Microsoft Windows 10
  • Arduino IDE
  • Java Development Kit
  • Install Library

Sebelum memulai membuat sketch, pastikan library berikut telah terinstall.

  • MD_MAX72XX
  • MD_MAXPanel
  • MD_Parola

Untuk menginstal Library tersebut dapat menggunakan menu Sketch > Include Library > Library ManagerBerikut adalah

 

Adverstiment

  • Pengkabelan

Modul LED Dot Matrix Display 4 in 1 memiliki 5 pin, dua diantaranya adalah untuk VCC dan GND, sedangkan tiga lainnya DIN, CLK, dan CS. dapat dihubungkan di pin manapun pada Arduino Uno, namun dalam tutorial ini dihubungkan pin arduino dengan konfigurasi sebagai berikut

MAX7219 Arduino Uno
CLK 13
DIN 11
CS 10

 

  • Sketch 1

Program berikut akan menampilkan karakter string Hello World pada modul led dot matrix


// Program to demonstrate the MD_Parola library
//
// Uses the Arduino Print Class extension with various output types
//
// MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX
//
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
const uint16_t WAIT_TIME = 1000;
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary output pins
// MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
void setup(void)
{
P.begin();
}
void loop(void)
{
P.print("Hello");
}
view raw

hello.ino

hosted with ❤ by GitHub

Upload program tersebut ke Arduino Uno. Jika berhasil led dot matrix akan menampilkan hasil seperti gambar berikut

- Advertisement -

  • Running Text 

Setelah sketch pertama pada langkah sebelumnya berhasil, kini saatnya naik ke level berikutnya dimana LED Dot Matrix akan menampilkan teks berjalan berdasarkan nilai yang dimasukan pengguna melalui komunikasi serial


// Use the Parola library to scroll text on the display
//
// Demonstrates the use of the scrolling function to display text received
// from the serial interface
//
// User can enter text on the serial monitor and this will display as a
// scrolling message on the display.
// Speed for the display is controlled by a pot on SPEED_IN analog in.
// Scrolling direction is controlled by a switch on DIRECTION_SET digital in.
// Invert ON/OFF is set by a switch on INVERT_SET digital in.
//
// UISwitch library can be found at https://github.com/MajicDesigns/MD_UISwitch
// MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX
//
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// set to 1 if we are implementing the user interface pot, switch, etc
#define USE_UI_CONTROL 0
#if USE_UI_CONTROL
#include <MD_UISwitch.h>
#endif
// Turn on debug statements to the serial output
#define DEBUG 0
#if DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTX(x) Serial.println(x, HEX)
#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(x)
#endif
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
// HARDWARE SPI
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// SOFTWARE SPI
//MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
// Scrolling parameters
#if USE_UI_CONTROL
const uint8_t SPEED_IN = A5;
const uint8_t DIRECTION_SET = 8; // change the effect
const uint8_t INVERT_SET = 9; // change the invert
const uint8_t SPEED_DEADBAND = 5;
#endif // USE_UI_CONTROL
uint8_t scrollSpeed = 25; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000; // in milliseconds
// Global message buffers shared by Serial and Scrolling functions
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = { "Hello! Enter new message?" };
bool newMessageAvailable = true;
#if USE_UI_CONTROL
MD_UISwitch_Digital uiDirection(DIRECTION_SET);
MD_UISwitch_Digital uiInvert(INVERT_SET);
void doUI(void)
{
// set the speed if it has changed
{
int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150);
if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) ||
(speed <= ((int16_t)P.getSpeed() – SPEED_DEADBAND)))
{
P.setSpeed(speed);
scrollSpeed = speed;
PRINT("\nChanged speed to ", P.getSpeed());
}
}
if (uiDirection.read() == MD_UISwitch::KEY_PRESS) // SCROLL DIRECTION
{
PRINTS("\nChanging scroll direction");
scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT);
P.setTextEffect(scrollEffect, scrollEffect);
P.displayClear();
P.displayReset();
}
if (uiInvert.read() == MD_UISwitch::KEY_PRESS) // INVERT MODE
{
PRINTS("\nChanging invert mode");
P.setInvert(!P.getInvert());
}
}
#endif // USE_UI_CONTROL
void readSerial(void)
{
static char *cp = newMessage;
while (Serial.available())
{
*cp = (char)Serial.read();
if ((*cp == '\n') || (cp – newMessage >= BUF_SIZE-2)) // end of message character or full buffer
{
*cp = '\0'; // end the string
// restart the index for next filling spree and flag we have a message waiting
cp = newMessage;
newMessageAvailable = true;
}
else // move char pointer to next position
cp++;
}
}
void setup()
{
Serial.begin(57600);
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
#if USE_UI_CONTROL
uiDirection.begin();
uiInvert.begin();
pinMode(SPEED_IN, INPUT);
doUI();
#endif // USE_UI_CONTROL
P.begin();
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
void loop()
{
#if USE_UI_CONTROL
doUI();
#endif // USE_UI_CONTROL
if (P.displayAnimate())
{
if (newMessageAvailable)
{
strcpy(curMessage, newMessage);
newMessageAvailable = false;
}
P.displayReset();
}
readSerial();
}

Setelah sketch tersebut dicompile dan di-upload  ke Arduino Uno. Led dot matrix akan menampilkan tulisan
"Hello! Enter new message?"

Buka Serial Monitor dan atur  baudrate pada 57600 sebagaimana pada screenshoot gambar dibawah ini, Lalu masukan sebuah kalimat misalnya embeddednesia.com, dot matrix akan menampilkan kalimat persis seperti yang telah dimasukkan ke Serial Monitor

Berikut adalah video pengujian dari program running text tersebut

 

Baca juga tulisan menarik  lainnya di seri #Arduno  dan kategori tentang #Mikrokontroler lainnya

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.