#define MAX7219_Data_IN 8
#define MAX7219_Chip_Select 10
#define MAX7219_Clock 9
#define OP_NOOP 0x00
#define OP_DIGIT0 0x01
#define OP_DIGIT1 0x02
#define OP_DIGIT2 0x03
#define OP_DIGIT3 0x04
#define OP_DIGIT4 0x05
#define OP_DIGIT5 0x06
#define OP_DIGIT6 0x07
#define OP_DIGIT7 0x08
#define OP_DECODEMODE 0x09
#define OP_INTENSITY 0x0a
#define OP_SCANLIMIT 0x0b
#define OP_SHUTDOWN 0x0c
#define OP_DISPLAYTEST 0x0f
void shift(byte send_to_address, byte send_this_data)
{
digitalWrite(MAX7219_Chip_Select, LOW);//digunakan untuk mengaktifkan ic
shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_to_address);//digunakan untuk mengirim data alamat
shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_this_data);//kemudian alamatnya
digitalWrite(MAX7219_Chip_Select, HIGH);
}
void setup() {
Serial.begin(115200);
pinMode(MAX7219_Data_IN, OUTPUT);
pinMode(MAX7219_Chip_Select, OUTPUT);
pinMode(MAX7219_Clock, OUTPUT);
digitalWrite(MAX7219_Clock, HIGH);
delay(200);
//Setup of MAX7219 chip
shift(OP_DISPLAYTEST, 0x00); //display test register - test mode off
shift(OP_SHUTDOWN , 0x01); //shutdown register - normal operation
shift(OP_SCANLIMIT , 0x07); //scan limit register - display digits 0 thru 7
shift(OP_INTENSITY , 0x0f); //intensity register - max brightness
shift(OP_DECODEMODE , 0xff); //decode mode register - CodeB decode all digits
}
void loop() {
Serial.println("BCD without decimal point");
shift(OP_DIGIT7, 0); //digit 7 (leftmost digit) data
shift(OP_DIGIT6, 0);
shift(OP_DIGIT5, 0);
shift(OP_DIGIT4, 0);
shift(OP_DIGIT3, 1);
shift(OP_DIGIT2, 2);
shift(OP_DIGIT1, 3);
shift(OP_DIGIT0, 4); //digit 0 (rightmost digit) data
delay(1000);
}