Become a subscriber (Free)

Join 29,000 other subscribers to receive subscriber sale discounts and other free resources.
Don't worry -- youre-mail address is totally secure. I promise to use it only to send you MicroZine.

Site Map

This page gives you easy access to all the information on the site.

Lolin nodeMCU ESP8266 ESP-12E

ESP8266 Arduino IDE - Learn how to program an ESP8266 using the Arduno IDE.

NodeMCU Firmware - Return the LUA scripting language back into an ESP8266.

ESPLorer - How to use ESPLorer to upload lua scripts to an ESP module.

NodeMCU Examples - from simple LED blink to wifi use.

ESP8266 Webserver - How to make a nodeMCU webeserver to control LEDs.

Digispark Attiny85

How to install and use the Digispark Attiny85

Specific IC Tutorials using Arduino

MCP4725 - A digital (I2C) controlled DAC and a look at the related MCP4726.

MCP4728 - A 4 output digitally controlled DAC (I2C).

MCP4922 - A two output digitally controlled DAC (SPI). How fast does it go?

PCF8591 - A 4 input I2C ADC. This is an 8 bit ADC which also includes a DAC

TP4056 - How to use this Lithium ion/poly battery charger the right way.

DW01A - Lithium ion/poly battery protector. This is used in the TP4056 board.

ADXL345 - How to use the ADXL345 accelerometer to measure roll and pitch.

ADS1115 - How to use this 16 ADC to measure 7.8uV. This is a precision device that you can use to make accurate measurements. It can even measure a small range of negative voltage - useful for sink/source current measurements.
AD9833 - Make a signal generator using the DDS chip to 12.5MHz. Outputs sine, square and triangle waves with a resolution of 0.1Hz.

MAX7219 - How to drive 8x8 led displays using this chip.

DS18B20 - Use the one-wire thermometer to measure accurate temperature; multi drop and long distance.

DHT22 - Also DHT11 (lower spec) - Measure humidity and temperature.

TCS230 - Let your microcontroller see colour!

HD44780 - LCD display driving. Usually a 16 character by 2 line display but can be 20x4.

MCP23017 - A 16 bit port expander (I2C) with comprehensive interrupt system.

MCP23017 Interrupts - Using multiple MCP23017 with interrupts.

BMP280 - Barometric pressure measurement.

Battery Charger - How to charge standard AA batteries.

Pulse Rate - Measurement See your pulse rate using infrared sensors.

Rotary Encoder - How to use them and make even noisy ones behave!

Arduino Joystick - Making the joystick easy to use with a useful library.

Arduino Hardware Tutorials

Three switch debouncing methods on Arduino : One is amazing!

Arduino Capacitive Sensor Sense objects using only a wire and an analogue input.

Arduino ADC - How it works; Find out its resolution and whether you should divide by 1023 or 1024 in ADC calculations.

Arduino voltage reference - The internal voltage reference is often overlooked. Find out how to use it and make it accurate and reliable.

Arduino Code Specific Tutorials

Arduino delay() - How to delay the processor so a human can see events!

Arduino millis() - Time events using milliseconds without stopping the processor.

Its a useful timer but there's a little bit of interesting code in its operation that makes it skip a beat sometimes? Should you worry about this?

Arduino pulseIn() and pulseInLong() - How to measure pulse inputs.

One of these MUST be used with interrupts turned ON.
One of these MUST be used with interrupts turned OFF.
Do you know which?

Arduino digitalWrite() - How to write a binary signal to the 0-5V output pin.

digitalWrite is a very useful generic function but you can operate 17 times faster using direct write macros - all explained in the link above

Arduino map() - Why it does not always do what you want.

Arduino for loop - How it works and how to avoid a simple mistake in using it.

Arduino while loop - How to use it and how it is different to the for loop.

Arduino interrupt - How to use them and how to get MORE, many more!!

Arduino String - How to decode serial port data into commands.

What is the difference in using a String object and using c strings?
Should you use String at all? Memory fragmentation can occur.
Find out about these issues in the link above.

Arduino EEPROM - How to read and write EEPROM.

EEPROM has a lifetime - make sure you don't use it up all at once!

Arduino Nano ISP - How to burn a bear-board Arduino using an Arduino Nano.

Arduino shiftOut - Find out how to control serial chips with this function.


Microcontroller Blog

Site news and updates

PIC Introduction

An introduction to PIC Microcontrollers.

PIC Programmer

A parallel port ICSP programmer.

PIC Programming

All about programmers, ICSP and ICPROG

PIC Compilers

                Find out why you should use a PIC compiler.


C Course

A new course showing you how to use C.

PIC Basic

Find out about the different types of PIC Basic.

PIC Projects

A selection of fully designed PIC project examples.

PIC Tutorials

