- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I want to input data from the keyboard to PSOC.
I want to load the information I enter from the keyboard into an array.
I want to print on the LCD screen from there too.
How can I communicate psoc with keyboard?
Solved! Go to Solution.
- Labels:
-
PSoC 5LP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Eemuh-san,
Please refer to
I2C Full Keyboard Sample (CardKb)
Best Regards,
26-Feb-2020
Motoo Tanaka
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Could you please specify what kind of inputs that your LCD screen support? Also you are using a USB keyboard correct? Does your application involves using a computer?
For I/O applications we recommend you to use UART component in PSoC. Please refer the code example CE195366 present in PSoC Creator itself.
Thanks
Ganesh
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I will connect to psoc with usb. There will be no computer. I am thinking of using LCD display.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Using a standard USB keyboard with PSoC 5LP may not be easy.
I've just tried to find USB HID samples, all I could find were for the mouse.
I've written a simple USB Keyboard program using other vendor's MCU and it was not easy,
but accepting an external USB Keyboard will be more difficult, IMHO.
Are you going to need all alphabet letters?
If you can survive with 4x4 (=20) or 5x5 (=25) keys,
considering Matrix Keys would be more practical.
moto
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Moto,
Firstly, can I use 6x5 = 30keys?
So, is it possible for me to do with the keyboard connected to the computer?
Keyboards ==> Computer ==> PSOC
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear eeEn-san,
If you connect a PC between the keyboard and PSoC you can connect almost any keyboard.
My point was if you connect the keyboard or keypad directly to the PSoC via USB,
then it's going to be a challenging project.
So what we need to confirm now is...
Which are you planning?
(1) Keyboard/Keypad === PC === PSoC
(2) Keyboard/keypad === PSoC === PC === (PC's) Keyboard
If you are going to do
(1) may be you can refer to my sample
tty_utils a utility sample for CLI type program
(2) please browse, something like
https://learn.adafruit.com/matrix-keypad?view=all
And find a matrix keypad you are going to use and let us know the product URL
so that we can be some help.
Best Regards,
13-Feb-2020
Motoo Tanaka
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi;
I don't want to use a computer.
I want to use Keyboard/keypad ==> PSoC
but I could not find a similar example project in this way.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you need a simple solution - you need a keyboard that supports PS / 2
Solution Options:
SPIS block interface for PS2 keyboard
Board of PC2 keyboard for PSoC
a simpler Matrix Keyboard you will find by searching this forum:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I found an old 4x4 matrix keypad from my drawer.
So I created a quick-simple sample.
Although it's a 4x4 matrix, I hope that the idea is same for 5x5 or 5x6 or whatever you are going to use.
schematic
Note: As you can see, this is a pretty dumb device, so the MCU must apply voltage to each ROWs and measure COLs.
So when ROW1_Write(1) and COL0_Read() == 1, SW_1 is pushed.
I prepared a couple of arrays to hold key status key[NUM_ROW][NUM_COL]
and mapped letter for each key letter[NUM_ROW][NUM_COL].
So when key[0][3] == 1, print 'A' instead of 1.
You can configure any letter mapping(s) as you like.
======================
#define NUM_ROW 4
#define NUM_COL 4
volatile uint8_t key[NUM_ROW][NUM_COL] = { 0u } ;
uint8_t letter[NUM_ROW][NUM_COL] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
} ;
======================
Pins
Tera Term log
main.c
==============
#include "project.h"
#include "stdio.h"
#define NUM_ROW 4
#define NUM_COL 4
volatile uint8_t key[NUM_ROW][NUM_COL] = { 0u } ;
uint8_t letter[NUM_ROW][NUM_COL] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
} ;
volatile int row_no = 0 ;
volatile int col_no = 0 ;
void scan_key_matrix(void)
{
switch(row_no) {
case 0: ROW0_Write(1) ; ROW1_Write(0) ; ROW2_Write(0) ; ROW3_Write(0) ; break ;
case 1: ROW0_Write(0) ; ROW1_Write(1) ; ROW2_Write(0) ; ROW3_Write(0) ; break ;
case 2: ROW0_Write(0) ; ROW1_Write(0) ; ROW2_Write(1) ; ROW3_Write(0) ; break ;
case 3: ROW0_Write(0) ; ROW1_Write(0) ; ROW2_Write(0) ; ROW3_Write(1) ; break ;
default: ROW0_Write(0) ; ROW1_Write(0) ; ROW2_Write(0) ; ROW3_Write(0) ; break ;
}
switch(col_no) {
case 0: key[row_no][col_no] = COL0_Read() ; break ;
case 1: key[row_no][col_no] = COL1_Read() ; break ;
case 2: key[row_no][col_no] = COL2_Read() ; break ;
case 3: key[row_no][col_no] = COL3_Read() ; break ;
}
col_no++ ;
if (col_no >= NUM_COL) {
col_no = 0 ;
row_no = (row_no + 1) % NUM_ROW ;
}
ROW0_Write(0) ;
ROW1_Write(0) ;
ROW2_Write(0) ;
ROW3_Write(0) ;
}
CY_ISR(my_tick_isr)
{
scan_key_matrix() ;
}
#define STR_LEN 64
char str[STR_LEN+1] ;
void print(char *str)
{
UART_PutString(str) ;
}
void printc(char c)
{
UART_PutChar(c) ;
}
void cls(void)
{
print("\033c") ; /* reset */
CyDelay(20) ;
print("\033[2J") ; /* clear screen */
CyDelay(20) ;
}
void splash(void)
{
cls() ;
print("5LP Timer 5Sec Test") ;
snprintf(str, STR_LEN, "(%s %s)\n", __DATE__, __TIME__) ;
print(str) ;
}
void init_hardware(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
UART_Start() ;
splash() ;
CySysTickStart() ;
CySysTickSetCallback(0, my_tick_isr) ;
}
void dump_key_matrix(void)
{
int col, row ;
for (row = 0 ; row < NUM_ROW ; row++) {
for (col = 0 ; col < NUM_COL ; col++) {
if (key[row][col]) {
snprintf(str, STR_LEN, "%c ", letter[row][col]) ;
print(str) ;
} else {
print("- ") ;
}
}
print("\n\r") ;
}
}
int main(void)
{
init_hardware() ;
for(;;)
{
cls() ;
dump_key_matrix() ;
CyDelay(1000) ;
}
}
==============
moto
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
The project makes your PSoC as a UART and a Keyboard from the viewpoint of the PC
but it will not let you connect an external keyboard.
Although it's depending on what you want to do with the keyboard,
IMHO, usually handling a USB keyboard is not an easy task.
Following URL is the USB HID source of Linux, please refer tree/root/driver/hid directory
hid\drivers - kernel/git/torvalds/linux.git - Linux kernel source tree
moto
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Motoo,
If Arduino can be operated with keyboard. I think it works in psoc too.
Keyboard PCB | Serial output | Alphabet Numbers Signs - YouTube
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Eemuh-san,
Yes, I think that it will work with PSoC, too.
moto
P.S. OOPS, I forgot to mention,
needless to say (write) someone needs to write the driver program.
Meantime, keyboard like below may work, too.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Eemuh-san,
Please refer to
I2C Full Keyboard Sample (CardKb)
Best Regards,
26-Feb-2020
Motoo Tanaka
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Motoo,
I also ordered M5Stack CardKB . Delivered approximately 15 days later.
when the cargo comes to me, i will try the project right away.
https://youtu.be/M6OcPC5g_eM ==> another project
Best Regards,