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
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
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 software

Remote Triggering a DSLR Camera

When planning a new project I needed to tackle how to remote trigger a Canon DSLR camera. So I started with looking at the options and landed on using an infrared link to the camera. Things didn’t quite go as I expected.

Categories
algorithm Arduino software

Virtual arrays using an SD card

It is common for operating systems to use a hard disk swap files to increase the amount of available system RAM by swapping blocks(or pages) of memory between real RAM and the hard drive. As many applications use RAM linearly, this imposes relatively modest decrease in performance for the bigger benefit of increased temporary RAM.

It seemed to me that, for particular applications, this concept could be applicable to providing management of arrays to increase what could be stored in a microcontroller’s very limited memory resources.

Categories
Arduino software

Minimalist Programming

Sometimes it’s fun to do things just because they are interesting. This idea seems to be behind minimalist programming languages (languages with barely enough keywords to be viable). These languages have no useful purpose except to pose a challenge to programmers using them. Here’s one I played with on the Arduino.