May the 4th be with you

The 4th of May, is the day when it is completely normal to geek out and celebrate Star Wars!

This year I used an Ardunio Uno to play “The Imperial March” and display “May the 4th be with you!” on an LCD display.

Wiring schematics:

Ardunio Uno Wiring diagram

Project source code:

// Script Name: May the 4th be with you - 2021
// Created By: Woodward.Digital
// Credit to: Nick James, https://gist.github.com/nicksort for The Imperial March code
// Website: https://woodward.digital
// Email: contact@woodward.digital

#include <LiquidCrystal.h>

// Set pins for LCD interface
// Details the pin on the LCD = the Arduino pin
const int rs = 12;
const int en = 11;
const int d4 = 5;
const int d5 = 4;
const int d6 = 3;
const int d7 = 2;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
// Initialize all the notes for the Imperial March
const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
const int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
const int b = 466;
const int cH = 523;
const int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
const int fH = 698;
const int fSH = 740;
const int gH = 784;
const int gSH = 830;
const int aH = 880;
int counter = 0;

// Set the pin for the buzzer
const int buzzerPin = 9;

void setup() {
lcd.begin (16,2); //Initialize the LCD
lcd.home ();
pinMode(buzzerPin, OUTPUT);
}
 
void loop() {
delay(1000);
lcd.setCursor(0,0);
lcd.print("May the 4th");
lcd.setCursor(0,1);
lcd.print("Be with you!");

//Play first section
firstSection();

//Play second section
secondSection();

//Variant 1
beep(f, 250);  
beep(gS, 500);  
beep(f, 350);  
beep(a, 125);
beep(cH, 500);
beep(a, 375);  
beep(cH, 125);
beep(eH, 650);

delay(500);

//Repeat second section
secondSection();

//Variant 2
beep(f, 250);  
beep(gS, 500);  
beep(f, 375);  
beep(cH, 125);
beep(a, 500);  
beep(f, 375);  
beep(cH, 125);
beep(a, 650);  
 
delay(650);
delay(10000);
}
 
void beep(int note, int duration)
{
//Play tone on buzzerPin
tone(buzzerPin, note, duration);

delay(duration); 
 
//Stop tone on buzzerPin
noTone(buzzerPin);
 
delay(50);
 
//Increment counter
counter++;
}
 
void firstSection()
{
beep(a, 500);
beep(a, 500);    
beep(a, 500);
beep(f, 350);
beep(cH, 150);  
beep(a, 500);
beep(f, 350);
beep(cH, 150);
beep(a, 650);
 
delay(500);
 
beep(eH, 500);
beep(eH, 500);
beep(eH, 500);  
beep(fH, 350);
beep(cH, 150);
beep(gS, 500);
beep(f, 350);
beep(cH, 150);
beep(a, 650);

delay(500);
}
 
void secondSection()
{
beep(aH, 500);
beep(a, 300);
beep(a, 150);
beep(aH, 500);
beep(gSH, 325);
beep(gH, 175);
beep(fSH, 125);
beep(fH, 125);    
beep(fSH, 250);

delay(325);
 
beep(aS, 250);
beep(dSH, 500);
beep(dH, 325);  
beep(cSH, 175);  
beep(cH, 125);  
beep(b, 125);  
beep(cH, 250);  

delay(350);
}

// Credit to: Nick James, https://gist.github.com/nicksort for The Imperial March code

For full parts list please visit: https://create.arduino.cc/projecthub/woodwarddigital/may-the-4th-be-with-you-325946

Please contact me if you have any comments or suggestions: contact@woodward.digital

Leave a Reply

Your email address will not be published. Required fields are marked *