Skip to content
Snippets Groups Projects
Commit e2964cc0 authored by michael.divia's avatar michael.divia
Browse files

Right Keyboard Working

parent 2bde3a3e
Branches
No related tags found
No related merge requests found
script/key.png

809 B

script/key_R.png

803 B

script/key_R_long.png

1.11 KiB

script/key_long.png

1.1 KiB

from PIL import Image
import numpy as np
def png_to_c_array(png_file_path, output_file_path, array_name):
# Load the image
image = Image.open(png_file_path)
image = image.convert('RGB') # Ensure image is in RGB format
pixel_data = np.array(image)
# Get image dimensions
height, width, _ = pixel_data.shape
# Open the output file
with open(output_file_path, 'w') as f:
# Write the array declaration
f.write(f'static const unsigned char {array_name}[{height}][{width}][3] =\n')
f.write('{\n')
# Write the pixel data
for row in pixel_data:
f.write('\t{')
f.write(','.join(f'{{{r},{g},{b}}}' for r, g, b in row))
f.write('},\n')
# Close the array declaration
f.write('};\n')
# Example usage
png_file_path = 'key_R_long.png' # Input PNG file path
output_file_path = 'key.txt' # Output text file path
array_name = 'empty_key_long_r' # C array name
png_to_c_array(png_file_path, output_file_path, array_name)
......@@ -25,67 +25,17 @@
int main_master()
{
key keyboard[22];
key keyboard[LEFT_KEYBOARD_SIZE];
init_keyboard_l(keyboard);
uart_send_string("I'm the Master !\r\n", 18);
// Draw Keyboard
/*######################## 1 - 6 ########################*/
square(255, 255, 255, 239, 0, KEY_SIZE*6, 1);
for(int i = 0; i < 7; i++)
{
square(255, 255, 255, 239-KEY_SIZE, i*KEY_SIZE, 1, KEY_SIZE);
}
square(255, 255, 255, 239-KEY_SIZE, 0, KEY_SIZE*6, 1);
/*#######################################################*/
/*######################## QWERT ########################*/
for(int i = 0; i < 6; i++)
{
square(255, 255, 255, 239-(KEY_SIZE*2), KEY_SHIFT+i*KEY_SIZE, 1, KEY_SIZE);
}
square(255, 255, 255, 239-(KEY_SIZE*2), KEY_SHIFT, KEY_SIZE*5, 1);
/*#######################################################*/
/*######################## ASDFG ########################*/
square(255, 255, 255, 239-(KEY_SIZE*2), (KEY_SHIFT*2)+(KEY_SIZE*4), KEY_SIZE, 1);
for(int i = 0; i < 6; i++)
{
square(255, 255, 255, 239-(KEY_SIZE*3), (KEY_SHIFT*2)+i*KEY_SIZE, 1, KEY_SIZE);
}
square(255, 255, 255, 239-(KEY_SIZE*3), (KEY_SHIFT*2), KEY_SIZE*5, 1);
/*#######################################################*/
/*######################## YXCVB ########################*/
square(255, 255, 255, 239-(KEY_SIZE*3), (KEY_SHIFT*3)+(KEY_SIZE*4), KEY_SIZE, 1);
for(int i = 0; i < 6; i++)
{
square(255, 255, 255, 239-(KEY_SIZE*4), (KEY_SHIFT*3)+i*KEY_SIZE, 1, KEY_SIZE);
}
square(255, 255, 255, 239-(KEY_SIZE*4), (KEY_SHIFT*3), KEY_SIZE*5, 1);
/*#######################################################*/
/*######################## SHIFT ########################*/
square(255, 255, 255, 239-(KEY_SIZE*3), 0, SHIFT_WIDTH, 1);
square(255, 255, 255, 239-(KEY_SIZE*4), 0, 1, KEY_SIZE);
square(255, 255, 255, 239-(KEY_SIZE*4), 0, SHIFT_WIDTH, 1);
/*#######################################################*/
draw_keys_l();
int last_state = 0;
while(true)
while(1)
{
last_state = keypress(keyboard, last_state, 22);
last_state = keypress(keyboard, last_state, LEFT_KEYBOARD_SIZE);
}
return 0;
......@@ -93,11 +43,17 @@ int main_master()
int main_slave()
{
uart_send_string("I'm the Slave !\r\n", 18);
key keyboard[RIGHT_KEYBOARD_SIZE];
init_keyboard_r(keyboard);
// Draw Keyboard
draw_keys_r();
int last_state = 0;
while(1)
{
last_state = keypress(keyboard, last_state, RIGHT_KEYBOARD_SIZE);
}
return 0;
......
......@@ -6,6 +6,9 @@
*/
#include "keyboard.h"
#include "lcd.h"
#include "touch.h"
#include "uart.h"
extern int screenTouch;
......@@ -38,6 +41,33 @@ void init_keyboard_l(key keyboard[])
keyboard[21] = (key){"b", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*5), 320-SHIFT_WIDTH-(KEY_SIZE*4)};
}
void init_keyboard_r(key keyboard[])
{
keyboard[0] = (key){"7", false, 240-KEY_SIZE, 240, (KEY_SHIFT*3), (KEY_SHIFT*3)+KEY_SIZE};
keyboard[1] = (key){"8", false, 240-KEY_SIZE, 240, (KEY_SHIFT*3)+KEY_SIZE, (KEY_SHIFT*3)+(KEY_SIZE*2)};
keyboard[2] = (key){"9", false, 240-KEY_SIZE, 240, (KEY_SHIFT*3)+(KEY_SIZE*2), (KEY_SHIFT*3)+(KEY_SIZE*3)};
keyboard[3] = (key){"0", false, 240-KEY_SIZE, 240, (KEY_SHIFT*3)+(KEY_SIZE*3), (KEY_SHIFT*3)+(KEY_SIZE*4)};
keyboard[4] = (key){"del", false, 240-KEY_SIZE, 240, (KEY_SHIFT*3)+(KEY_SIZE*4), 320};
keyboard[5] = (key){"z", false, 240-(KEY_SIZE*2), 240-KEY_SIZE, 0, KEY_SIZE};
keyboard[6] = (key){"u", false, 240-(KEY_SIZE*2), 240-KEY_SIZE, KEY_SIZE, (KEY_SIZE*2)};
keyboard[7] = (key){"i", false, 240-(KEY_SIZE*2), 240-KEY_SIZE, (KEY_SIZE*2), (KEY_SIZE*3)};
keyboard[8] = (key){"o", false, 240-(KEY_SIZE*2), 240-KEY_SIZE, (KEY_SIZE*3), (KEY_SIZE*4)};
keyboard[9] = (key){"p", false, 240-(KEY_SIZE*2), 240-KEY_SIZE, (KEY_SIZE*4), (KEY_SIZE*5)};
keyboard[10] = (key){"h", false, 240-(KEY_SIZE*3), 240-(KEY_SIZE*2), KEY_SHIFT, KEY_SHIFT+KEY_SIZE};
keyboard[11] = (key){"j", false, 240-(KEY_SIZE*3), 240-(KEY_SIZE*2), KEY_SHIFT+KEY_SIZE, KEY_SHIFT+(KEY_SIZE*2)};
keyboard[12] = (key){"k", false, 240-(KEY_SIZE*3), 240-(KEY_SIZE*2), KEY_SHIFT+(KEY_SIZE*2), KEY_SHIFT+(KEY_SIZE*3)};
keyboard[13] = (key){"l", false, 240-(KEY_SIZE*3), 240-(KEY_SIZE*2), KEY_SHIFT+(KEY_SIZE*3), KEY_SHIFT+(KEY_SIZE*4)};
keyboard[14] = (key){"enter", false, 240-(KEY_SIZE*3), 240-(KEY_SIZE*2), KEY_SHIFT+(KEY_SIZE*4), KEY_SHIFT+(KEY_SIZE*4)+SHIFT_WIDTH};
keyboard[15] = (key){"n", false, 240-(KEY_SIZE*4), 240-(KEY_SIZE*3), KEY_SHIFT*2, (KEY_SHIFT*2)+KEY_SIZE};
keyboard[16] = (key){"m", false, 240-(KEY_SIZE*4), 240-(KEY_SIZE*3), (KEY_SHIFT*2)+KEY_SIZE, (KEY_SHIFT*2)+(KEY_SIZE*2)};
keyboard[17] = (key){",", false, 240-(KEY_SIZE*4), 240-(KEY_SIZE*3), (KEY_SHIFT*2)+(KEY_SIZE*2), (KEY_SHIFT*2)+(KEY_SIZE*3)};
keyboard[18] = (key){".", false, 240-(KEY_SIZE*4), 240-(KEY_SIZE*3), (KEY_SHIFT*2)+(KEY_SIZE*3), (KEY_SHIFT*2)+(KEY_SIZE*4)};
keyboard[19] = (key){"capslock", false, 240-(KEY_SIZE*4), 240-(KEY_SIZE*3), (KEY_SHIFT*2)+(KEY_SIZE*4), (KEY_SHIFT*2)+(KEY_SIZE*4)+SHIFT_WIDTH};
}
int keypress(key keyboard[], int last_state, int keyboard_size)
{
if(screenTouch != last_state)
......@@ -75,3 +105,177 @@ int keypress(key keyboard[], int last_state, int keyboard_size)
return last_state;
}
void draw_keys_l()
{
set_window(240-KEY_SIZE, 0, KEY_SIZE*6, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*6; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_l[x%KEY_SIZE][y][0],empty_key_l[x%KEY_SIZE][y][1],empty_key_l[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(240-(KEY_SIZE*2), KEY_SHIFT, KEY_SIZE*5, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*5; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_l[x%KEY_SIZE][y][0],empty_key_l[x%KEY_SIZE][y][1],empty_key_l[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(240-(KEY_SIZE*3), (KEY_SHIFT*2), KEY_SIZE*5, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*5; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_l[x%KEY_SIZE][y][0],empty_key_l[x%KEY_SIZE][y][1],empty_key_l[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(240-(KEY_SIZE*4), 0, SHIFT_WIDTH, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < SHIFT_WIDTH; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_long_l[x][y][0],empty_key_long_l[x][y][1],empty_key_long_l[x][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(240-(KEY_SIZE*4), SHIFT_WIDTH, KEY_SIZE*5, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*5; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_l[x%KEY_SIZE][y][0],empty_key_l[x%KEY_SIZE][y][1],empty_key_l[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
}
void draw_keys_r()
{
set_window(0, SHIFT_WIDTH, (KEY_SIZE*4), KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*4; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_r[x%KEY_SIZE][y][0],empty_key_r[x%KEY_SIZE][y][1],empty_key_r[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(0, 0, SHIFT_WIDTH, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < SHIFT_WIDTH; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_long_r[x][y][0],empty_key_long_r[x][y][1],empty_key_long_r[x][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(KEY_SIZE, SHIFT_WIDTH+(KEY_SHIFT/2), (KEY_SIZE*5), KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*5; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_r[x%KEY_SIZE][y][0],empty_key_r[x%KEY_SIZE][y][1],empty_key_r[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(KEY_SIZE*2, SHIFT_WIDTH+(KEY_SHIFT*2), (KEY_SIZE*4), KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*4; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_r[x%KEY_SIZE][y][0],empty_key_r[x%KEY_SIZE][y][1],empty_key_r[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(KEY_SIZE*2, KEY_SHIFT*2, SHIFT_WIDTH, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < SHIFT_WIDTH; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_long_r[x][y][0],empty_key_long_r[x][y][1],empty_key_long_r[x][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(KEY_SIZE*3, SHIFT_WIDTH+KEY_SHIFT, (KEY_SIZE*4), KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < KEY_SIZE*4; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_r[x%KEY_SIZE][y][0],empty_key_r[x%KEY_SIZE][y][1],empty_key_r[x%KEY_SIZE][y][2]);
}
}
lcd_write_cmd(0x00);
set_window(KEY_SIZE*3, KEY_SHIFT, SHIFT_WIDTH, KEY_SIZE);
lcd_write_cmd(0x2C);
for (short x = 0; x < SHIFT_WIDTH; x++)
{
for (short y = 0; y < KEY_SIZE; y++)
{
RGB(empty_key_long_r[x][y][0],empty_key_long_r[x][y][1],empty_key_long_r[x][y][2]);
}
}
lcd_write_cmd(0x00);
}
This diff is collapsed.
......@@ -18,6 +18,9 @@ void lcd_init();
void vertical_scroll();
void black_screen();
void set_window(uint16_t start_x, uint16_t start_y, uint16_t height, uint16_t width);
void RGB(int R, int G, int B);
void lcd_write_cmd(uint8_t cmd);
void square(int R, int G, int B, uint16_t start_x, uint16_t start_y, uint16_t height, uint16_t width);
void ILI9341_Initial(void);
void delay(int ms);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment