Files
2024-07-20 22:09:06 +08:00

61 lines
1.5 KiB
C++

/*
* MaxMatrix
* Version 1.0 Feb 2013
* Copyright 2013 Oscar Kin-Chung Au
*/
#ifndef _MaxMatrix_H_
#define _MaxMatrix_H_
#include "Arduino.h"
#define max7219_reg_noop 0x00
#define max7219_reg_digit0 0x01
#define max7219_reg_digit1 0x02
#define max7219_reg_digit2 0x03
#define max7219_reg_digit3 0x04
#define max7219_reg_digit4 0x05
#define max7219_reg_digit5 0x06
#define max7219_reg_digit6 0x07
#define max7219_reg_digit7 0x08
#define max7219_reg_decodeMode 0x09
#define max7219_reg_intensity 0x0a
#define max7219_reg_scanLimit 0x0b
#define max7219_reg_shutdown 0x0c
#define max7219_reg_displayTest 0x0f
class MaxMatrix
{
private:
byte spidata[16];
byte status[64];
byte data;
byte load;
byte clock;
byte num;
byte buffer[80];
void reload();
public:
MaxMatrix(byte data, byte load, byte clock, byte num);
void init();
void clear();
void setCommand(byte command, byte value);
void setRow(int addr, int row, byte value);
void setIntensity(byte intensity);
void setColumn(byte col, byte value);
void setColumnAll(byte col, byte value);
void setDot(byte col, byte row, byte value);
void writeSprite(int x, int y, const byte* sprite);
void shiftLeft(bool rotate = false, bool fill_zero = true);
void shiftRight(bool rotate = false, bool fill_zero = true);
void shiftUp(bool rotate = false);
void shiftDown(bool rotate = false);
void spiTransfer(int addr, volatile byte opcode, volatile byte data);
};
#endif