More formal tutorial information on microcontrollers and protocols.
Tips and Techniques

Various design techniques and information.

Schematic tool

A useful tool for drawing, netlisting electronic schematic diagrams.


Some useful books.

Free Ezine

A unique and useful ezine which also happens to be free!



Arduino Projects

PIC Projects

PIC Parallel PortProgrammer.

16F877 : 50MHz LCD frequencycounter.

16F877 : 50MHz 7 segment frequencycounter.

16F877 : 0-5V LCD volt meter.

16F877 : LCD and Keypad using one 8 bit port (noglue logic).

Direct jump to locked page (needs unlock code)

16F877 : Driving an RGB LED.

16F877 : Serial LCD module.

16F88 : Ultrasonic range finding project.

16F88 : A Real Time Clock (DS1307) using I2C.

16F88 : Driving an LED dot matrix.

16F88 : Universal Infrared Receiver (UIR).

16F88 : Binary Clock

12F675 : Tutorial

12F675 : RS232 Serial transmitter

12F675 : Serial Temperature Logger

12F675 : EEPROM Temperature logger

12F675 : Servo motor driver

12F675 : Servo motor - serial control

Tips and Techniques

General Resources
ICSP PIC device comparison
ICSP programming
RS232 RS232 pinout
Debugging Techniques Using PIC I/O : TRIS, PORT
PIC Timer overview Crystal ppm calculations
I/O Expansion techniques Interactive Timer 0 calculator
PIC Programmers Interactive Timer 1 calculator

Interactive Timer 2 calculator

Hardware specific   
Switch debouncing Setting up RS232
12F675 : Setting OSCCAL in C 12F675 :Recovering lost calibration

Use the voltage reference module 
as a DAC
Software specific   
Hexadecimal conversions
Soft USART (TX) (TX details) Soft USART (RX/TX) (RX details)
Using fixed point maths  
Reading schematics Multitasking
Prototyping Electronic schematic symbols
Using an oscilloscope PWM

PIC Tutorial

12F675 16F84  
PIC Introduction ICSP Interrupts
MikroC compiler
I2C RS232 Setting up RS232
Frequency counting Ultrasonic range finding Software Tri PWM 
Multiplexing CCP (capture) Soft PWM
Timer 1 (polled)  

PIC Programmer information

All about programming PIC Microcontrollers.

PIC ICSP Parallel port programmer circuit.

PIC Programmer types.

Details about ICSP - In Circuit Serial Programming.

Programming PICs using ICSP and ICPROG


PIC micro programming methods.

PIC timer calculations.

Frequency counter techniques: Direct and Reciprocal counting methods.

Simple multitasking method (works for 12F675 and larger).

Microcontroller Debugging methods (also general debugging methods).

Fixed point maths

Hardware interrupts - a short introduction.

How to use the MC78M05BDTRKG voltage regulator.

Courses and Ebooks on sale

C Course

A new C course showing you how to use C to program a microcontroller (no previous programming experience needed).

Pic C Course (digital download).

C Course setup (including full BOM - both projects).

C Course summary.

C Course 1st Project and BOM (Bill Of Materials)

New! Comments

Have your say about what you just read! Leave me a comment in the box below.

Privacy Policy | Contact | About Me

Site Map | Terms of Use

Visit our Facebook Page:
To Visit Click Here

Recent Articles

  1. How to use Arduino shiftOut() for controlling chips with a 3 wire serial interface

    The Arduino shiftOut() function can simply control many different serial interfaced chips. Find out how it works and how fast it operates.

    Read more

  2. How to use the ADS1115

    A tutorial on using the ADS1115 precision 16 bit ADC for low power use.

    Read more

  3. The TP4056: Lithium Ion/polymer Battery Charger IC

    Learn how to use the TP4056 properly. There's a right, and a wrong way, to use it to safely charge Lithium Ion batteries.

    Read more

  4. How to use the MCP4922, a versatile 2 channel analogue output device

    The MCP4922 chip is an SPI interfaced 12 bit DAC but how fast can it go? Find out here.

    Read more

  5. How to use the MCP4725, a versatile and tiny (SOT-23-6) analogue output device

    The MCP4725 chip is a 12 bit DAC with memory that outputs voltage that you can use for many dfferent purposes. Find out what they are in this page.

    Read more

  6. How to use the MCP4728, a versatile four channel DAC with built in voltage reference.

    The MCP4728 chip is a four channel 12 bit DAC, with memory that outputs voltage that you can use for calibration, anywhere you want a fixed voltage.

    Read more

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's


- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan


"Awesome site,
very, very easy and nice
to navigate!"

- Matt

Learn Microcontrollers

"Interested in

Sign up for The
Free 7 day guide:


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."

- Dave


"Your site is a great
and perfect work.

- Suresh


"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.

- Anon

Back to Top