Rabu, 06 Oktober 2021

Cara Membuat Runing Text menggunakan MAX7219 LED matrix 32×8 dan Arduino

 

Cara Membuat Runing Text menggunakan MAX7219 LED matrix 32×8 dan Arduino. Berikut ini beberapa komponen yang dibutuhkan :

  • Arduino Uno
  • MAX7219 LED matrix 32×8,
  • Kabel jumper,
  • Library MD_MAX72xx,Disini
  • Library MD_Parola, Disini

Rangkaian 

Keterangan :

  1. VCC dihubungkan ke 5V Arduino
  2. GND dihubungkan ke GND
  3. DIN dihubungkan ke pin 11
  4. CS dihubungkan ke pin 10
  5. CLK dihubungkan ke pin 13

Rangkai sesuai gambar dan keterangan gambar di atas. Selanjutnya silahkan masukkan library yang sudah di download.

Sketch Program

1.Hello Word

// 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");

  

}


2. Runing Text

Upload sketch program di atas. Untuk merubah teksnya silahkan ubah pada kode di bawah ini.

 #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 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 = 40

                      ;    // default frame delay value

textEffect_t scrollEffect = PA_SCROLL_LEFT;

textPosition_t scrollAlign = PA_LEFT;

uint16_t scrollPause = 200; // in milliseconds

// Global message buffers shared by Serial and Scrolling functions

#define  BUF_SIZE  75

char curMessage[BUF_SIZE] = { "" };

char newMessage[BUF_SIZE] = { "WELCOME TO MY CHANEL BELINTEK" };

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();

}


Untuk Mengganti Teksnya cukup ganti yang bertulisan " Welocme to My Chanel Belintek "



cukup sekian Terima Kasih

 

Wiring Cnc Laser Engraver