Author Archives: harandi

“Simple note” an Arduino musical instrument

Introduction

Simple note works like a musical keyboard. It has 8 buttons which you can use to plays notes (C D E F G A B C) similar to a piano. Pitch and duration of the notes (Octaves) can be adjusted by a potentiometers or hard-coded in the code. The video below shows the circuit in action:
Circuit
The board is shown in the picture above. Its better to build the circuit on a bread board before soldering it on a piece of strip board. The schematics for the micro sequencer is shown below:
As shown above 6 push buttons are used on digital inputs (pull up resistors, R1-R6 can be any value from 1K to 10K ohm) and two potentiometers are on Analog inputs (potentiometers can be any range from 1K to 50K ohm).
If you intend to increase the number of buttons or analog inputs simply copy the same component and connections and change the code accordingly. You can use a variety of sensors (LDRs, IR/Ultra Sonic distance meters, Force sensors, etc.) instead of the potentiometers.
Code
This program uses the Arduino tone library to play music. Program reads the eight digital inputs and plays the corresponding tone for that key on digital pin 9 of Arduino. The music signal needs to be amplified with a small amplifier like an LM386 amplifier.
Button 1, 2, 3, 4, 5, 6, 7, 8: C, D, E, F, G, A, B, C tone in order
Analog input 0: Controls the duration of tones, if you don’t want the pot simply hard code “duration” variable in the code
Analog input 1: Controls the (pitch), if you don’t want the pot simply hard code “octave” variable in the code
Download the code from here.
You can change the tones order in the variable “Melody”, so the keys would come in another other like A,B,C,D,E,F,G.
For a complete list of tones that you can use refer to the ‘Public Constants’ here. There you can read about the tone library more.
More info
Here is a simple guide to music and music alphabets. Here you can read about mapping of frequency to notes.
Advertisements

‘Micro sequencer’ an Arduino musical instrument

Introduction

Micro sequencer plays a sequence of 4 randomly chosen tones on Arduino. Tempo (playback speed) and tone length (more like a tremolo) can be controlled via two analog inputs. Four buttons control the octave of the tones where another button is used to generate a new random set of tone sequence. The sequence can be stored in the non volatile memory by pressing another button.

Circuit

The board is shown in the picture above. Its better to build the circuit on a bread board before soldering it on a piece of strip board. The schematics for the micro sequencer is shown below:

As shown above 6 push buttons are used on digital inputs (pull up resistors, R1-R6 can be any value from 1K to 10K ohm) and two potentiometers are on Analog inputs (potentiometers can be any range from 1K to 50K ohm).
If you intend to increase the number of buttons or analog inputs simply copy the same component and connections and change the code accordingly. You can use a variety of sensors (LDRs, IR/Ultra Sonic distance meters, Force sensors, etc.) instead of the potentiometers.
Code

This program uses the tremolo effect that has been developed by  Jaxon BK.
Program reads the inputs listed below and plays back a sequence according to the inputs on digital pin 9 of Arduino. The music signal needs to be amplified with a small amplifier like an LM386 amplifier.

Button 1: Generates a new random tone sequence (keep pressing until you hear a beep)
Button 2: Store the sequence to the non-volatile memory (keep pressing until you hear two beeps)

Button 3-6: Holding these button will affect the octave of the tones being played at that moment. (3 Lowest, 4  Low, 5 High, 6 Highest octave)
Analog input 0: Controls the tempo (playback speed)
Analog input 1: Controls the tremolo (similar to length of playback of the note)
The tone values are also printed on serial port of the Arduino board when button 1 or 2 are pressed. So if you would like to see the frequencies you can open the Arduino serial monitor. Saved data will be loaded upon reset. So, each time you power on or reset your Arduino the saved tone sequence will be loaded from the non-volatile memory.
Do not leave the button 2 unconnected! otherwise the program might try writing to the non-volatile memory all the time.  Pull these pins high if you do not intend to place a switch in your final circuit.

Download the code from here.

More info
Here is a simple guide to music and music alphabets. Here you can read about mapping of frequency to notes.

