Engineers Garage

  • Projects and Tutorials
    • Circuit Design
    • Electronic Projects
      • 8051
      • Arduino
      • ARM
      • AVR
      • PIC
      • Raspberry pi
      • STM32
    • Tutorials
    • Components
  • Articles
    • Tech Articles
    • Insight
    • Invention Stories
    • How to
    • What Is
  • News
    • EE Design News
    • DIY Reviews
    • Guest Post
    • Sponsored Content
  • Forums
    • EDABoard.com
    • Electro-Tech-Online
    • EG Forum Archive
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • EE Resources
    • DesignFast
    • LEAP Awards
    • Oscilloscope Product Finder
    • Video
    • White Papers
    • Webinars
  • EE Learning Center
  • Women in Engineering

Arduino Based Music Notes and Melody Generator with LCD

December 20, 2020 By Ashutosh Bhatt

Arduino has a wide variety of applications. It can find its use in almost all fields. Its applications increase day by day because it’s open source and anyone can create a new set of functions and library to interface any new device with Arduino. The given application demonstrates the use of Arduino as tone and melody generator. It includes keypad and LCD for user interface. The music notes or melody is generated when the key is pressed and the frequency of generated sound is displayed on LCD. So actually the given application illustrates keypad and LCD interfacing with Arduino along with tone – melody generation.
Prototype of Arduino Based Music Notes and Melody Generator

Fig. 1: Prototype of Arduino Based Music Notes and Melody Generator

Circuit description:

As shown in circuit one 16×2 LCD, one 4×3 matrix keypad, and one 8Ω speaker is interfaced with arduino board.
• The Vcc pin (2) and Vss pin (1) of LCD are connected to +5 V and Gnd pins of arduino board respectively to provide it biasing.
• LED+ pin (15) and LED- pin (16) of LCD are also connected to +5 and Gnd pins respectively to turn ON LED backlight of LCD.
• Rs pin (4) and En pin (6) are connected with arduino digital pins 8 and 9 while Rw pin (5) is permanently connected to ground for write enable.
• Data pins D4 – D7 of LCD are connected with arduino digital pins 10 – 13
• 3 columns C1, C2, and C3 of matrix keypad are connected with 0,1 and 2 pins of arduino board while 4 rows R1, R2, R3, and R4 are connected with 3, 4, 5 and 6 pins.
• One 8Ω speaker is connected to pin 7 as shown in the circuit diagram.

Circuit operation:

• Initially, the message is displayed on LCD as “keypad tone generator”
• When any key is pressed, the key press is detected and arduino identifies which key is pressed
• Based on key number that is pressed, the particular frequency sound* (tone) is generated through speaker for 1 sec time
• The key number is displayed on LCD also the frequency of generated sound is displayed on LCD
• As shown in the figure the keypad is phone keypad (numeric) it includes * key and the # key. So when * key is pressed then it generates tone melody 1 and when # key is pressed it generates tone melody 2 that is displayed on LCD
*Note: the frequency of generated sound is chosen as to produce ‘sa’, ‘re’, ‘ga’, ‘ma’, ‘pa’, ‘dha’ and ‘ni’ all seven notes of music
The complete functionality of this project is due to the software program loaded into internal FLASH memory of arduino board microcontroller ATMega328. So let us see the program and its logic explanation.

Software program and logic:

The software program is written in arduino language. It is compiled using arduino IDE software tool and uploaded into internal FLASH memory of arduino board microcontroller. We all know arduino IDE has powerful library package that includes a complete set of functions for the particular peripheral device. In this program, we are using three libraries:
1) matrix keypad – to interface matrix keypad with arduino
2) liquid crystal  – to interface LCD with arduino
3) tone generator – to generate different frequency sound
The matrix keypad library allows us to configure our matrix keypad as a number of rows-columns, key pattern etc everything. It detects key press, identifies which key is pressed and does many other functions. Liquid crystal library is as we know especially to interface different types of LCDs with arduino. It configures LCD, displays text, numeric data, clears LCD, sets cursor positions, etc. Tone generator is used to generate particular frequency sound from any digital pin of arduino.

Project Source Code

###

//Program to 

#include 

#include 


const byte ROWS = 4; // Four rows

const byte COLS = 3; // Three columns

int sound[10] = {1047,1109,1245,1319,1397,1480,1568,1661,1760,1865};

int sound_pin = 7;

// Define the Keymap

