diff --git a/UsbTitle/UsbTitle.ino b/UsbTitle/UsbTitle.ino old mode 100755 new mode 100644 index 81ce109..bb8249c --- a/UsbTitle/UsbTitle.ino +++ b/UsbTitle/UsbTitle.ino @@ -1,78 +1,85 @@ -#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); - } +#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); + pinMode(3, OUTPUT); + 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); + } + }else if (lastCmd == 0x7a){ // команда z0..f + if (lastRead == 0x30){ + noTone(3); + }else{ + tone(3, 100*(lastRead-0x30)); + } + } + lastCmd = 0xFF; + } + }else{ + lastCmd = 0xFF; + } + } + // refresh the usb port for 10 milliseconds + DigiUSB.delay(10); + } }