From 6f17b85fbd1c65a65afcbdf3e3a637a9272b1a64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=80=D0=B8=D1=81=D1=82=D0=B8=D0=BD=D0=B0=20=D0=91?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Mon, 29 May 2023 17:27:39 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MASTER.ino | 114 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 84 insertions(+), 30 deletions(-) diff --git a/MASTER.ino b/MASTER.ino index f090369..797df85 100644 --- a/MASTER.ino +++ b/MASTER.ino @@ -17,8 +17,8 @@ enum calculator_state }; enum calculator_op { - NO_OP, - ADD, + NO_OP, //0 + ADD, // 1 SUB, DIV, MUL @@ -38,41 +38,92 @@ struct calculator }; void output_on_display(struct calculator * calc) { - char buffer[]; - size_t size_buffer; + char buffer[8]; 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); + size_t b_size = display_all_clear(0, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + //первое число + char[12] string_num; + itoa(calc.num1, &string_num, 10); + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); 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], ) + size_t b_size = display_all_clear(0, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + //первое число + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + // операция + switch (calc.operation) { + case NO_OP: + break; + case ADD: + b_size = display_add_simbol("+", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case SUB: + b_size = display_add_simbol("-", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case DIV: + b_size = display_add_simbol("/", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case MUL: + b_size = display_add_simbol("*", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + } + // второе число + char[12] string_num; + itoa(calc.num2, &string_num, 10); + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); 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], ) + size_t b_size = display_all_clear(0, size_buffer); + SPI_MasterTransmit(&buffer[0], b_size); + // первое число + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + // операция + switch (calc.operation) { + case NO_OP: + break; + case ADD: + b_size = display_add_simbol("+", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case SUB: + b_size = display_add_simbol("-", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case DIV: + b_size = display_add_simbol("/", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + case MUL: + b_size = display_add_simbol("*", 1, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + break; + } + // второе число + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + // линия + b_size = display_draw_line( , , , , 0, &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); + // результат + char[12] string_num; + itoa(calc.result, &string_num, 10); + b_size = display_add_simbol(&string_num, strlen(string_num), &buffer[0]); + SPI_MasterTransmit(&buffer[0], b_size); break; default: - display_all_clear(); + display_all_clear(0, size_buffer); } } @@ -142,10 +193,12 @@ void loop() { } //очищение экранa -size_t display_all_clear(char color, uint8_t* buffer) { +size_t display_all_clear(char color, uint8_t* buffer, size_t *size_b) { buffer[0] = 0x01; buffer[1] = color; buffer[2] = crc8(&buffer[0], 2); + // int a[17]; + // size_t n = sizeof(a) / sizeof(a[0]); return 3; } @@ -154,6 +207,7 @@ size_t display_set_page(char point, uint8_t* buffer) { buffer[0] = 0x02; buffer[1] = point; buffer[2] = crc8(&buffer[0], 2); + return 3; }