79 lines
2.6 KiB
Arduino
79 lines
2.6 KiB
Arduino
|
#include <DigiUSB.h>
|
||
|
#include <EEPROM.h>
|
||
|
#include "LedControl.h"
|
||
|
|
||
|
/*
|
||
|
Now we need a LedControl to work with.
|
||
|
pin 2 is connected to the DataIn
|
||
|
pin 1 is connected to the CLK
|
||
|
pin 0 is connected to LOAD
|
||
|
We have only a single MAX72XX.
|
||
|
*/
|
||
|
|
||
|
LedControl lc=LedControl(2,1,0,1);
|
||
|
|
||
|
void setup() {
|
||
|
DigiUSB.begin();
|
||
|
/*
|
||
|
The MAX72XX is in power-saving mode on startup,
|
||
|
we have to do a wakeup call
|
||
|
*/
|
||
|
lc.shutdown(0,false);
|
||
|
/* Set the brightness to a medium values */
|
||
|
lc.setIntensity(0,0);
|
||
|
/* and clear the display */
|
||
|
lc.clearDisplay(0);
|
||
|
delay(1000);
|
||
|
}
|
||
|
|
||
|
void loop() {
|
||
|
byte lastRead;
|
||
|
byte lastCmd = 0xFF;
|
||
|
byte value;
|
||
|
DigiUSB.refresh();
|
||
|
while (true) { // loop forever
|
||
|
if (DigiUSB.available()) {
|
||
|
// something to read
|
||
|
lastRead = DigiUSB.read();
|
||
|
if (lastRead >= 0x20 && lastRead<=0x7F){
|
||
|
if (lastCmd == 0xFF){ // Если ранее команд не было, значит считываем команду
|
||
|
lastCmd = lastRead;
|
||
|
}else{ // команда есть, операнд считали, выполняем
|
||
|
if (lastCmd >=0x41 && lastCmd <=0x48){ // команда установки в сегменте нужного кода ABCDEFGH
|
||
|
value = EEPROM.read(lastRead);
|
||
|
lc.setRow(0, 7-(lastCmd-0x41), value+0x80);
|
||
|
}else if (lastCmd >=0x61 && lastCmd <=0x68){ // команда установки в сегменте нужного кода abcdefgh
|
||
|
value = EEPROM.read(lastRead);
|
||
|
lc.setRow(0, 7-(lastCmd-0x61), value);
|
||
|
}else if (lastCmd == 0x69){ // команда яркости i 0..9abcdef
|
||
|
if (lastRead >=0x30 && lastRead <= 0x39){
|
||
|
lc.setIntensity(0, lastRead-0x30);
|
||
|
}else if (lastRead >=0x61 && lastRead <= 0x66){
|
||
|
lc.setIntensity(0, lastRead-0x57);
|
||
|
}
|
||
|
}else if (lastCmd == 0x6C){ // команда количества разрядов l 0..7
|
||
|
if (lastRead >=0x30 && lastRead <= 0x37){
|
||
|
lc.setScanLimit(0, lastRead-0x30);
|
||
|
}
|
||
|
}else if (lastCmd == 0x78){ // команда очистки экрана x0
|
||
|
if (lastRead == 0x30){
|
||
|
lc.clearDisplay(0);
|
||
|
}
|
||
|
}else if (lastCmd == 0x73){ // команда s0..1
|
||
|
if (lastRead == 0x30){
|
||
|
lc.shutdown(0,false);
|
||
|
}else{
|
||
|
lc.shutdown(0,true);
|
||
|
}
|
||
|
}
|
||
|
lastCmd = 0xFF;
|
||
|
}
|
||
|
}else{
|
||
|
lastCmd = 0xFF;
|
||
|
}
|
||
|
}
|
||
|
// refresh the usb port for 10 milliseconds
|
||
|
DigiUSB.delay(10);
|
||
|
}
|
||
|
}
|