[Open source] Multifunctioneel weegapparaat

——Van het DWIN-ontwikkelaarsforum

In dit nummer presenteren we de bekroonde open source-case van DWIN Developer Forum - Multi-function Weigher. De ingenieur maakt gebruik van een 4-inch COF slim scherm, en door de data-interactie tussen de T5L OS-kern en de HX711-module en een druksensorset van 5 kg kunnen gebruikers eenvoudig de telweergavefuncties realiseren, zoals gewicht, eenheidsprijs, totale prijs, tarra, enz. ., evenals de functies van tellen, het volgen van gewichtsveranderingscurves en het corrigeren van de nauwkeurigheid van de weger, enz., zodat u eenvoudig kunt schakelen tussen verschillende toepassingsscenario's en kunt genieten van een handige en efficiënte weegervaring.

1. UI-ontwikkeling

f26af533d43728cd210e0f7af5e7acc

2.C51 Ontwerp

Een deel van de referentiecode voor de weger om de prijsfunctie te implementeren is als volgt:

// Prijzenpagina===================

#define VALUATION_UNIT_PRICE_ADDR 0x1010

#define VALUATION_GRAM_ADDR 0x1000

#define VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t waardering_decorticate = 0; // Prijzen Tarragewicht

uint32_t waardering_eenheidsprijs = 0; //Eenheid prijs

// Eenheidsprijs vernieuwen

void page_valuation_unit_price_refresh()

{

uint8_t test_display[10] = {0};

if(waardering_eenheidsprijs

{

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

test_display[1] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(waardering_eenheidsprijs

{

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

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

test_display[2] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(waardering_eenheidsprijs

{

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

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

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

test_display[3] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(waardering_eenheidsprijs

{

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

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

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

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

test_display[4] = '.';

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

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

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

}

 

// Gewicht vernieuwen

void page_valuation_weight_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if(gram_waarde >= waardering_decorticate)

{

gram_display = gram_waarde - waardering_decorticate;

als(gramweergave

{

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

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

anders als(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);

}

anders als(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);

}

anders als(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);

}

anders als(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);

}

}

anders

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_display, 3);

}

}

 

// Totale prijs vernieuwen

void page_valuation_price_refresh()

{

uint32_t prijs_waarde = 0;

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

if(gram_waarde >= waardering_decorticate)

{

prijs_waarde = (gram_waarde - waardering_decorticate) * waardering_eenheidsprijs * 2/1000;

als(prijs_waarde

{

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

test_display[1] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

anders als(prijs_waarde

{

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

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

test_display[2] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

anders als(prijs_waarde

{

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

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

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

test_display[3] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

anders als(prijs_waarde

{

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

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

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

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

test_display[4] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

anders

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

void page_valuation_decorticate()

{

waardering_decorticate = gram_waarde;

page_valuation_weight_refresh();

}

ongeldige pagina_waardering_1()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 1;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_2()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 2;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_3()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 3;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_4()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 4;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_5()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 5;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_6()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 6;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_7()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 7;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_8()

{

if(waardering_eenheidsprijs

{

waarderingseenheidsprijs = waarderingseenheidsprijs * 10 + 8;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_9()

{

if(waardering_eenheidsprijs

{

waardering_eenheidsprijs = waardering_eenheidsprijs * 10 + 9;

page_valuation_unit_price_refresh();

}

}

ongeldige pagina_waardering_0()

{

if(waardering_eenheidsprijs

{

waarderingseenheidsprijs = waarderingseenheidsprijs * 10 + 0;

page_valuation_unit_price_refresh();

}

}

void page_valuation_back()

{

waardering_eenheidsprijs = waardering_eenheidsprijs / 10;

page_valuation_unit_price_refresh();

}

void page_valuation_clear()

{

waardering_eenheidsprijs = 0;

page_valuation_unit_price_refresh();

}


Posttijd: 28 april 2024