hallo, ik ben bezig met het maken van een menu structuur voor het bedienen van een machine, ik heb al wel iets wat werkt, maar het loopt niet vloeiend en soms springt hij naar onverwachte schermen enz. enz.
ik ben er in totaal al 3 dagen mee bezig, en ik begin sterk de indruk te krijgen dat ik de verkeerde methode gebruik.
ik heb hieronder een stukje van mijn code gepost om mijn benadering (methode) te laten zien, die naar mijn idee veel te omslachtig is.
in een ander deel kan ik ook een variabele selecteren b.v. speed (0-100 %). voor de rest is het een hele simpele menu structuur met mischien 20 verschillende schermen.
hoe kan ik dit he beste aanpakken ?
ik gebruik een display met een HD44780 en 4 drukknoppen.
reacties worden zeer gewardeerd.
c code:
if (manual_select_screen == 1)
{
if (temp_manual_select_screen == 1)
{
Lcd4_Clear();
Lcd4_Set_Cursor(1,2);
Lcd4_Write_String("left side");
Lcd4_Set_Cursor(2,2);
Lcd4_Write_String("right side");
Lcd4_Set_Cursor(1,18); // line 3
Lcd4_Write_String("others 1");
Lcd4_Set_Cursor(2,18); // line 3
Lcd4_Write_String("others 2");
temp_manual_select_screen = 0;
_delay_ms(1000);
}
if button_increase
select_counter = select_counter + 1;
if button_decrease
select_counter = select_counter - 1;
if (select_counter > 4) {select_counter = 1;}
if (select_counter < 1) {select_counter = 4;}
if (select_counter == 1) // auto
{
Lcd4_Set_Cursor(1,0);
Lcd4_Write_Char('*');
Lcd4_Set_Cursor(2,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(1,16); // line 3
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,16); // line 4
Lcd4_Write_Char(' ');
}
if (select_counter == 2) // manual
{
Lcd4_Set_Cursor(1,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,0);
Lcd4_Write_Char('*');
Lcd4_Set_Cursor(1,16); // line 3
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,16); // line 4
Lcd4_Write_Char(' ');
}
if (select_counter == 3) // homing
{
Lcd4_Set_Cursor(1,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(1,16); // line 3
Lcd4_Write_Char('*');
Lcd4_Set_Cursor(2,16); // line 4
Lcd4_Write_Char(' ');
}
if (select_counter == 4) // scanning
{
Lcd4_Set_Cursor(1,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,0);
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(1,16); // line 3
Lcd4_Write_Char(' ');
Lcd4_Set_Cursor(2,16); // line 4
Lcd4_Write_Char('*');
}
if ((select_counter == 1) & (button_enter))
{
manual_left_screen = 1;
manual_select_screen = 0;
}
if ((select_counter == 2) & (button_enter))
{
manual_right_screen = 1;
manual_select_screen = 0;
}
if ((select_counter == 3) & (button_enter))
{
manual_others_1_screen = 1;
manual_select_screen = 0;
}
if ((select_counter == 4) & (button_enter))
{
manual_others_2_screen = 1;
manual_select_screen = 0;
}
}