[Otvorený zdroj] Multifunkčné vážiace zariadenie

——Z fóra vývojárov DWIN

V tomto vydaní uvádzame ocenený open-source prípad DWIN Developer Forum - Multifunkčná váha. Inžinier používa 4-palcovú inteligentnú obrazovku COF a prostredníctvom dátovej interakcie medzi jadrom T5L OS a modulom HX711 a sadou 5 kg tlakového senzora môžu používatelia ľahko realizovať funkcie zobrazenia počítania, ako je hmotnosť, jednotková cena, celková cena, tara atď. ., ako aj funkcie počítania, sledovania kriviek zmeny hmotnosti a korekcie presnosti váh atď., takže je ľahké prepínať medzi rôznymi aplikačnými scenármi a vychutnať si pohodlné a efektívne váženie.

1. Vývoj používateľského rozhrania

f26af533d43728cd210e0f7af5e7acc

2.C51 Dizajn

Časť referenčného kódu pre váhy na implementáciu funkcie oceňovania je nasledovná:

// Cenová stránka====================

#define VALUATION_UNIT_PRICE_ADDR 0x1010

#define VALUATION_GRAM_ADDR 0x1000

#define VALUATION_TOTAL_PRICES_ADDR 0x1020

uint32_t valuation_decorticate = 0; // Cena Tare Weight

uint32_t valuation_unit_price = 0; //Jednotková cena

// Obnovenie jednotkovej ceny

void page_valuation_unit_price_refresh()

{

uint8_t test_display[10] = {0};

if(valuation_unit_price

{

test_display[0] = jednotková_cena_hodnotenia / 100 % 10 + 0x30;

test_display[1] = '.';

test_display[2] = jednotková_cena_hodnotenia / 10 % 10 + 0x30;

test_display[3] = jednotková_cena_hodnotenia / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(hodnotová_jednotková_cena

{

test_display[0] = jednotková_cena_hodnotenia / 1000 % 10 + 0x30;

test_display[1] = jednotková_cena_hodnotenia / 100 % 10 + 0x30;

test_display[2] = '.';

test_display[3] = jednotková_cena_hodnotenia / 10 % 10 + 0x30;

test_display[4] = jednotková_cena_hodnotenia / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(hodnotová_jednotková_cena

{

test_display[0] = jednotková_cena_hodnotenia / 10 000 % 10 + 0x30;

test_display[1] = jednotková_cena_hodnotenia / 1000 % 10 + 0x30;

test_display[2] = jednotková_cena_hodnotenia / 100 % 10 + 0x30;

test_display[3] = '.';

test_display[4] = jednotková_cena_hodnotenia / 10 % 10 + 0x30;

test_display[5] = jednotková_cena_hodnotenia / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

else if(hodnotová_jednotková_cena

{

test_display[0] = jednotková_cena_hodnotenia / 100000 % 10 + 0x30;

test_display[1] = jednotková_cena_hodnotenia / 10 000 % 10 + 0x30;

test_display[2] = jednotková_cena_hodnotenia / 1000 % 10 + 0x30;

test_display[3] = jednotková_cena_hodnotenia / 100 % 10 + 0x30;

test_display[4] = '.';

test_display[5] = jednotková_cena_hodnotenia / 10 % 10 + 0x30;

test_display[6] = jednotková_cena_hodnotenia / 1 % 10 + 0x30;

dgus_show_text_value_set(VALUATION_UNIT_PRICE_ADDR, test_display, 4);

}

}

 

// Obnovenie hmotnosti

void page_valuation_weight_refresh()

{

uint8_t test_display[10] = {0x30};

uint32_t gram_display = 0;

if(hodnota_gramu >= valuation_decorticate)

{

gram_display = gram_value - valuation_decorticate;

if(gram_display

{

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

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_displej, 3);

}

else if(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_displej, 3);

}

else if(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_displej, 3);

}

else if(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_displej, 3);

}

else if(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_displej, 3);

}

}

inak

{

dgus_show_text_value_set(VALUATION_GRAM_ADDR, test_displej, 3);

}

}

 

// Obnovenie celkovej ceny

void page_valuation_price_refresh()

{

uint32_t cena_hodnota = 0;

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

if(hodnota_gramu >= valuation_decorticate)

{

cenová_hodnota = (hodnota_gramu - valuačný_dekortikát) * jednotková_cena_hodnotenia * 2 / 1000;

if(hodnota_ceny

{

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

test_display[1] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

else if(hodnota_ceny

{

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

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

test_display[2] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

else if(hodnota_ceny

{

test_display[0] = cena_hodnota / 10 000 % 10 + 0x30;

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

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

test_display[3] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

else if(hodnota_ceny

{

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

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

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

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

test_display[4] = '.';

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

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

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

inak

{

dgus_show_text_value_set(VALUATION_TOTAL_PRICES_ADDR, test_display, 4);

}

}

void page_valuation_decorticate()

{

valuation_decorticate = gram_value;

page_valuation_weight_refresh();

}

void page_valuation_1()

{

if(hodnota_jednotková_cena

{

jednotková_cena_hodnotenia = jednotková_cena_hodnotenia * 10 + 1;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_2()

{

if(hodnota_jednotková_cena

{

jednotková_cena_hodnotenia = jednotková_cena_hodnotenia * 10 + 2;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_3()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 3;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_4()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 4;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_5()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 5;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_6()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 6;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_7()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 7;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_8()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 8;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_9()

{

if(hodnota_jednotková_cena

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena * 10 + 9;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_0()

{

if(hodnota_jednotková_cena

{

jednotková_cena_hodnotenia = jednotková_cena_hodnotenia * 10 + 0;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

}

void page_valuation_back()

{

oceňovacia_jednotková_cena = oceňovacia_jednotková_cena / 10;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}

void page_valuation_clear()

{

jednotková_cena_hodnotenia = 0;

hodnota_hodnoty_jednotkovej_ceny_refresh();

}


Čas odoslania: 28. apríla 2024