Categories
algorithm Arduino hardware software

Basic SmartCar Bot – Control

When designing a SmartCar application, the details of the application (ie, what the robot does) will be purpose-specific. The underlying support infrastructure, however, should be more generic and aimed at simplifying management of the core hardware from the application.

In the previous parts of this series we covered the hardware and sensors. The next thing is to work out the core controls needed for an application using the hardware.

Categories
algorithm Arduino hardware software

Basic SmartCar Bot – Sensors

The first part of this series was an introduction to the core hardware for the SmartCar platform. This article covers the power supply, controller and sensors.

Categories
algorithm Arduino hardware software

Basic SmartCar Bot – Hardware

Many years ago I purchased a Rug Warrior kit to go with the book Mobile Robots: Inspiration to Implementation. It was an expensive kit – in the hundreds of dollars in Australia – for what was an advanced entry level robot of the early 1990’s.

The technology to make such a bot vehicle has become considerably more accessible, so I thought it was time to build a roving bot from the ground up. The challenge for this version is to make it as cheaply as possible for functionality similar to Rug Warrior.

Categories
algorithm Arduino software

PWM on any I/O Pin

PWM today is used in most forms of finite control in electronic devices. LED dimmers and DC motor speed control are two common applications for PWM.

An Arduino Uno has 14 digital I/O pins, of which just six specific pins are hardware PWM-enabled ,but in some situations it would be great to be able to use any I/O pin for PWM. This is possible using AVR timers and interrupts.

Categories
Arduino hardware

Four Common Hobby DC Motor Controllers

I was recently looking for a brushed DC motor controller for some small motors and came across four controllers that seem to account for the majority of those available from online stores. I had to compare them before making my decision, so here is my summary of their specifications and how they would be controlled from your software.

Categories
AI2 algorithm Arduino software

App Inventor (AI2) Joystick User Control

App Inventor (AI2) is an easy way to create Android apps. While originally designed for teaching, it still allows building advanced and complex apps, and was the tool I chose to build a software 2-axis joystick interface for wireless vehicle control.

This article describes the implementation of the joystick as a standalone component that can be integrated into other applications.

Categories
algorithm Arduino software

Interrupts and C++ Class Instances

When you need to process an interrupt, there is nothing else you can do but process it. Most Arduino examples show how to do this in a ‘C’ context. Processing interrupts in a C++ class is a lot less trivial, as class scoping rules and constructs get in the way, and specific arrangements need to be taken to ensure data is processed correctly.

Categories
Arduino LCD display software

A Menu System for LCD Modules

Menu managers in embedded systems are generally not the main function of the embedded application software, but they can take considerable code and testing to implement.

This article describes a menu library that minimizes the use of RAM and has a small memory footprint overall, leaving more space for what really matters in application code.

Categories
algorithm Arduino software

The Over The Top (OTT) Servo Tester

A Servo Tester is a useful addition to any Maker’s toolbox, especially if they need to work with servos.  I have always ‘made do’ when setting up servos by setting up an Arduino and modifying the standard examples to do what I needed at the time (setting the mid point, calibrating for servo swing, etc).

I finally decided that I needed a more permanent tool and made my own.

Categories
algorithm Arduino

Neopixel Matrix Two-digit display

When I needed a high brightness 7-segment display and discovered that I did not have one at hand, I turned to an available Neopixel (WS8212B) 10×10 matrix to act as temporary display. This turned out to work well enough that it could be used in other situations.