05-13-2011, 08:10 PM
|
#121 (permalink)
|
EcoModding Lurker
Join Date: Sep 2010
Location: Fresno, CA
Posts: 78
Thanks: 4
Thanked 9 Times in 7 Posts
|
Kinda on hold, haven't opened the code in a few weeks... I'll be the first to admit my personality has a few flaws, procrastination and lack of inspiration being one :P
I think I may have found a solution to the "dynamic tab array" issue, but I'll have to get my lazy arse back to the coding board to implement it.
In the delay period I'd been thinking about ways to improve the UI responsiveness, and I think I'm going to start making better use of the event timer functionality... by "better use" I believe I may end up implementing the ENTIRE user interface in a chain of timer event functions. Right now it's really only used to time injector delays and a handful of (?) other things... but seeing how simple it is, I think it can be used for the entire user interface! I'll have to play with that idea and see how it works, but if I've gotten this far in the concept, I think the code should be pretty simple once I start to work on it...
|
|
|
Today
|
|
|
Other popular topics in this forum...
|
|
|
05-31-2011, 11:41 PM
|
#122 (permalink)
|
EcoModding Lurker
Join Date: Sep 2010
Location: Fresno, CA
Posts: 78
Thanks: 4
Thanked 9 Times in 7 Posts
|
Well, there's a little update...
Phi_prompt « Liudr's Blog
... You can guess where this is going. And yeah, it works 100% with the MPGuino as well - a 3-button mode is selectable (although a bit tough to navigate, I'll smooth out the wrinkles there somehow), and it's pretty much exactly what I had in mind. I'll have to tweak some things here and there, maybe, but I mean... just look at it! xD
Just define what buttons are what (the analog pins that the buttons use are digital 17, 18, and 19), and pass it a LiquidCrystal object, and it does the rest!
|
|
|
The Following User Says Thank You to FalconFour For This Useful Post:
|
|
06-24-2011, 06:00 AM
|
#123 (permalink)
|
EcoModding Lurker
Join Date: Sep 2010
Location: Fresno, CA
Posts: 78
Thanks: 4
Thanked 9 Times in 7 Posts
|
Just a little teaser... make of it what you will
Code:
Trip tmpTrip;
Trip instant;
Trip current;
Trip tank;
// from http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.7
// ...headache-inducing.
typedef long unsigned int (Trip::*TripFn)(void);
#define CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember))
TripFn idxCallers[] = { &Trip::miles, &Trip::gallons, &Trip::mpg, &Trip::mph, &Trip::time, &Trip::eocMiles, &Trip::idleGallons };
char *idxLabelsSm[] PROGMEM={ "Mil", "Gal", "MPG", "MPH", "H/M", "EOC", "Idl" };
char *idxLabelsLg[] PROGMEM={"Miles", "Gallons", "MPG", "MPH", "Time", "EOC Miles", "Idle Gal" };
char menuItem00[] PROGMEM = "Edit Display";
char menuItem01[] PROGMEM = "Clear Trip";
char menuItem02[] PROGMEM = "Clear Tank";
char menuItem03[] PROGMEM = "End Trip";
char menuItem04[] PROGMEM = "New Trip";
char menuItem05[] PROGMEM = "Set Clock";
char menuItem06[] PROGMEM = "Preferences";
char menuItem07[] PROGMEM = "System Setup";
char menuItem08[] PROGMEM = "History";
char menuItem09[] PROGMEM = "Switch Screen";
char menuItem10[] PROGMEM = "Screensaver";
char menuItem11[] PROGMEM = "Timeout";
char menuItem12[] PROGMEM = "Info Cycle";
char menuItem13[] PROGMEM = "Show Clock";
char menuItem14[] PROGMEM = "Show Graphic";
char menuItem15[] PROGMEM = "Dim Backlight";
char menuItem16[] PROGMEM = "Backlight";
char menuItem17[] PROGMEM = "Save Default";
char menuItem18[] PROGMEM = "Restore Mode";
char menuItem19[] PROGMEM = "Past 5 Tanks";
char menuItem20[] PROGMEM = "Past 5 Trips";
char menuItem21[] PROGMEM = "Big Display";
char menuItem22[] PROGMEM = "Instant";
char menuItem23[] PROGMEM = "Trip";
char menuItem24[] PROGMEM = "Tank";
I've been working on understanding and extending the phi_prompt library to where I need it to be to use it with this project (which I still don't have a proper name for). Needed to overcome a major limitation with being able to create dynamic menu entries, not just "fixed" ones like those shown above. That way I can display the currently-selected values on the options screens, and create menus based on what needs to be shown at the moment instead of a fixed menu of options for each possible outcome (yuck).
Believe me, I haven't forgotten about this project. It's kind of my "holy grail" of my understanding of avr-libc and Arduino. And for what it's worth, yeah, Arduino is definitely a pretty convoluted build system, but it really helps make the code amazingly portable. After having taken the whole build process apart (code -> libs -> core(->lib) -> link -> hex -> upload), and been able to take Arduino code and run it through AVR Studio's AVR Simulator... or, say, take the build folder and "avr-objdump -dC" the .elf file to step through the assembly, or write an inline ASM definition "optimizer" for time-sensitive functions, or create a rolling buffer of audio data in RAM and use it to generate an echo effect... or intelligently hand off timer-counting responsibilities between Timer0 and Timer2 depending on if Timer2 needs to be active at clk/1 to run a sine-wave tone generator, or if the toner is silent... or created animated sequences using the 16x2 character LCD, or wrote a full fledged, menu-based, self-contained diagnostic and monitoring tool for SMBus Smart Battery protocol-based laptop batteries... or... YES, I've done a SH*TLOAD of work with my Arduinos using the most low-level code imaginable, or just any code that gets the job done.
That said, I have no intention of making some all-in-all disconnection from the Arduino environment. It's astoundingly flexible, and I'll make sure that the ultimate "release distribution" compiles well under both Arduino *and* standard AVR-GCC build environments. I just prefer using Arduino since my physical dev environment *is* Arduino, and other IDEs feel more like dirty hacks than anything. I'm still playing with the idea of using AVR Studio, but it's got a real "unclean" feel to it - ffs, it has C++ support as an "add-on", and half the default build environment options are non-optimal for our setup. Only thing I don't like about Arduino is that it wastes time re-compiling all files each time I do something like a simple "syntax check" build.
Well, enough out of me for now... expect great things in the coming weeks - this thing's been eating at me for a while
|
|
|
06-24-2011, 08:19 AM
|
#124 (permalink)
|
needs more cowbell
Join Date: Feb 2008
Location: ÿ
Posts: 5,038
Thanks: 158
Thanked 269 Times in 212 Posts
|
Quote:
Originally Posted by FalconFour
...and create menus based on what needs to be shown at the moment instead of a fixed menu of options for each possible outcome...
|
There are few in computer science problems that cannot be solved by another layer of indirection. Of course those layers may create new problems however, so you have to choose your layers (and problems) carefully
__________________
WINDMILLS DO NOT WORK THAT WAY!!!
|
|
|
06-24-2011, 02:39 PM
|
#125 (permalink)
|
EcoModding Lurker
Join Date: Sep 2010
Location: Fresno, CA
Posts: 78
Thanks: 4
Thanked 9 Times in 7 Posts
|
Quote:
Originally Posted by dcb
There are few in computer science problems that cannot be solved by another layer of indirection. Of course those layers may create new problems however, so you have to choose your layers (and problems) carefully
|
Oh, don't I know it! Spent many late night hours trying to solve one indirect problem caused by trying to solve another problem, so on and so forth. That's why I'm trying to get all the "indirect problems" (like "how can I make it do (this) or (that)") out of the way before jumping head-first into this project
Menu stuff is the easiest part, though... putting together menus of dynamic options is pretty easy with the "dual-mode" mod I came up with in phi_prompt's list-render function. The hard part is finding ways to organize and implement each of the functions I wrote into that sort of "wish list" in the code block above! Most of them were already planned out, but others I just knew it could be done (like "last 5 trips") but hadn't sketched out where to put it, manage it, or display it yet. Those will be the fun parts, but jotting them down now is a good way to remember what still needs to be done, and how far along I am!
|
|
|
09-01-2011, 04:05 PM
|
#126 (permalink)
|
slave to the grind
Join Date: May 2010
Location: NKY
Posts: 73
Thanks: 89
Thanked 5 Times in 5 Posts
|
this is all so interesting!! are there any new updates??
falconfour...appreciate what you are doin! i wish i understood code and could write it....but i can do the hardware side and soldering....read schematics and what not...the code side has always left me puzzled....maybe one day ill get around to learning some of it!
F4-ECO....for a name?
like the clock idea,the menu idea, the tack idea, the no zero idea,the battery power display,like the button delay fix idea.....and i want the duck!
a way to switch it off(well the screen at least) or a timed delay to turn off the screen,a usb, and a way to data log to either a MP3 player, ipod, laptop or flash drive would be cool too!(or in real time)
__________________
Last edited by TOOQIKK; 09-01-2011 at 04:12 PM..
Reason: added more text.
|
|
|
09-01-2011, 11:04 PM
|
#127 (permalink)
|
slave to the grind
Join Date: May 2010
Location: NKY
Posts: 73
Thanks: 89
Thanked 5 Times in 5 Posts
|
duino name maker! found this thought is was funny
__________________
|
|
|
12-14-2011, 01:22 PM
|
#128 (permalink)
|
Master EcoModder
Join Date: Oct 2009
Location: Midwest
Posts: 337
Thanks: 4
Thanked 37 Times in 21 Posts
|
Any updates on this Falconfour? Been about 7 months since I posted on here. I bought a new mpguino and didn't have any problems with the freezing up so I didn't bother to mod mine with your code, was hoping for a new release.
|
|
|
|