I have written many GLSL shaders over the last few years, most of which can be found on the Shadertoy website, and over time I’ve built up some code which I use as a ‘starting point’ for ray-marched scenes.
After writing a shader I then review the code to delete any unused functions, simplify calculations, and optimize performance, and generally get things into a state where I don’t mind people taking a look.
It occurred to me that much of this process can be automated, so I wrote a Windows tool which does just that:
The C# source (and prebuilt Windows installer) can be found on GitHub at this location:
After several months of deliberation and research, I finally decided to take the plunge into the world of 3D printing.
As a professional software developer, a 3D graphics enthusiast, and someone who has always had an interest in making things (See my Useless Box), a 3D printer is the perfect way of combing all these activities.
So I decided to practise some of my recently-acquired Arduino skillz to try and make a self-balancing robot.
The idea of a robot managing to monitor and update itself so fast it can actually balance really intrigues me. I wanted to see whether I could do it (without too much help from the Internet), and how well it would balance. I had some spare MDF lying around, so got to work…
I’m currently making a self balancing robot, powered by an Arduino Nano, and decided to use NEMA 17 stepper motors to power it.
The DRV8825 motor drivers are great, but cannot be driven using a PWM signal. Consequently the Arduino code must send a ‘step’ signal to the correct pin many times per second – Easily in the thousands if you require a decent amount of speed, especially if you’re micro-stepping.
Needing to write output to the Arduino IDE’s ‘Serial Monitor’ is something you might find yourself doing a lot. It’s one of the easiest ways of giving feedback on variables, and is invaluable when it comes to debugging.
To output content you can use code like this:
All good so far. How about if you want to output a variable? That’s slightly more work…
For anyone planning on making their own ‘Useless Box’, you might find my Arduino Sketch(/code) useful as a starting point. The version I’m using here is not my final version, which adds more ‘character’ at the expense of code readability.
You’ll have to tweak the fingerMin/fingerMax and lidMin/lidMax values to suit your own designs, but hopefully that should be quite straight forward.
If you find the code useful, or develop or further, please let me know! It would be great to see others getting some benefit from it!