Keyboard and Number Pad Library for ILI9341 displays
HTML-код
- Опубликовано: 4 окт 2024
- If you have never needed to capture user input such as IP address, user names, filenames, and passwords, this library does it all. This easy to implement library is the perfect component for your Teensy projects with ILI9341_t3 display drivers or an ESP32 programs that use the Adafruit_ILI9341display driver.
The keypad (number pad) library MAY work with an Arduino UNO, NANO, and the MEGA. The full keyboard (numbers and characters) is not supported with any Arduino MCU. The best I can determine is either memory issue or 8-bit architecture
The displays are common 2.8" TFT LCD touchscreens using the ILI9341 chip and with touch capability using the XPT2046 chip. The two classes include a full keyboard and a number pad. The Keyboard has upper/lower case and all special characters. The number pad has decimals, negative signs, and even supports hidden display characters.
See below for links for Teensy or ESP32 users
For Teensy users (ILI9341_t3 displays)
Dependencies are
ILI9341_t3 display library
XPT2046_Touchscreen touch library
ILI9341_t3_Controls library (version 6.0)
Libraries here
Keyboard / Number Pad
github.com/Kri...
ILI9341_t3 controls
github.com/Kri...
For ESP32 users (Adafruit_ILI9341 displays)
Dependencies are
Adafruit_ILI9341 display library
XPT2046_Touchscreen touch library
Adafruit_ILI9341_Controls library (version 6.0)
Get the libraries here
Keyboard / Number Pad
github.com/Kri...
Adafruit_ILI9341_Controls
github.com/Kri... - Хобби
Thanks for this, especially the keyboard.
As always, one more very useful video from you. I appreciate your efforts. 👌Waiting for the next lesson, with great regards.
Thank you for your kind words.
Excellent and very useful. Thank you Kris - as a Teensy/ILI9341 fan I am waiting for your next video.
Greetings from germany.
Thank you very much!
Thank you.
You're welcome!
Dear sir. I'm having problems running these libraries with an Arduino Mega. Everything compiles with no problem. Touchscreen calibration is perfect but in the Keyboard sketch the 3 main button show the fonts in the button but after pressing any of the 3 buttons the program goes to the corresponding screen but there is no font written in any button. In the keypad screen the tick and cancel buttons are not drawn correctly. After pressing any button it goes to the black screen with no letters and after pressing in that screen it goes to the main menu with the 3 buttons but without text.
I already confirmed I have the latest versions of your libraries. Also confirmed I'm using the Arduino libraries instead of the teensies. The only difference is that I'm not using the IRQ pin on the Touchscreen... But I don't think it's a touchscreen problem, the screen presses seem to be Ok. Also having some performance issues with your Menu Library. I hope you can give me a clue on what to try. Thanks in advance and thanks for your great contribution to the community.
In the readme on github, I've indicated that the keypad library MAY work with an Arduino UNO, NANO, and the MEGA. The full keyboard is not supported with any Arduino MCU. The best I can determine is either memory issue or 8-bit architecture.
I've updated this vides description indicating the same.
Personally, I've run into so many limitations with Arduinos I no longer use use them--unless it's a very simple project.
Wow, this tutorial is amazing, thank you bro!
Another great video that I can put to use! A question for you: Do you ever have trouble with the accuracy of your touch interface, especially when you have so many keys on the screen? It would seem the full keyboard would require good touch resolution and accuracy. Occasionally I have trouble with this. I know there's the touch calibration script to be used for initial display setup. Do you ever need it? Do you think maybe I just have some old/cheap displays/touch screens? Where do you usually source your displays? Are cheap Chinese versions suitable in your experience?
I’ve got pretty good luck with touch accuracy. The display shown here was a cheap Chinese unit at about eight dollars. I buy them on Amazon. I don’t use the calibration script. I have my own mapping functions inside a function called processtouch. I just tweak the first two arguments for the X and Y and I can get pretty good accuracy.
@@KrisKasprzak Thanks!
Always good content. Is using pins 0 and 1 not conflicting with USB and tx/rx?
I'm secretly trying to get the world to replace arduino with Teensy :)
Can I get the circuit for this
This was really helpful
Glad I could help.
Kris, thank you for your contribution. Is this possible to make this touch display works with your library "Menu System for ILI9341_t3 displays"
Sure, it’s just a method that you called whenever you need it
Kris - I am looking for a full A/N touch library for an ESP32 with 3.5 in ILI9341 LCD controller/with resistive touch, 480x320 resolution. This RUclips video seems to detail exactly what I am looking for. HOWEVER, the links to your GITHUB only points to a numeric keypad version - No KEYBOARD class as far as I can tell. Is the keyboard library no longer avaialbe? Please advise.
see line 160 in the ILI9341_t3_Keypad
/ILI9341_t3_Keypad.h
class Keyboard {...
HOW WOULD I ADAPT THE CODE FOR ARDUINO?
Is there a way to exit the number pad if no input is received after a certain time?
Currently there is not. The number pad will stay active until the user presses OK or cancel.
Nice.
Thank you! Cheers!
Hey! Super cool and useful tool, I'm currently trying to implement it but I keep getting this error. "\Adafruit_ILI9341_Keypad.cpp:508:27: error: array must be initialized with a brace-enclosed initializer Button KeyboardBtn[101](d);"
any help would be much appreciated. Thank you!
what MCU?
@@KrisKasprzak it’s a esp32 Wroom. Thank you for your reply!
Kris, great looking keyboard here! I am having one issue trying to compile. I see others have asked this below but didn't see a solution. Any help would be appreciated! I'm using an ESP32 S3 and here is the error code:
src/Adafruit_ILI9341_Keypad.cpp:80:27: error: array must be initialized with a brace-enclosed initializer
Button KeyboardBtn[101](d);
Let me guess, you’re using Arduino IDE 2.0? Something changed in the compiler along the lines that make a red declaration more descriptive I have a fix but it will be a week or so before I can actually get to it.
@@KrisKasprzak technically I’m using PlatformIO but I’m using the Arduino environment.
please make tutorial how to make graph relation in tft lcd and sensor ina219 sir
Like this? ruclips.net/video/vyvtpjQgRKQ/видео.html
Thank you so much, can you please create a discord server for your channel?
sir how can i use special characters like arrows and symbols...
Unfortunately you can't using standard font files as they are limited to char data types (+/- 127).
However, you can create custom font based on something like Wingdings. This video shows how
ruclips.net/video/YNUbvpTaaCY/видео.html
By using the .setFont(arial) you can print "Cool" then change the font .setFont(Wingdings). then you can print("J"), and get a smiley face. You can download other fonts for different graphics. Just use the font convert tool to create a custom font.
Dear Sir, I am getting this compiling error, please advice:
C:\Adafruit_ILI9341_Keypad\Adafruit_ILI9341_Keypad.cpp: In member function 'void NumberPad::getInput()':
C:\Adafruit_ILI9341_Keypad\Adafruit_ILI9341_Keypad.cpp:205:27: error: array must be initialized with a brace-enclosed initializer
Button NumberPadBtn[16](d);
^
C:\Adafruit_ILI9341_Keypad\Adafruit_ILI9341_Keypad.cpp: In member function 'void Keyboard::getInput()':
C:\Adafruit_ILI9341_Keypad\Adafruit_ILI9341_Keypad.cpp:464:27: error: array must be initialized with a brace-enclosed initializer
Button KeyboardBtn[101](d);
^
For some reason my libs got out of sycn on upload to github.
you will need re-downlad and make sure you get the latest controls library. Here are the links:
github.com/KrisKasprzak/Adafruit_ILI9341_Keypad
github.com/KrisKasprzak/Adafruit_ILI9341_Controls
@@KrisKasprzak Sir, the above Keyboard.ino example sketch, gives this compiling error message:
C:\Users\Arduino\libraries\Adafruit_ILI9341_Keypad\Adafruit_ILI9341_Keypad.cpp:30:10: fatal error: ILI9341_t3_Keypad.h: No such file or directoryResolveLibrary(ILI9341_t3_Keypad.h)
#include "ILI9341_t3_Keypad.h"