char keys[ROWS][COLS] = {

  {'1','2','3'},

  {'4','5','6'},

  {'7','8','9'},

  {'#','0','*'}

};

// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.

byte rowPins[ROWS] = { 3, 4, 5, 6 };

// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

byte colPins[COLS] = { 0, 1, 2 }; 


// Create the Keypad

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

#define ledpin 13

void setup()

{

  pinMode(ledpin,OUTPUT);

  digitalWrite(ledpin, HIGH);

  lcd.begin(16, 2);

  lcd.clear();

  lcd.print("   keypad tone");

  lcd.setCursor(4,1);

  lcd.print("generator");

}

void loop()

{

   int i;

   char key = kpd.getKey();

   if(key)  // Check for a valid key.

  {

    switch (key)

    {

      case '*':

        lcd.clear();

        lcd.print("playing melody 1");

        for(i=0;i<10;i++)

          tone(sound_pin,sound[i],500);

        break;

      case '#':

        lcd.clear();

        lcd.print("playing melody 2");

        for(i=0;i<10;i++)

          tone(sound_pin,sound[10-i],500);

        break;

      default:        

        lcd.clear();

        lcd.print("key:");

        lcd.print(key);

        lcd.setCursor(0,1);

        lcd.print("sound ");

        lcd.print(sound[key-48]);

        lcd.print(" Hz");

        tone(sound_pin,sound[key-48],1000); 

        break;

    } 

  }     

} 

###

 


Circuit Diagrams

Circuit-Diagram-Arduino-Based-Music-Notes-Melody-Generator

Project Video

Related Articles Read More >

TV remote hack using Arduino and IR sensor
Object follower robot using Arduino
Non-invasive current sensor with Arduino
Arduino-based electronic leveling device

HAVE A QUESTION?

Have a technical question about an article or other engineering questions? Check out our engineering forums EDABoard.com and Electro-Tech-Online.com where you can get those questions asked and answered by your peers!


Featured Tutorials

  • Getting Started with the ESPlorer IDE
  • SENDING TEXT MESSAGE USING ESP8266
  • CONNECTION BETWEEN TWO ESP8266
  • ESP8266 WIFI HOTSPOT
  • HOME AUTOMATION USING ESP8266
  • Open WiFi Scanner using Esp8266

Stay Up To Date

Newsletter Signup

EE Training Center Classrooms

“ee

“ee

“ee

“ee

“ee

Recent Articles

  • What are the different types of fingerprint scanners?
  • TV remote hack using Arduino and IR sensor
  • Gesture sensor using Arduino
  • Diodes adds to its family of voltage-level shifters
  • Xilinx expands UltraScale+ portfolio to include compact, intelligent edge solutions

RSS EDABOARD.com Discussions

  • WiringPi SPI without Chip Select/Enable?
  • Need help in optimizing RF antenna balun on two port network analyzer
  • Different types of screened cable, which is best?
  • Radiated immunity testing for product that has an antenna and receiver?
  • ealtek RTL8722DM_mini Arduino Compatible WiFi + BLE IoT development board

RSS Electro-Tech-Online.com Discussions

  • Help with circuit design
  • Adjustable 0-5v ground switch
  • Multiple UART Hub to USB?
  • Need to add a question to a thread.
  • Weird switching transformer noise, Audio attached
Engineers Garage
  • Analog IC TIps
  • Connector Tips
  • DesignFast
  • EDABoard Forums
  • EE World Online
  • Electro-Tech-Online Forums
  • Microcontroller Tips
  • Power Electronic Tips
  • Sensor Tips
  • Test and Measurement Tips
  • 5G Technology World
  • About Us
  • Contact Us
  • Advertise

Copyright © 2021 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Projects and Tutorials
    • Circuit Design
    • Electronic Projects
      • 8051
      • Arduino
      • ARM
      • AVR
      • PIC
      • Raspberry pi
      • STM32
    • Tutorials
    • Components
  • Articles
    • Tech Articles
    • Insight
    • Invention Stories
    • How to
    • What Is
  • News
    • EE Design News
    • DIY Reviews
    • Guest Post
    • Sponsored Content
  • Forums
    • EDABoard.com
    • Electro-Tech-Online
    • EG Forum Archive
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • EE Resources
    • DesignFast
    • LEAP Awards
    • Oscilloscope Product Finder
    • Video
    • White Papers
    • Webinars
  • EE Learning Center
  • Women in Engineering