A simple German financing calculator, all calculations are serverless, pure JS. Uses Chartist JS library for diagrams and Moment.js for datetime manipulations. See the source code here
DISCLAIMER: It works for me, but it does not mean it is 100% reliable. Use it at your own risk!
It is nearly impossible to build a complex OpenSCAD hierarchy without working with children. Children are very useful when it goes about aligning children in the “mother” part. There are however several things, which are missing. For example, look at this spindle holder:
It has several mounting holes and a bracket for a spindle motor, so when you mount it on some surface you will need the following:
Many people are using wireless 2.4GHz remote controls to control their media PCs. These remote controls usually look like a normal keyboard and quite often have a built-in touchpad or accelerometer. They are quite small and useful, but it’s still an additional thing laying somewhere around. In my opinion, there is nothing better than the traditional universal IR remote control. One device “to rule them all”. Only one thing is missing: the IR receiver.
When I just started to develop my first complex OpenSCAD project I didn’t think about the model hierarchy, I just created a lot of parts and added them all into a single assembly file. Soon I realized that this approach was completely wrong as it was nearly impossible to navigate in such an assembly, just imagine this approach with the following design:
Adding a new part and moving it to the desired location turned into a nightmare and I started to think about an easy and maintainable way to solve this problem and now I think I found the right solution.
After many days of playing around with free 3D CADs I’ve ended up with the old good OpenSCAD, which combines a high level of flexibility with low system requirements. However, it lacks some features, e.g. the bill of materials and this is exactly what I’m going to do. After analyzing different possibilities I came to a conclusion that the simplest way may look like this:
TL;DR
Add this to your OpenSCAD project: bom.scad
Add this line to each of your parts: bom_item(“part_name”);
Generate BOM using this: generate_bom.py
Embedded software developers normally prefer to use a pure C, however in some cases and especially in complex projects using C++ gives a more clear structured implementation. Unfortunately, by default C++ compiler produces pretty big binaries. This can be acceptable in case of a normal OS with a big amount of memory, but things are getting complicated when it comes to microcontrollers. I played a bit with compiler and linker options and it seems that the most size-consuming options CPP features are RTTI (run-time type information) and exceptions. I strongly believe that these are not things you can’t live without. So, I came up with the following configuration (valid for GCC toolchain):
Flag | Description |
---|---|
-fno-rtti | (Don’t generate run-time typed identification) |
-fno-exceptions | (Don’t catch exceptions) |
Flag | Description |
---|---|
-flto | (Use link time optimization) |
-lstdc++ | Use C++ libraries. You use them, right? |
Resulting binary size is pretty small and comparable with the equivalent C compiler output. Of course, you can reduce the size even more, but flags above are the most effective.