We featured [Fabrizio Di Vittorio]’s FabGL library for the ESP32 back in April of this year. This library allows VGA output using a simple resistor based DAC (3 resistors for 8 colors; 6 resistors for 64 colors), and includes functions for PS/2 mouse and keyboard input, a graphics library, and many of the miscellaneous functions you might need to develop games on the ESP32. Now, a GUI interface library has been added to ease application development.
The GUI, of course, runs on the VGA output. The library includes what you’d expect from a minimal windowing GUI, like keyboard and mouse support, windows with the usual minimize/maximize/close controls, and modal and message dialog boxes. For input controls, there are labels, text boxes, buttons, radio buttons, checkboxes, normal and editable combo boxes, and listboxes — you know, pretty much everything you need to develop a modern GUI application. All the code is open-source (GPL 3.0) and in the GitHub repo.
While the original FabGL had a game-development orientation, the addition of this new GUI functionality opens up a new range of applications. If you want to find out more about using the FabGL library, you can check out our previous coverage of the mostly game-oriented functions.
You can get a look at the new GUI functions in action in the video, after the break.
Continue reading “ESP32 Gets Advance Windowed Apps Using This VGA GUI Library”
The 6th Generation iPod Nano was something of a revelation on launch. Packing a color screen, audio hardware, and a rechargable battery into a package no bigger than a large postage stamp remains impressive to this day. They’re now being used in various maker projects for their displays, but if you’re doing so, you might want to think about how you’re going to build a graphical interface. Not to worry – just grab an ESP32 and the right GUI library, and you’re on your way.
The Nano screen uses a MIPI DSI interface, which isn’t the easiest thing to use directly with the ESP32. Instead, a SSD2805 interface chip converts parallel input data to MIPI DSI signals to drive the display. Driving the display is only part of the game, however – you need something to display on it. Combining the LittlevGL GUI library with the screen’s touchpad makes creating a full graphical interface easy.
Hacked screens are something we don’t see as much these days, with the proliferation of display products aimed directly at the maker market. However, it’s always awesome to see a successful hack pulled off well. We’ve seen the display reverse engineered, too – and it certainly wasn’t easy.
Microcontrollers are wonderfully useful things, but programming them can be a little daunting if you’re used to the simplicity of compiling for regular PCs. Over time though, this has become easier. Communities have strayed away from assembly code and created higher-level languages such as Micropython, to allow these devices to be programmed in a more accessible manner. Unfortunately, Micropython has historically lacked a decent high-level GUI library. Thankfully, that’s no longer the case, with [amirgon] porting LittlevGL to the platform.
Putting a GUI into a project with a screen seems simple, until one actually gets down to brass tacks. A simple button can consist of a background color, text, and a symbol – and that’s not even considering the use of shading or other visual effects. Having a library to handle the grunt work can massively cut down development time.
LittlevGL is the work of [kisvegabor], and is programmed in C, but this effort has made it possible to integrate it with Micropython code. It’s all object-oriented, and thus works well in the broader Python framework. [amirgon] notes that it’s particularly good for quick development, due to Python’s ability to run code without a slow compiling step.
There are other approaches to this problem, too – with MyOpenLab being a particularly versatile example.
If you’re like me, chances are pretty good that you’ve been taught that all the elements of the modern computer user interface — programs running in windows, menus, icons, WYSIWYG editing of text documents, and of course, the venerable computer mouse — descended from the hallowed halls of the Xerox Corporation’s Palo Alto Research Center in the early 1970s. And it’s certainly true that PARC developed these technologies and more, including the laser printer and object-oriented programming, all of which would grace first the workplaces of the world and later the homes of everyday people.
But none of these technologies would have existed without first having been conceived of by a man with a singular vision of computing. Douglas Engelbart pictured a future in which computers were tools to sharpen the human intellectual edge needed to solve the world’s problem, and he set out to invent systems to allow that. Reading a Twitter feed or scanning YouTube comments, one can argue with how well Engelbart’s vision worked out, but there’s no arguing with the fact that he invented almost all the trappings of modern human-computer interaction, and bestowed it upon the world in one massive demonstration that became known as “The Mother of All Demos.”
Continue reading “The Mother Of All Demos, 50 Years On”
With surface-mount technology pushing the size of components ever smaller, even the most eagle-eyed among us needs some kind of optical assistance to do PCB work. Lots of microscopes have digital cameras too, which can be a big help – unless the camera fights you.
Faced with a camera whose idea of autofocus targets on didn’t quite coincide with his, [Scott M. Baker] took matters into his own hands – foot, actually – by replacing mouse inputs to the camera with an outboard controller. His particular camera’s autofocus can be turned off, but only via mouse clicks on the camera’s GUI. That’s disruptive while soldering, so [Scott] used an Arduino Pro Micro and a small keypad to mimic the mouse movements needed to control the camera.
At the press of a key, the Arduino forces the mouse cursor up to the top left corner of the screen, pulls down the camera menu, and steps down the proper distance to toggle autofocus. The controller can also run the manual focus in and out or to take a screenshot. There’s even a footswitch that forces the camera to refocus if the field of view changes. It looks really handy, and as usual [Scott] provides a great walkthrough in the video below.
Like it or not, if shrinking technology doesn’t force you into the microscope market, entropy will. If you’re looking for a buyer’s guide to microscopes, you could do worse than [Shahriar]’s roundup of digital USB scopes. Or perhaps you’d prefer to dumpster dive for yours.
Continue reading “Arduino Provides Hands-Free Focus For Digital Inspection Scope”
If you’ve ever been curious if there’s a way to program microcontrollers without actually writing software, you might be interested in FlowCode. It isn’t a free product, but there is a free demo available. [Web learning] did a demo of programming a Nucleo board using the system. You can check it out below.
The product looks slick and it supports a dizzying number of processors ranging from AVR (yes, it will do Arduino), PIC, and ARM targets. However, the pricing can add up if you actually want to target all of those processors as you wind up paying for the CPU as well as components. For example, the non-commercial starter pack costs about $75 and supports a few popular processors and components like LEDs, PWM, rotary encoders, and so on.
Continue reading “FlowCode Graphical Programming”
We don’t use a GUI IDE, but if we did, it would most certainly be something along the lines of [Martin]’s embedded-IDE project. We’ve always felt that most IDEs are just fancy wrappers around all the tools that we use anyway: Makefiles,
ctags, and an editor. [Martin]’s project makes them less fancy, more transparent, and more customizable, while retaining the functionality. That’s the hacker’s way — putting together proven standard tools that already work.
The code editor he uses is QScintilla, which uses
clang for code completion. The “template” system for new projects? He uses
patch to import and export project templates. Because it uses standard tools all along the way, you can install the entire toolchain with
sudo apt-get install clang diffutils patch ctags make on an Ubuntu-like system. Whatever compiler you want to use is supported, naturally.
We can’t see a debugger interface, so maybe that’s something for the future? Anyway, if you want a minimalistic IDE, or one that exposes the inner workings of what it’s doing rather than hiding them, then give [Martin]’s IDE a try. If you want more bells and whistles that you’re not going to use anyway, and don’t mind a little bloat and obscuration, many of our writers swear by Eclipse, both for Arduino and for ARM platforms. We’ll stick to our butterflies.