#include #include #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); } }