mmg220
Published © GPL3+

Musical Door Lock

Instead of using a keypad to open your front door or even your safe, why not control the mechanism by a slider that glides through pitches?

IntermediateProtip3,435
Musical Door Lock

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Buzzer
Buzzer
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
LED (generic)
LED (generic)
×1
Resistor 220 ohm
Resistor 220 ohm
×1
Linear Solenoid, 12 VDC
Linear Solenoid, 12 VDC
×1

Story

Read more

Schematics

Schematic

Solenoid Schematic

Code

Code

Arduino
const int trigPin = 10;
const int echoPin = 11;
const int buzzer = 12;
const int lock = 4;
const int led = 13;

float duration, distance, note, number;


void setup() 
{
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer, OUTPUT); // Set buzzer - pin 12 as an output
  pinMode(lock, OUTPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}

void loop() 
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  number = (duration*.0343)/2;
  distance = round(number);
  delay(100);
  Serial.print("Distance: ");
  Serial.println(distance);

  if(distance < 3)
  {
    delay(1000);
    Serial.print("START");
    Sequence();
    
  } 
}


void Sequence()
  {  
    digitalWrite(lock, LOW);
    digitalWrite(led, LOW);
    delay(2000);
    if(distance < 5)
    {
      delay(1000);
      tone(buzzer, 262);
      Serial.print("C");
      delay(2000);
      digitalWrite(trigPin, LOW);
      delayMicroseconds(2);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);

      duration = pulseIn(echoPin, HIGH);
      number = (duration*.0343)/2;
      distance = round(number);
      delay(100);
      Serial.print("Distance: ");
      Serial.println(distance);
      
      if(distance == 5)
      {
        delay(1000);
        tone(buzzer, 294);
        Serial.print("D");
        delay(2000);
        digitalWrite(trigPin, LOW);
        delayMicroseconds(2);
        digitalWrite(trigPin, HIGH);
        delayMicroseconds(10);
        digitalWrite(trigPin, LOW);
  
        duration = pulseIn(echoPin, HIGH);
        number = (duration*.0343)/2;
        distance = round(number);
        delay(100);
        Serial.print("Distance: ");
        Serial.println(distance);       
        
        if(distance >= 6)
        {
        delay(1000);     
        tone(buzzer, 330);
        Serial.print("It Worked");
        digitalWrite(lock, HIGH);
        digitalWrite(led, HIGH);
        delay(1000);
        noTone(buzzer);
         }

         else if(distance < 6)
        {
        Serial.print("Didn't work 2");
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
        delay(500);
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
        delay(500);
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
      }
      }
      else if((distance < 5) || (distance >6))
      {
        Serial.print("Didn't work 1");
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
        delay(500);
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
        delay(500);
        tone(buzzer, 262);
        delay(500);
        noTone(buzzer);
      }
    }
    
    else
    {
      Serial.print("Restart");
    }
  }

Credits

mmg220
1 project • 1 follower

Comments