Arduino och meny bibliotek

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
RadioDJ
Inlägg: 402
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Arduino och meny bibliotek

Inlägg av RadioDJ »

Jag skulle behöva lite hjälp med att hitta ett meny bibliotek till Arduino.
Har provat flera stycken men inte hittat något som passar mig.

Finns det någon som har hittat ett bibliotek som uppfyller följande:
Huvudmeny
2 nivåer undermenyer eller fler
Kunna ändra ett värde i en undermeny (typ 0-100) och sedan skicka tillbaka värdet för vidare behandling
Om man valt ett värde, även kunna visa detta värde nästa gång man kommer till denna menyn
Välja olika menyer med hjälp av 3 knappar eller rotary encoder

Lite konstig beskrivning, men alla förslag är välkomna.

Jag behöver detta till ett projekt som kommer att ha bland annat en LCD för att visa vad jag gör.
Vill via menyn kunna ändra bland annat varvtalet till en fläkt.
Annat menyval ska kunna välja färg på en flerfärgsled.
Kunna ändra IP-adress, subnet och gateway i en tredje meny
Samt lite andra saker......
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino och meny bibliotek

Inlägg av GeekJoan »

Användarvisningsbild
adent
Inlägg: 4094
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Arduino och meny bibliotek

Inlägg av adent »

Jag har skrivit ett sådant, men det är nog inte riktigt i skick att rattas av nån annan än mig, men jag är ganska nöjd med det annars :) Det har nog allt du efterfrågar, ja, det är ren C-kod, inte arduino, men till AVR. Borde ta tag i det igen nån gång... Avsett för 16x2-LCD.

Här kan du se det in action. Huvudskärmen är inte en del av menyn. Nackdelen med det är att det tar ganska mycket både RAM och flash. Ska visa hur jag definierar upp menyn sen.

https://youtu.be/d3jWHkGJbYU

Här är koden,

Kod: Markera allt

	add_node('R',0,"Menu",NULL, NULL);
		add_node('I',1,"Settings",NULL, NULL);
			add_node('L',2,"Start on...",&stSettings.start_cond, NULL);
				add_node('O',3,"Switch",SWITCH, NULL);
				add_node('O',3,"Level",LEVEL, NULL);
				add_node('O',3,"Time" ,TIME, NULL);
			add_node('L',2,"Stop on...",&stSettings.stop_cond, NULL);											
				add_node('O',3,"Level"	,LEVEL, NULL);
				add_node('O',3,"Current",CURRENT, NULL);
			add_node('I',2,"Lvl- Settings",&action, NULL);		
				add_node('I',3,"Start depth",&stSettings.start_depth, NULL);		
					add_node('D',4,"%d cm",menu_event_integer, 1);			
				add_node('I',3,"Stop depth",&stSettings.stop_depth, NULL);		
					add_node('D',4,"%d cm",menu_event_integer, 1);			
				add_node('A',3,"Calibrate",LEVEL_CALIBRATE, NULL);		
			add_node('I',2,"Curr. Settings",&action, NULL);
				add_node('A',3,"Calibrate",CURRENT_CALIBRATE, NULL);
				add_node('I',3,"Threshold",&stSettings.current_threshold, NULL);
					add_node('D',4,"%d A",menu_event_integer, 1);			
			add_node('I',2,"Start interval",&stSettings.start_interval, NULL);
				add_node('D',3,"%d minutes",menu_event_integer, 10);			
		add_node('I',1,"Run manual",&action, NULL);
			add_node('A',2,"Run to stop",RUN_TO_STOP, NULL);
			add_node('A',2,"Start pump",START_PUMP, NULL);
			add_node('A',2,"Stop pump",STOP_PUMP, NULL);
T.ex. raden: add_node('L',2,"Start on...",&stSettings.start_cond, NULL); säger att detta är en lista, det val som väljs hamnar i stSettings.start_cond (en enum)
add_node('O',3,"Switch",SWITCH, NULL); är ett alternativ i listan och SWITCH är en siffra/enum till stSettings.start_cond

Men det finns massor med dåliga saker i koden och redundans och att den skapas i runtime är dåligt o.s.v. Fick en väldig lust att göra detta men bra och för stm32 istället. Samt att man borde kunna använda X-macros på ett bra sätt till detta... Lär återkomma till detta projekt någon gång :)

MVH: Mikael
agehall
Inlägg: 418
Blev medlem: 12 augusti 2020, 19:27:54

Re: Arduino och meny bibliotek

Inlägg av agehall »

Ser ju rätt snyggt ut.

Dock, som du själv konstaterar, så är det inte optimalt att skapa upp allt runtime. Varför inte göra en ”kompilator” som tar en JSON struktur och spottar ur sig färdiga datastrukturer och sedan ha tillhörande kod som ett bibliotek?
Skriv svar