[Código abierto] Dispositivo de pesaje multifuncional

——Del foro de desarrolladores de DWIN

En este número, impulsamos el galardonado caso de código abierto del DWIN Developer Forum: Pesadora multifunción. El ingeniero adopta una pantalla inteligente COF de 4 pulgadas y, a través de la interacción de datos entre el núcleo del sistema operativo T5L y el módulo HX711 y el conjunto de sensores de presión de 5 kg, los usuarios pueden realizar fácilmente las funciones de visualización de conteo, como peso, precio unitario, precio total, tara, etc. ., así como las funciones de conteo, seguimiento de curvas de cambio de peso y corrección de la precisión de la pesadora, etc., para que sea fácil cambiar entre diferentes escenarios de aplicación para disfrutar de una experiencia de pesaje conveniente y eficiente.

1. Desarrollo de la interfaz de usuario

f26af533d43728cd210e0f7af5e7acc

2.C51 Diseño

Parte del código de referencia para que la pesadora implemente la función de fijación de precios es el siguiente:

// Página de precios===================

#definir VALUATION_UNIT_PRICE_ADDR 0x1010

#definir VALUATION_GRAM_ADDR 0x1000

#definir VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valoración_decorticate = 0; // Precio Peso Tara

uint32_t valoración_unit_price = 0; //Precio unitario

// Actualización del precio unitario

anular page_valuación_unit_price_refresh()

{

uint8_t test_display[10] = {0};

si(valoración_precio_unitario

{

test_display[0] = valoración_unit_price / 100 % 10 + 0x30;

test_display[1] = '.';

test_display[2] = valoración_precio_unit / 10 % 10 + 0x30;

test_display[3] = valoración_precio_unit / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

de lo contrario si (valoración_precio_unit

{

test_display[0] = valoración_unit_price / 1000 % 10 + 0x30;

test_display[1] = valoración_precio_unit / 100 % 10 + 0x30;

test_display[2] = '.';

test_display[3] = valoración_precio_unit / 10 % 10 + 0x30;

test_display[4] = valoración_precio_unit / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

de lo contrario si (valoración_precio_unit

{

test_display[0] = valoración_precio_unit / 10000 % 10 + 0x30;

test_display[1] = valoración_unit_price / 1000 % 10 + 0x30;

test_display[2] = valoración_unit_price / 100 % 10 + 0x30;

test_display[3] = '.';

test_display[4] = valoración_precio_unit / 10 % 10 + 0x30;

test_display[5] = valoración_precio_unit / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

de lo contrario si (valoración_precio_unit

{

test_display[0] = valoración_unit_price / 100000 % 10 + 0x30;

test_display[1] = valoración_unit_price / 10000 % 10 + 0x30;

test_display[2] = valoración_unit_price / 1000 % 10 + 0x30;

test_display[3] = valoración_precio_unit / 100 % 10 + 0x30;

test_display[4] = '.';

test_display[5] = valoración_unit_price / 10 % 10 + 0x30;

test_display[6] = valoración_precio_unit / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

}

 

// Actualización de peso

anular page_valuación_peso_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if(valor_gramo >= valoración_decorticar)

{

gram_display = gram_value - valoración_decorticate;

si(gram_display

{

test_display[0] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

de lo contrario si (gram_display

{

test_display[0] = gram_display / 10 % 10 + 0x30;

test_display[1] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

de lo contrario si (gram_display

{

test_display[0] = gram_display / 100 % 10 + 0x30;

test_display[1] = gram_display / 10 % 10 + 0x30;

test_display[2] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

de lo contrario si (gram_display

{

test_display[0] = gram_display / 1000 % 10 + 0x30;

test_display[1] = gram_display / 100 % 10 + 0x30;

test_display[2] = gram_display / 10 % 10 + 0x30;

test_display[3] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

de lo contrario si (gram_display

{

test_display[0] = gram_display / 10000 % 10 + 0x30;

test_display[1] = gram_display / 1000 % 10 + 0x30;

test_display[2] = gram_display / 100 % 10 + 0x30;

test_display[3] = gram_display / 10 % 10 + 0x30;

test_display[4] = gram_display / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

demás

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

 

// Actualización del precio total

anular page_valuación_precio_refresh()

{

uint32_t precio_valor = 0;

uint8_t test_display[10] = {0x30, '.', 0x30, 0x30};

if(valor_gramo >= valoración_decorticar)

{

valor_precio = (valor_gramo - valoración_decorticar) * precio_unidad_valoración * 2/1000;

si(valor_precio

{

pantalla_prueba[0] = valor_precio / 100 % 10 + 0x30;

test_display[1] = '.';

pantalla_prueba[2] = valor_precio / 10 % 10 + 0x30;

pantalla_prueba[3] = valor_precio / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

de lo contrario si (precio_valor

{

pantalla_prueba[0] = valor_precio / 1000 % 10 + 0x30;

pantalla_prueba[1] = valor_precio / 100 % 10 + 0x30;

test_display[2] = '.';

pantalla_prueba[3] = valor_precio / 10 % 10 + 0x30;

pantalla_prueba[4] = valor_precio / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

de lo contrario si (precio_valor

{

pantalla_prueba[0] = valor_precio / 10000 % 10 + 0x30;

pantalla_prueba[1] = valor_precio / 1000 % 10 + 0x30;

pantalla_prueba[2] = valor_precio / 100 % 10 + 0x30;

test_display[3] = '.';

pantalla_prueba[4] = valor_precio / 10 % 10 + 0x30;

pantalla_prueba[5] = valor_precio / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

de lo contrario si (precio_valor

{

pantalla_prueba[0] = valor_precio / 100000 % 10 + 0x30;

pantalla_prueba[1] = valor_precio / 10000 % 10 + 0x30;

pantalla_prueba[2] = valor_precio / 1000 % 10 + 0x30;

pantalla_prueba[3] = valor_precio / 100 % 10 + 0x30;

test_display[4] = '.';

pantalla_prueba[5] = valor_precio / 10 % 10 + 0x30;

pantalla_prueba[6] = valor_precio / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

demás

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

página vacía_valoración_decorticate()

{

valoración_decorticate = valor_gramo;

page_valuación_peso_refresh();

}

anular página_valoración_1()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 1;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_2()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 2;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_3()

{

if(valoración_precio_unitario

{

valoración_precio_unit = valoración_precio_unit * 10 + 3;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_4()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 4;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_5()

{

if(valoración_precio_unitario

{

valoración_precio_unit = valoración_precio_unit * 10 + 5;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_6()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 6;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_7()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 7;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_8()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 8;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_9()

{

if(valoración_precio_unitario

{

valoración_precio_unit = valoración_precio_unit * 10 + 9;

page_valuación_unit_price_refresh();

}

}

anular página_valoración_0()

{

if(valoración_precio_unitario

{

precio_unitario de valoración = precio_unitario de valoración * 10 + 0;

page_valuación_unit_price_refresh();

}

}

anular page_valuación_back()

{

valoración_precio_unit = valoración_precio_unit / 10;

page_valuación_unit_price_refresh();

}

anular page_valuación_clear()

{

valoración_precio_unit = 0;

page_valuación_unit_price_refresh();

}


Hora de publicación: 28-abr-2024