├── README.md ├── ADCButtons.h ├── examples └── ADC_Butt_Test │ └── ADC_Butt_Test.ino ├── library.properties ├── keywords.txt └── ADCButtons.cpp /README.md: -------------------------------------------------------------------------------- 1 | # ADCButtons 2 | 3 | A simple ADC 16 Buttons and 4x4 keypad library. 4 | 5 | // 1. Create object: 6 | 7 | ADCButtons button(A0); // A0 = analog pin 8 | 9 | // 2. get button: 10 | 11 | byte butt = button.get(); 12 | 13 | ![ADCButtons Test](https://i.imgur.com/R18GNTR.png) 14 | -------------------------------------------------------------------------------- /ADCButtons.h: -------------------------------------------------------------------------------- 1 | #ifndef ADCBUTTONS_H 2 | #define ADCBUTTONS_H 3 | #include 4 | 5 | class ADCButtons { 6 | private: 7 | byte _pin; 8 | char *_key; 9 | 10 | public: 11 | ADCButtons(byte pin); 12 | byte get(); 13 | char getKeyChar(); 14 | char waitForKey(); 15 | }; 16 | 17 | #endif -------------------------------------------------------------------------------- /examples/ADC_Butt_Test/ADC_Butt_Test.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | ADCButtons button(A0); 4 | 5 | void setup() { 6 | Serial.begin(9600); 7 | } 8 | 9 | void loop() { 10 | byte b = button.get(); 11 | char k = button.getKeyChar(); 12 | if (b != 0) { 13 | Serial.print(b); 14 | Serial.print(" "); 15 | Serial.println(k); 16 | } 17 | } -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=ADCButtons 2 | version=1.0.0 3 | author=Antor Ahmed 4 | maintainer=Antor Ahmed 5 | sentence=A simple ADC 16 Buttons and 4x4 keypad library. 6 | paragraph=Now you can use your 4x4 keypad or 16 Buttons with just a single analog pin(ADC). 7 | category=Signal Input/Output 8 | url=https://github.com/AntorOfficial/ADCButtons/ 9 | architectures=* -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | ########################################### 2 | # Datatypes and Class Name (KEYWORD1) 3 | ########################################### 4 | ADCButtons KEYWORD1 5 | 6 | ########################################### 7 | # Methods and Functions (KEYWORD2) 8 | ########################################### 9 | getKeyChar KEYWORD2 10 | waitForKey KEYWORD2 11 | 12 | ########################################### 13 | # Constants (LITERAL1) 14 | ########################################### -------------------------------------------------------------------------------- /ADCButtons.cpp: -------------------------------------------------------------------------------- 1 | #include "ADCButtons.h" 2 | 3 | ADCButtons::ADCButtons(byte pin) { 4 | _pin = pin; 5 | _key = new char[16]{'1', '2', '3', 'A', '4', '5', '6', 'B', 6 | '7', '8', '9', 'C', '.', '0', ' ', 'D'}; 7 | } 8 | 9 | byte ADCButtons::get() { 10 | int adc = analogRead(_pin); 11 | switch (adc) { 12 | case 1014 ... 1020: 13 | return 1; 14 | case 1006 ... 1012: 15 | return 2; 16 | case 999 ... 1005: 17 | return 3; 18 | case 990 ... 996: 19 | return 4; 20 | case 984 ... 989: 21 | return 5; 22 | case 977 ... 983: 23 | return 6; 24 | case 957 ... 963: 25 | return 7; 26 | case 928 ... 934: 27 | return 8; 28 | case 890 ... 896: 29 | return 9; 30 | case 836 ... 842: 31 | return 10; 32 | case 777 ... 783: 33 | return 11; 34 | case 761 ... 765: 35 | return 12; 36 | case 702 ... 708: 37 | return 13; 38 | case 659 ... 665: 39 | return 14; 40 | case 612 ... 618: 41 | return 15; 42 | case 566 ... 572: 43 | return 16; 44 | default: 45 | return 0; 46 | } 47 | return 0; 48 | } 49 | 50 | char ADCButtons::getKeyChar() { 51 | int key = get(); 52 | if (key == 0) return 0; 53 | return _key[key - 1]; 54 | } 55 | 56 | char ADCButtons::waitForKey() { 57 | char key = getKeyChar(); 58 | while (!key) key = getKeyChar(); 59 | return key; 60 | } --------------------------------------------------------------------------------