John L Errington MSc

Experiments with an Arduino microcontroller

These pages detail the progress of my experiments with various Arduino microcontrollers.


Driving LEDs: detailing how to choose a correct resistor value to limit current through the LED.

Digital inputs: Reading switches: Pull up, pull down and debounce

Grounds: The importance of correct grounding and the effect of currents in ground connections

Measuring voltages: using the analog input to get accurate readings of the input voltage

Voltmeter and data logger: (Arduino MEGA + Ethernet shield) This project was to build a voltmeter to take accurate readings of voltage from the computer power supply connector, and store them onto an SD card. This device will allow soak testing of computer psu's with stored data available to investigate any faults.

Using Op Amps: Just as transistors FETS and logic gates can give more scope to use digital inputs and outputs transistorsand "operational amplifiers" can bring more capability to analog inputs and outputs. This explains how to choose the right op amp for your project

Characteristic tester: using a UNO to measure device characteristics: uses PWM, Analog inputs and Op Amps.

NodeMCU "Weather station", Network monitor and logger: (Lolin NodeMCU) Following issues with my internet connectivity I built this unit to ping a range of targets and show results plus record and store them over a long period. The "weather station" is a simple experiment using a BME (or BMP) 280 to learn about I2C, SPI and setting up a web server on the NodeMCU.

ESP32WROOM: introduction and getting it working with a display: plus a Web Connectivity Logger, and Solar Panel Data Logger.

Soil Moisture Meter: (Arduino NANO) I was not satisfied with readings from a simple probe, so developed this unit to give more accurate readings.

Heater controller: will use a light sensor (photoresistor or small solar panel) to determine the amount of sunlight present. If this is sufficient an optoisolated Solid State Relay will be energized to switch on the heater. Issues here concern preventing excessive switching, and ensuring the whole system is safe.

Motor control: examines DC motors commonly used in instrumentation, control and robotics, and provides circuit diagrams and examples of ways the Arduino microcontroller can be used to control them. I'll also look at a way of measuring the current flowing through the motor, although this technique can also be used in many other applications.

Keypress simulator: (Arduino Pro Micro 32U4) Development of a unit to simulate keyboard entry; also looking at program design methodology for the Arduino.

Measuring mass: - following the recent redefinition of important physics measurement units, <see more information here> a "proof of concept" experiment in measuring mass directly (ie not as weight).

Funduino Uno


Software for arduino development and documentation

In addition to the "basics" - Arduino IDE and Fritzing - I can recommend the following:

Code::Blocks Programming environment

Notepad++ a lightweight and portable code & text editor

Meesoft Diagram Designer used here for flowcharts and circuit diagrams

Dia another tool for diagrams (I used it for the state diagrams)

TinyCAD Very simple schematic editor and a good step towards using more sophisticated packages

Eagle Schematic Editor with the sparkfun libraries as described here

Learn to install and use eagle