Posted on Leave a comment

May the 4th be with you

May the force 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: [email protected]

#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: [email protected]