[Open source] Appareil de pesée multifonctionnel

——Depuis le forum des développeurs DWIN

Dans ce numéro, nous présentons le cas open source primé du DWIN Developer Forum - Multi-function Weigher. L'ingénieur adopte un écran intelligent COF de 4 pouces, et grâce à l'interaction des données entre le noyau T5L OS et le module HX711 et l'ensemble de capteurs de pression de 5 kg, les utilisateurs peuvent facilement réaliser les fonctions d'affichage de comptage telles que le poids, le prix unitaire, le prix total, la tare, etc. ., ainsi que les fonctions de comptage, de suivi des courbes de changement de poids et de correction de la précision de la peseuse, etc., de sorte qu'il soit facile de basculer entre différents scénarios d'application pour profiter d'une expérience de pesage pratique et efficace.

1. Développement de l'interface utilisateur

f26af533d43728cd210e0f7af5e7acc

2.Conception C51

Une partie du code de référence permettant à la peseuse de mettre en œuvre la fonction de tarification est la suivante :

// Page de tarification ===================

#définir VALUATION_UNIT_PRICE_ADDR 0x1010

#définir VALUATION_GRAM_ADDR 0x1000

#définir VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t évaluation_decorticate = 0 ; // Tare Poids

uint32_t évaluation_unit_price = 0 ; //Prix unitaire

// Actualisation du prix unitaire

annuler page_évaluation_unit_price_refresh()

{

uint8_t test_display[10] = {0} ;

si (évaluation_unit_price

{

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

test_display[1] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

sinon si (évaluation_unit_price

{

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

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

test_display[2] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

sinon si (évaluation_unit_price

{

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

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

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

test_display[3] = '.';

test_display[4] = évaluation_unit_price / 10 % 10 + 0x30 ;

test_display[5] = évaluation_unit_price / 1 % 10 + 0x30 ;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

sinon si (évaluation_unit_price

{

test_display[0] = évaluation_unit_price / 100000 % 10 + 0x30 ;

test_display[1] = évaluation_unit_price / 10000 % 10 + 0x30 ;

test_display[2] = évaluation_unit_price / 1000 % 10 + 0x30 ;

test_display[3] = évaluation_unit_price / 100 % 10 + 0x30 ;

test_display[4] = '.';

test_display[5] = évaluation_unit_price / 10 % 10 + 0x30 ;

test_display[6] = évaluation_unit_price / 1 % 10 + 0x30 ;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

}

 

// Actualisation du poids

annuler page_évaluation_weight_refresh()

{

uint8_t test_display[10] = {0x30} ;

uint32_t gram_display = 0 ;

si (gram_value >= évaluation_decorticate)

{

gram_display = gram_value - évaluation_decorticate ;

si (gram_display

{

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

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

sinon 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);

}

sinon 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);

}

sinon 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);

}

sinon 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);

}

}

autre

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

 

// Actualisation du prix total

annuler page_évaluation_price_refresh()

{

uint32_t valeur_prix = 0 ;

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

si (gram_value >= évaluation_decorticate)

{

price_value = (gram_value - valuation_decorticate) * valuation_unit_price * 2/1000 ;

si (valeur_prix

{

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

test_display[1] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

sinon si (price_value

{

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

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

test_display[2] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

sinon si (price_value

{

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

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

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

test_display[3] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

sinon si (value_value

{

test_display[0] = valeur_prix / 100000 % 10 + 0x30 ;

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

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

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

test_display[4] = '.';

test_display[5] = valeur_prix / 10 % 10 + 0x30 ;

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

autre

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

annuler page_évaluation_decorticate()

{

évaluation_decorticate = gram_value ;

page_évaluation_weight_refresh();

}

annuler page_évaluation_1()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 1 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_2()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 2 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_3()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 3 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_4()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 4 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_5()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 5 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_6()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 6 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_7()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 7 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_8()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 8 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_9()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 9 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_0()

{

si (évaluation_unit_price

{

évaluation_unit_price = évaluation_unit_price * 10 + 0 ;

page_évaluation_unit_price_refresh();

}

}

annuler page_évaluation_back()

{

évaluation_unit_price = évaluation_unit_price / 10 ;

page_évaluation_unit_price_refresh();

}

annuler page_évaluation_clear()

{

évaluation_unit_price = 0 ;

page_évaluation_unit_price_refresh();

}


Heure de publication : 28 avril 2024