Arduino driving a motor with Pololu MC33887 / Seed Studio L298 Motor Driver

Introduction


There are different approaches to driving a motor when it comes to driving  a motor with Arduino. If a simple relay is used to drive a motor it can only turn the motor on and off. In case a single transistor like TIP120 (BJT) or IRF510 (MOSFE ) is used, it is possible to control the speed of the rotation. There exist smarter DC motor drivers (so called H-bridge) that can control the direction of rotation and even brake.

Seed Studio L298 Motor Driver

H-bridge_2_pot

Use this sketch and schematics above, compile and upload it to your Arduino. By changing the position of the potentiometer you should be able to change the rotation speed and direction of the motor.
Motor driver manual can be found here.

MC33887 Motor Driver

An example of such a driver is Plolu’s MC33887 Motor Driver which is affordable and versatile. This driver can control a single DC motor with maximum consumption of 2.5A and peaks of 5A. Motor voltage can range from 5-28V which makes it an excellent general purpose motor driver.

Table below describes the marking of the pins on the back side of the MC33887 driver board from Pololu:

Interfacing MC33887 Motor Driver with Arduino

In order to drive a motor with Arduino you will need the components below:

  • A DC motor (5-12V)
  • A Breadboard
  • A Pololu MC338870 driver board
  • An Arduino with a USB cable
  • Some wires
  • A DC Jack connector
  • An adapter matching the voltage of your motor (less than 5-12V)
  • 10-50KΩ Potentiometer

Make the circuit shows below:

Your circuit should look like this:

Use this sketch, compile and upload it to your Arduino. By changing the position of the potentiometer you should be able to change the rotation speed and direction of the motor.

More info:

The circuit suggested above is the simplest form of using an MC338870 to drive a motor. By using D1 and D2, Disable1 and Disable2, one can leave the motor pins in tri-state. FS, Fault Signal, pin can be used to determine malfunction of the driver. FB, Feed Back, can aslo be read with the analog inputs to determine the amount of current being consumed by the motors.

How to make a LED bracelet with small 3mm Yellow flat top LEDs and thin brass tubes

Following pictures show different steps of making an LED bracelet with small 3mm yellow LEDs and pieces of brass tube. Hover your mouse on top of each of the pictures to see details about

How to make a LED bracelet with small 3mm Orange flat top LEDs and thin wires

Following pictures show different steps of making an LED bracelet with small 3mm orange LEDs and pieces of thin wire. Hover your mouse on top of each of the pictures to see details about that step and click to have a closer look.

How to make a LED bracelet with small LEDs

Following pictures show different steps of making an LED bracelet with small LEDs and pieces of copper wire. Hover your mouse on top of each of the pictures to see details about that step and click to have a closer look.

12V Lamp on Arduino with a reed relay

Intro

Arduino has a limited current sinking/sourcing capability (less than 40 mili Amps) on its pins. Whenever you intend to switch a device which needs high current or high voltage (like a lamp or a motor) an intermediate circuit is needed. In the simplest case this intermediate circuit is a relay.

Relays

Relay acts as a normal switch, but is triggered with a magnet rather than a handle. Here we use a special kind of relay called reed relay. Such relays come in vacuum enclosures and have excellent performance in terms of being an ideal switch. Whenever driving coils there should be a diode connected across the coil in reverse bias, so it will damp the back EMF produced. However, the relay we are using has this diode across its coils internally, so we don’t need to worry about it.

Circuit

Make the circuit below:

Select the Blink sketch (File>Examples>Digital>Blink) from your Arduino software and upload it to your board. The Lamp on the bread and the LED on your Arduino board should light up at the same time.

More info

Note that similar to any other load, relays draw current. This current can be more than what an Arduino can provide. In such cases you cannot connect the relay directly to an Arduino output. Use a transistor for the relay and a diode to protect against back EMF. Here is an example how to drive such a relay with a transistor.

An easier approach for driving high current/voltage relays is to use a relay driver such as ULN2003 or ULN2803. Here is a sample schematic how to do so (taken from this rocket project).