Загрузил(а) файлы в ''
This commit is contained in:
parent
88b55c0d90
commit
13d7246559
87
MASTER.ino
87
MASTER.ino
@ -9,6 +9,72 @@
|
|||||||
#define SPI_SCK 5
|
#define SPI_SCK 5
|
||||||
#define SPI_SS 2
|
#define SPI_SS 2
|
||||||
|
|
||||||
|
enum calculator_state
|
||||||
|
{
|
||||||
|
NUMBER_FIRST,
|
||||||
|
NUMBER_SECOND,
|
||||||
|
RESULT
|
||||||
|
};
|
||||||
|
enum calculator_op
|
||||||
|
{
|
||||||
|
NO_OP,
|
||||||
|
ADD,
|
||||||
|
SUB,
|
||||||
|
DIV,
|
||||||
|
MUL
|
||||||
|
};
|
||||||
|
struct calculator
|
||||||
|
{
|
||||||
|
// 1 число
|
||||||
|
int num1;
|
||||||
|
// 2 число
|
||||||
|
int num2;
|
||||||
|
// 3 операция
|
||||||
|
enum calculator_op operation;
|
||||||
|
// 4 результат
|
||||||
|
double result;
|
||||||
|
// 5 состояние атомата
|
||||||
|
enum calculator_state state;
|
||||||
|
};
|
||||||
|
|
||||||
|
void output_on_display(struct calculator * calc) {
|
||||||
|
char buffer[];
|
||||||
|
size_t size_buffer;
|
||||||
|
switch (state) {
|
||||||
|
case NUMBER_FIRST:
|
||||||
|
display_all_clear( 0, &buffer[0]);
|
||||||
|
SPI_MasterTransmit(&buffer[0], size_buffer);
|
||||||
|
displ1ay_add_simbol( , , &buffer[0]);
|
||||||
|
SPI_MasterTransmit(&buffer[0], 1);
|
||||||
|
break;
|
||||||
|
case NUMBER_SECOND:
|
||||||
|
display_all_clear();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
break;
|
||||||
|
case RESULT:
|
||||||
|
display_all_clear();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_draw_line();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
display_add_simbol();
|
||||||
|
SPI_MasterTransmit(&buffer[0], )
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_all_clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SPI_MasterInit(void)
|
void SPI_MasterInit(void)
|
||||||
@ -36,6 +102,7 @@ void SPI_MasterTransmit(char* buffer, size_t length)
|
|||||||
SPI_PORTX |= (1 << SPI_SS);
|
SPI_PORTX |= (1 << SPI_SS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte crc8(byte *data, int length) {
|
byte crc8(byte *data, int length) {
|
||||||
byte crc = 0x00;
|
byte crc = 0x00;
|
||||||
byte poly = 0x07; //полином для CRC
|
byte poly = 0x07; //полином для CRC
|
||||||
@ -63,17 +130,18 @@ void setup() {
|
|||||||
void loop() {
|
void loop() {
|
||||||
char buffer[] = {'a', 't', 'g', '1', 0};
|
char buffer[] = {'a', 't', 'g', '1', 0};
|
||||||
for (int y = 5; y < 21; y++) {
|
for (int y = 5; y < 21; y++) {
|
||||||
buffer[0]=0x06;
|
// buffer[0] = 0x06;
|
||||||
buffer[1]=3;
|
// buffer[1] = 3;
|
||||||
buffer[2]=y;
|
// buffer[2] = y;
|
||||||
buffer[3]=0x01;
|
// buffer[3] = 0x01;
|
||||||
buffer[4]=crc8(&buffer[0], 4);
|
// buffer[4] = crc8(&buffer[0], 4);
|
||||||
SPI_MasterTransmit(&buffer[0], 5);
|
SPI_MasterTransmit(&buffer[0], 5);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//очищение экранa
|
||||||
size_t display_all_clear(char color, uint8_t* buffer) {
|
size_t display_all_clear(char color, uint8_t* buffer) {
|
||||||
buffer[0] = 0x01;
|
buffer[0] = 0x01;
|
||||||
buffer[1] = color;
|
buffer[1] = color;
|
||||||
@ -81,6 +149,7 @@ size_t display_all_clear(char color, uint8_t* buffer){
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//выбор точки
|
||||||
size_t display_set_page(char point, uint8_t* buffer) {
|
size_t display_set_page(char point, uint8_t* buffer) {
|
||||||
buffer[0] = 0x02;
|
buffer[0] = 0x02;
|
||||||
buffer[1] = point;
|
buffer[1] = point;
|
||||||
@ -88,11 +157,12 @@ size_t display_set_page(char point, uint8_t* buffer){
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//добавление нового символа и его параметров
|
||||||
size_t display_add_simbol(char* str, size_t str_len, uint8_t* buffer) {
|
size_t display_add_simbol(char* str, size_t str_len, uint8_t* buffer) {
|
||||||
size_t idx;
|
size_t idx;
|
||||||
buffer[idx] = 0x04;
|
buffer[idx] = 0x04;
|
||||||
idx++;
|
idx++;
|
||||||
for(int si=0; i<str_len; i++) {
|
for (int i = 0; i < str_len; i++) {
|
||||||
buffer[idx] = str;
|
buffer[idx] = str;
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
@ -101,6 +171,7 @@ size_t display_add_simbol(char* str, size_t str_len, uint8_t* buffer){
|
|||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//удаление символа и его параметров
|
||||||
size_t display_del_simbol(char number, uint8_t* buffer) {
|
size_t display_del_simbol(char number, uint8_t* buffer) {
|
||||||
buffer[0] = 0x05;
|
buffer[0] = 0x05;
|
||||||
buffer[1] = number;
|
buffer[1] = number;
|
||||||
@ -108,6 +179,7 @@ size_t display_del_simbol(char number, uint8_t* buffer){
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//закрашивание пикселя
|
||||||
size_t display_draw_pixel(char x, char y, char color, uint8_t* buffer) {
|
size_t display_draw_pixel(char x, char y, char color, uint8_t* buffer) {
|
||||||
buffer[0] = 0x06;
|
buffer[0] = 0x06;
|
||||||
buffer[1] = x;
|
buffer[1] = x;
|
||||||
@ -117,6 +189,7 @@ size_t display_draw_pixel(char x,char y, char color, uint8_t* buffer){
|
|||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//рисует линию
|
||||||
size_t display_draw_line(char x1, char y1, char x2, char y2, char color, uint8_t* buffer) {
|
size_t display_draw_line(char x1, char y1, char x2, char y2, char color, uint8_t* buffer) {
|
||||||
buffer[0] = 0x07;
|
buffer[0] = 0x07;
|
||||||
buffer[1] = x1;
|
buffer[1] = x1;
|
||||||
@ -128,6 +201,7 @@ size_t display_draw_line(char x1,char y1, char x2, char y2, char color, uint8_t*
|
|||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//рисует круг
|
||||||
size_t display_draw_circle(char x, char y, char r, char color, uint8_t* buffer) {
|
size_t display_draw_circle(char x, char y, char r, char color, uint8_t* buffer) {
|
||||||
buffer[0] = 0x08;
|
buffer[0] = 0x08;
|
||||||
buffer[1] = x;
|
buffer[1] = x;
|
||||||
@ -138,6 +212,7 @@ size_t display_draw_circle(char x,char y, char r, char color, uint8_t* buffer){
|
|||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//рисует прямоугольник
|
||||||
size_t display_draw_rectangle(char x, char y, char height, char width, char color, uint8_t* buffer) {
|
size_t display_draw_rectangle(char x, char y, char height, char width, char color, uint8_t* buffer) {
|
||||||
buffer[0] = 0x09;
|
buffer[0] = 0x09;
|
||||||
buffer[1] = x;
|
buffer[1] = x;
|
||||||
|
Loading…
Reference in New Issue
Block a user