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

Left Keyboard Working

parent f024e4e2
No related branches found
No related tags found
No related merge requests found
......@@ -21,16 +21,13 @@
#include "lcd.h"
#include "i2c.h"
#include "touch.h"
#define KEY_SIZE 50
#define KEY_SHIFT 20
#define SHIFT_WIDTH (KEY_SHIFT*3)
extern int screenTouch;
#include "keyboard.h"
int main_master()
{
key keyboard[22];
init_keyboard_l(keyboard);
uart_send_string("I'm the Master !\r\n", 18);
// Draw Keyboard
......@@ -84,13 +81,11 @@ int main_master()
square(255, 255, 255, 239-(KEY_SIZE*4), 0, SHIFT_WIDTH, 1);
/*#######################################################*/
int last_state = 0;
while(true)
{
if(screenTouch)
{
touch_get_values();
screenTouch=0;
}
last_state = keypress(keyboard, last_state, 22);
}
return 0;
......
/*
* keyboard.c
*
* Created on: 7 juin 2024
* Author: padi
*/
#include "keyboard.h"
extern int screenTouch;
void init_keyboard_l(key keyboard[])
{
keyboard[0] = (key){"1", false, 0, KEY_SIZE, 320-KEY_SIZE, 320};
keyboard[1] = (key){"2", false, 0, KEY_SIZE, 320-(KEY_SIZE*2), 320-KEY_SIZE};
keyboard[2] = (key){"3", false, 0, KEY_SIZE, 320-(KEY_SIZE*3), 320-(KEY_SIZE*2)};
keyboard[3] = (key){"4", false, 0, KEY_SIZE, 320-(KEY_SIZE*4), 320-(KEY_SIZE*3)};
keyboard[4] = (key){"5", false, 0, KEY_SIZE, 320-(KEY_SIZE*5), 320-(KEY_SIZE*4)};
keyboard[5] = (key){"6", false, 0, KEY_SIZE, 320-(KEY_SIZE*6), 320-(KEY_SIZE*5)};
keyboard[6] = (key){"q", false, KEY_SIZE, (KEY_SIZE*2), 320-KEY_SIZE-KEY_SHIFT, 320-KEY_SHIFT};
keyboard[7] = (key){"w", false, KEY_SIZE, (KEY_SIZE*2), 320-(KEY_SIZE*2)-KEY_SHIFT, 320-KEY_SIZE-KEY_SHIFT};
keyboard[8] = (key){"e", false, KEY_SIZE, (KEY_SIZE*2), 320-(KEY_SIZE*3)-KEY_SHIFT, 320-(KEY_SIZE*2)-KEY_SHIFT};
keyboard[9] = (key){"r", false, KEY_SIZE, (KEY_SIZE*2), 320-(KEY_SIZE*4)-KEY_SHIFT, 320-(KEY_SIZE*3)-KEY_SHIFT};
keyboard[10] = (key){"t", false, KEY_SIZE, (KEY_SIZE*2), 320-(KEY_SIZE*5)-KEY_SHIFT, 320-(KEY_SIZE*4)-KEY_SHIFT};
keyboard[11] = (key){"a", false, (KEY_SIZE*2), (KEY_SIZE*3), 320-KEY_SIZE-(KEY_SHIFT*2), 320-(KEY_SHIFT*2)};
keyboard[12] = (key){"s", false, (KEY_SIZE*2), (KEY_SIZE*3), 320-(KEY_SIZE*2)-(KEY_SHIFT*2), 320-KEY_SIZE-(KEY_SHIFT*2)};
keyboard[13] = (key){"d", false, (KEY_SIZE*2), (KEY_SIZE*3), 320-(KEY_SIZE*3)-(KEY_SHIFT*2), 320-(KEY_SIZE*2)-(KEY_SHIFT*2)};
keyboard[14] = (key){"f", false, (KEY_SIZE*2), (KEY_SIZE*3), 320-(KEY_SIZE*4)-(KEY_SHIFT*2), 320-(KEY_SIZE*3)-(KEY_SHIFT*2)};
keyboard[15] = (key){"g", false, (KEY_SIZE*2), (KEY_SIZE*3), 320-(KEY_SIZE*5)-(KEY_SHIFT*2), 320-(KEY_SIZE*4)-(KEY_SHIFT*2)};
keyboard[16] = (key){"capslock", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH, 320};
keyboard[17] = (key){"y", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-KEY_SIZE, 320-SHIFT_WIDTH};
keyboard[18] = (key){"x", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*2), 320-SHIFT_WIDTH-KEY_SIZE};
keyboard[19] = (key){"c", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*3), 320-SHIFT_WIDTH-(KEY_SIZE*2)};
keyboard[20] = (key){"v", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*3)};
keyboard[21] = (key){"b", false, (KEY_SIZE*3), (KEY_SIZE*4), 320-SHIFT_WIDTH-(KEY_SIZE*5), 320-SHIFT_WIDTH-(KEY_SIZE*4)};
}
int keypress(key keyboard[], int last_state, int keyboard_size)
{
if(screenTouch != last_state)
{
last_state = screenTouch;
int values[2];
touch_get_values(values);
for(int i = 0; i < keyboard_size; i++)
{
if(values[0] > keyboard[i].start_x && values[0] < keyboard[i].end_x && values[1] > keyboard[i].start_y && values[1] < keyboard[i].end_y)
{
keyboard[i].pressed = last_state;
char buf[20];
int size = 0;
if(keyboard[i].pressed)
{
size = snprintf(buf, sizeof(buf), "%s./DOWN\r\n", keyboard[i].key);
}
else
{
size = snprintf(buf, sizeof(buf), "%s./UP\r\n", keyboard[i].key);
}
uart_send_string(buf, size);
break;
}
}
}
return last_state;
}
/*
* keyboard.h
*
* Created on: 7 juin 2024
* Author: padi
*/
#ifndef KEYBOARD_H_
#define KEYBOARD_H_
#include <stdbool.h>
#include "uart.h"
#include "touch.h"
#define KEY_SIZE 50
#define KEY_SHIFT 20
#define SHIFT_WIDTH (KEY_SHIFT*3)
// X and Y coordinate does not correspond to display but to touch screen coordinates
typedef struct key
{
char *key;
bool pressed;
int start_x;
int end_x;
int start_y;
int end_y;
} key;
void init_keyboard_l(key keyboard[]);
int keypress(key keyboard[], int last_state, int keyboard_size);
#endif /* KEYBOARD_H_ */
......@@ -41,7 +41,7 @@ void touch_init()
uart_send_string("Touch Screen Initialized !\n\r", 28);
}
void touch_get_values()
void touch_get_values(int* values)
{
uint8_t value_xl[1] = {0};
uint8_t value_yh[1] = {0};
......@@ -53,7 +53,8 @@ void touch_get_values()
uint16_t value_y = value_yl[0] | ((value_yh[0] & 0b111) << 8);
printf("%d / %d \n",value_xl[0], value_y);
values[0] = value_xl[0];
values[1] = value_y;
}
void EINT3_IRQHandler(void)
......
......@@ -15,6 +15,6 @@
#include "uart.h"
void touch_init();
void touch_get_values();
void touch_get_values(int* values);
#endif /* TOUCH_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment