Introduction: Alarma Museo Galdeano Pardo

Para hacer nuestra alarma hemos necesitado 2 leds, un zumbador, un potenciómetro, un pulsador, un sensor de luz y un sensor de movimiento.

El código definitivo es:
int var;
int pot;
const int led1 = 12;
const int led2 = 13;
const int zumbador = 10;
const int inter = 9;
int value = 0;
int luz;


void setup() {
Serial.begin (9600);
pinMode (A2, INPUT); // potenciómetro
pinMode (inter, INPUT); //pulsador
pinMode (A4, INPUT); //sensor de luz
pinMode (led1, OUTPUT); // leds
pinMode (led2, OUTPUT);
pinMode (11, INPUT); // sensor de movimiento
}

void loop() {
luz = analogRead(A4); // lee el valor del sensor de luz
Serial.println (luz);// imprime el valor dl sensor de luz
int movi = digitalRead(11); // valor del sensor de movimiento
value = digitalRead (inter); // lee el valor del interruptor
if (value==1 || luz > 700 || movi==HIGH){ //si el pulsador esta pulsado, activa la alarma
alarma();
}
}

void alarma() {
pot= analogRead (A2);
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
tone (zumbador,440);
delay (pot);
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
noTone (zumbador);
delay (pot);
}

Step 1: Leds

Para programar los leds hay que saber que tienen dos patas con polaridad, una larga que va a positivo (5V) y una corta que va a tierra (GND). Hay que usar una resistencia de 220 K.
Código:

Para que los leds se enciendan y se apaguen hay que programar así:
const int led1 = 12;
const int led2 = 13;

Void setup () {
pinMode (led1, OUTPUT); // leds
pinMode (led2, OUTPUT);
}

Void loop () {
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
delay (pot);
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
delay (pot);
}

Step 2: Potenciómetro

El potenciómetro puede recoger valores entre 0 y 1023, y vamos a programar para que el ordenador recoja el valor del potenciómetro y ese valor será el tiempo que pase el led apagado.

void setup() {
Serial.begin (9600);
pinMode (A2, INPUT); // potenciómetro
}

void loop() {
if (value==1 || luz > 700 || movi==HIGH){
alarma();
}
}

void alarma() {
pot= analogRead (A2);
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
tone (zumbador,440);
delay (pot);
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
noTone (zumbador);
delay (pot);
}

Step 3: Zumbador

Un zumbador emite sonido. Está programado para que cuando haya cierto mivel de luz, el pulsador esté pulsado o haya movimiento, suene el tiempo que marca el potenciómetro.
Codigo:

const int zumbador = 10;

void loop() {
if (value==1 || luz > 700 || movi==HIGH){ //si el pulsador esta pulsado, activa la alarma
alarma();
}
}

void alarma() {
pot= analogRead (A2);
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
tone (zumbador,440);
delay (pot);
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
noTone (zumbador);
delay (pot);
}

Step 4: Pulsador

El pulsador solo puede recibir dos valores: encendido (1) o apagado (0). Está programado para que si está encendido (1) se active la alarma.
Código:

const int inter = 9;

void setup() {
pinMode (inter, INPUT); //pulsador
}

void loop() {
value = digitalRead (inter); // lee el valor del interruptor
if (value==1 || luz > 700 || movi==HIGH){ //si el pulsador esta pulsado, activa la alarma
alarma();
}
}

void alarma() {
pot= analogRead (A2);
digitalWrite (led1, HIGH);
digitalWrite (led2, HIGH);
tone (zumbador,440);
delay (pot);
digitalWrite (led1, LOW);
digitalWrite (led2, LOW);
noTone (zumbador);
delay (pot);
}

Step 5: Sensor De Luz

El sensor de luz puede recoger valores entre 0 y 1023, dependiendo de la luz. Primero hay que ver el nivel de luz normal al que está expuesto, y luego progamar para que si el nivel aumenta (se le enfoca con una linterna) se encienda la alarma.
Código:

int luz; //definimos la variable luz

void setup() {
pinMode (A4, INPUT); //sensor de luz
}

void loop() {
luz = analogRead(A4); // lee el valor del sensor de luz
Serial.println (luz);// imprime el valor dl sensor de luz
if (value==1 || luz > 700 || movi==HIGH){ //si el pulsador esta pulsado, activa la alarma
alarma();
}
}

Y se vuleve a poner el void alarma

Step 6: Sensor De Movimiento

El sensor de movimiento sólo recoge dos valores, si hay movimiento (1) o no (0), y está programado para que si recoge valor 1 se encienda la alarma.
Código:

pinMode (11, INPUT); // sensor de movimiento
}

void loop() {
int movi = digitalRead(11);
if (value==1 || luz > 700 || movi==HIGH){ //si el pulsador esta pulsado, activa la alarma
alarma();
}
}

Y se vuelve a definir la alarma