Project tutorial
Simple Soundcard/synthesizer for Arduino | NE555 buzzer

Simple Soundcard/synthesizer for Arduino | NE555 buzzer © GPL3+

A very simple sound card / synthesizer circuit using NE555 and MCP41010.

  • 1,942 views
  • 0 comments
  • 7 respects

Components and supplies

Apps and online services

Microsoft Desktop Windows Operating System 10
Ide web
Arduino Web Editor
Or use offline IDE. Really doesn't matter lol
555square
Good web to understand NE555

About this project

Entire story in a nutshell!

What does it do?

A very simple circuit to make Arduino sing using NE555 and a digital potentiometer.

Circuits

Basically Arduino controls MCP41010 digital potentiometer with SPI. Then instead of using digital potentiometer as a potentiometer, use it as a variable resistor. Therefore leave one terminal(either A or B) and them connect the rest two to the NE555. I used NE555 circuit from this web. It's more intuitive so I bet this will help a lot.

I used a generic NE555P. Most NE555 will work between 4.5V to 15V. However, ideal operating voltage is about 9V to 12V. I did find Arduino wasn't able to deliver constant 5V and the frequency changed dramatically but only when powered by a USB power bank or else. Just one thing to be aware of.

I chose 1uF capacitor because it will give me a good range of frequency from about 70Hz. This will well cover piano range.

Software

I've attached the Arduino code. It's simple SPI communication. MCPWrite is the method that sends data to the MCP41010. Note SPI pins are reserved on Arduino and it does not need to set manually. CS is a pin which tells MCP if it should take the data or not.

More importantly, frequency chart(attached) will tell you which step on the potentiometer must be set in order to get a particular frequency. Use this intuitive chart to make your Arduino sing at whatever frequency you want!

Conclusion

This project my code of "KISS". It stands for Keep It Simple and Stupid. There's virtually no advantage of using this. Here's why:

This NE555 synthesizer

PROS:

  • You can use an earbud (that is likely to be too loud to put it in your ears.)

CONS:

  • NOT very specific frequency steps.
  • NOT wide frequency coverage.
  • Uses too many pins
  • Simple but extremely more complicated than the alternative.
  • Will require constant 5V(else NE555 starts to act werid)
  • Coding is too complicated compared to the alternative.

A Buzzer (The best alternative)

PROS:

  • Super easy to use
  • Super simple methods already exsit
  • Uses only one pin
  • Pretty wide frequency range,
  • Pretty specific frequency steps.

CONS:

  • It looks like you've just attached a buzzer instead of having a fancy circuit.
  • Will wake your neighbors up.

Therefore, This whole idea is kind of stupid. The only way I see this useful is to help understand NE555 or to teach concepts of using digital potentiometer, I guess. The point is, I can't find a good real life use of this.

At least this was fun building it and I learned how to use digital potentiometer so I guess it's cool.

Code

Arduino CodeArduino
Makes Arduino sing using MCP and NE555. Will be quite straight forward.
#include <SPI.h>
const int CS = 8;

void setup() {
  pinMode(CS, OUTPUT);
  SPI.begin();
}

void loop() {
  MCPWrite(78);
  delay(500);
  MCPWrite(48);
  delay(500);
  MCPWrite(58);
  delay(3000);
  MCPWrite(58);
  delay(500);
  MCPWrite(51);
  delay(500);
  MCPWrite(48);
  delay(3000);
  MCPWrite(58);
  delay(375);
  MCPWrite(48);
  delay(375);
  MCPWrite(38);
  delay(250);
  MCPWrite(43);
  delay(3000);
  MCPWrite(58);
  delay(500);
  MCPWrite(51);
  delay(500);
  MCPWrite(48);
  delay(2000);
  MCPWrite(51);
  delay(1750);
  MCPWrite(65);
  delay(250);
  MCPWrite(65);
  delay(375);
  MCPWrite(69);
  delay(375);
  MCPWrite(87);
  delay(2000);
}

void MCPWrite(int value) 
{
  //value is step# for controlling resistance!
  digitalWrite(CS,LOW);
  SPI.transfer(B00010001); // This tells the chip to set the pot
  SPI.transfer((byte)value);     // This tells it the pot position
  digitalWrite(CS,HIGH);
}

Schematics

Schematic
Shows MCP41010 and NE555 connected together. Quite simple if you think about it.
untitled_sketch_LfGD7yTHRQ.fzz
Excel file for frequency chart
book1_ADwQzj7g33.xlsx

Comments

Similar projects you might like

Arduino Simple "Camera Slider" Electronics

Project tutorial by Ian Cumming

  • 6,069 views
  • 3 comments
  • 17 respects

Simple Obstacle Sensor with Arduino

Project tutorial by muhammed shameel k.v

  • 3,936 views
  • 2 comments
  • 7 respects

Simple Arduino Optical Chopper

Project tutorial by Brendan Sweeny

  • 2,022 views
  • 0 comments
  • 4 respects

Simple Door Prank with Arduino 1Sheeld

Project tutorial by Zowail

  • 957 views
  • 0 comments
  • 6 respects

Simple Arduino Uno - ESP 8266 Integration

Project tutorial by circuito.io team

  • 96,162 views
  • 23 comments
  • 79 respects

Simple Programmable Robotic Arm

Project showcase by Ryan Chan

  • 49,100 views
  • 63 comments
  • 145 respects
Add projectSign up / Login