## The Amazing Annoyatron

0 of 20 lessons complete (0%)

# Wakey Wakey

Thought there was nothing more annoying than the alarm clock? Well, you’re wrong. Here at EduKits, we’ve managed to build something even worse – an alarm clock that goes off at the wrong time.

## Step 1

### Let’s build this

This is the positive leg of the buzzer. It will have a ‘+’ over top and will also be longer than the other leg.

The light sensor and the resistor both need to be plugged into pin A0.

#### Connections

##### Buzzer

The +LEG is the longer leg.

+ LEG11
– LEGGND

##### Light Sensor

Both legs are the same.

LEGA0
LEG5V

##### Resistor

Both legs are the same.

LEGA0
LEGGND

## Step 2

### Code some chaos

#### Copy and paste the sample code

wakey_wakey.ino
``````int LDR = 0;
int buzzer = 11;

void setup() {
pinMode(LDR, INPUT);
pinMode(buzzer, OUTPUT);
}

void loop() {

alarmTrigger(1);
}

}

void alarmTrigger(int i) {
for(int x = 0; x < i; x++) {
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
delay(500);
}
}``````

## Step 3

#### Change how much light triggers the alarm

To trigger the alarm, the program first needs to see that there’s enough light. However, you may want to fine-tune exactly how much light we need to set off the alarm. At the moment, it’s set to a value of 150 on line 11 of the code.

``if(analogRead(LDR) > 150) {``

That line of code is just saying that we should run the next few lines of code which trigger the alarm if we have light over a value of 150. If we decrease this, it will take less light to trigger the alarm. If increase this, it will need to be brighter for the alarm to go off.

#### Change how long the alarm stays on

Once the alarm has been triggered by a certain level of light, we can control exactly how long it stays on for afterwards. In our program, we set the alarm to beep five times before resetting, ready to be triggered again. Take a look at line 12:

``alarmTrigger(1); // Trigger the alarm for 1 beep``

By changing this code, we can either increase or decrease the number of beeps that the alarm stays on for when triggered. If we wanted it to stay on for 10 beeps, we would use the following code:

``alarmTrigger(10); // Trigger the alarm for 10 beeps``

#### Change the sound of the alarm

We can change the tone – or in other words, the sound – of the beeping using something called the tone() function. Take a look at the code on lines 26-29, which is what we are currently using for our beeps:

``````analogWrite(buzzer, 255);
delay(500);
analogWrite(buzzer, 0);
delay(500);``````

To be able to change the tone of the beeps, replace lines 19-22 of your program with the following code:

``````tone(buzzer, 1000, 500);
delay(1000);``````

The following code works like this: tone(buzzer, pitch, length). Replace the word pitch with any number you like, and this will control the sound of the beep. Replace the word length with exactly how long you want the beep to go for in milliseconds.

Here’s a different beeping sound that you can try out on your project:

``````tone(buzzer, 5000, 750);
delay(1000);``````