X-Git-Url: http://git.harvie.cz/?p=mirrors%2FPrograms.git;a=blobdiff_plain;f=arduino%2Fbomba-keypad%2Fbomba-keypad.ino;fp=arduino%2Fbomba-keypad%2Fbomba-keypad.ino;h=0000000000000000000000000000000000000000;hp=179d43207d4d4e4aa472c85b8b270dffd46ffb26;hb=de8021a10a2d637bb82fcfbf59ab419605f2ae0e;hpb=46a1695823fd4553a6f481c65b2594340d99dbc4 diff --git a/arduino/bomba-keypad/bomba-keypad.ino b/arduino/bomba-keypad/bomba-keypad.ino deleted file mode 100644 index 179d432..0000000 --- a/arduino/bomba-keypad/bomba-keypad.ino +++ /dev/null @@ -1,161 +0,0 @@ -/* - * PS2 pinout cinskej kabel: data cerveny (18), clock bily (19), 5V cerny, GND zluty - */ - -#define SOFTSERIAL - -#ifndef SOFTSERIAL -#include -PS2dev keyboard(19, 18); //clock, data -#else -#include -//#include -SoftwareSerial mySerial(18, 19); -#endif - -#include - -LedControl lc=LedControl(16,14,15,2); //datain, clk, load, number of chips -unsigned char dispbuf[32]; - -#include - -int keyledPin = 3; - -const byte ROWS = 4; //four rows -const byte COLS = 3; //four columns -//define the cymbols on the buttons of the keypads -char hexaKeys[ROWS][COLS] = { - {'1','2','3'}, - {'4','5','6'}, - {'7','8','9'}, - {'*','0','#'} -}; -byte rowPins[ROWS] = {10, 9, 8, 7}; //connect to the row pinouts of the keypad -byte colPins[COLS] = {4, 5, 6}; //connect to the column pinouts of the keypad - -//initialize an instance of class NewKeypad -Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); - -char scancodes[] = {0x45, 0x16, 0x1E, 0x26, 0x25, 0x2E, 0x36, 0x3D, 0x3E, 0x46, 0x7C, 0x7C}; //Scancodes for numbers 0-9, *, # - -void cleardisp(char val) { - for(int i = 0; i<8; i++) dispbuf[i] = val; -} - -void drawdisp(int shift) { - lc.clearDisplay(0); - for(int i = 0; i<8; i++) { - if(shift) dispbuf[i] = dispbuf[i+1]; - if(dispbuf[i] != '_') lc.setDigit(0,7-i,dispbuf[i],false); //addr, digit, value, decimalpoint - } -} - -void intro() { - cleardisp('_'); - for(int i = 0; i<100; i++) { - analogWrite(keyledPin, i); - if(i >= 20*1) dispbuf[3] = dispbuf[4] = 0; - if(i >= 20*2) dispbuf[2] = dispbuf[5] = 0; - if(i >= 20*3) dispbuf[1] = dispbuf[6] = 0; - if(i >= 20*4) dispbuf[0] = dispbuf[7] = 0; - drawdisp(0); - delay(20); - } -} - -void outro() { - cleardisp(0); - for(int i = 100; i>=0; i--) { - analogWrite(keyledPin, i); - if(i <= 20*1) dispbuf[3] = dispbuf[4] = '_'; - if(i <= 20*2) dispbuf[2] = dispbuf[5] = '_'; - if(i <= 20*3) dispbuf[1] = dispbuf[6] = '_'; - if(i <= 20*4) dispbuf[0] = dispbuf[7] = '_'; - drawdisp(0); - delay(20); - } -} - - -void setup(){ - /* - 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,15); //0 - 15 - /* and clear the display */ - lc.clearDisplay(0); - - intro(); - cleardisp('_'); drawdisp(0); - -#ifndef SOFTSERIAL - // send the keyboard start up - keyboard.keyboard_init(); -#else - mySerial.begin(4800); -#endif - - Serial.begin(9600); - - - - pinMode(LED_BUILTIN, OUTPUT); -} - -void loop(){ - unsigned char leds; -#ifndef SOFTSERIAL - if(keyboard.keyboard_handle(&leds)) { - //Serial.print('LEDS'); - //Serial.print(leds, HEX); - digitalWrite(LED_BUILTIN, leds); - } -#endif - - char customKey = customKeypad.getKey(); - - if (customKey){ - Serial.println(customKey); - //analogWrite(keyledPin, random(0, 255)); - analogWrite(keyledPin, 255); - unsigned char numkey = customKey-0x30; - if(numkey < 10) { -#ifndef SOFTSERIAL - //Send PS2 - keyboard.keyboard_mkbrk(scancodes[numkey]); -#else - mySerial.print(customKey); -#endif - - //Single digit - //lc.setDigit(0,7,numkey,false); //addr, digit, value, decimalpoint - - //Scroll out display - dispbuf[8] = numkey; - drawdisp(1); - } - } - - if (customKey == '*') { - //Send PS2 -#ifndef SOFTSERIAL - keyboard.keyboard_mkbrk(scancodes[10]); -#endif - - //analogWrite(keyledPin, 0); - outro(); - - cleardisp('_'); - drawdisp(0); - } - - if (customKey == '#') { -#ifndef SOFTSERIAL - keyboard.keyboard_mkbrk(0x5A); //enter -#endif - } -}