Abre la caja
Esta caja abierta es una caja de recursos libres que
contiene electrónica libre. Ah, y se abre automáticamente cuando la
llamas golpeándola.
Materiales
1 placa Arduino Uno board
1 shield Educación Básica
1 servo estándar
1 piezo
1 resistencia 1Mohm
4 cables
1 pilas 9V
1 portapilas 9V
1 kit OpenBox
cinta adhesiva
hilo
Instrucciones
- Conecta el shield a la parte superior de tu placa Arduino.
- Coloca el servo en la parte del kit de OpenBox para el servo.
- Conecta el servo al conector D9.
- Conecta la resistencia de 1Mohm al Pin analógico A0 y a GND a través de placa.
- Conecta una pata del piezo al Pin analógico A0, y la otra a GND en paralelo con la resistencia.
- Conecta tu Arduino al ordenador y carga ejemplo Archivo -> Ejemplos -> Castilla -> Robots -> OpenBox.
- Construye el OpenBox kit pero sin montar la tapa trasera.
- Coloca el Arduino dentro de la caja.
- Pega el piezo a la pared interior de la caja.
- Ata la cuerda al servo. Pásala por el agujero de en medio del plato y ata el otro lado a la tapa.
- Conecta la pila de 9V al Arduino antes de montar la última pared.
Código
Puedes encontrar el código en: Archivo -> Ejemplos -> Castilla -> Robots -> OpenBox
/*
* This is an open source box. More importantly,
* it’s a automatic opening box. When you knock on it,
* the box opens. Save/take your candies from it,
* and the box closes by itself.
*/
#include <BasicEducationShield.h>
//It's necessary to include Servo.h if servo is used
#include <Servo.h>
//Declare the pezio knock sensor. Connected to A0
PiezoKnockSensor sensor=PiezoKnockSensor(A0);
//Declare the servo motor for opening the lid
Servo lidOpener;
void setup(){
//define the threshold and debounce time of the knock
//sensor. Threshold defines how hard you need to knock,
//debounce time prevents the sensor from detecting
//false knocks, but also limits how rapid you can knock.
sensor.config(200,80);
//initialize the servo
lidOpener.attach(9);
//Rotate servo to close lid
lidOpener.write(0);
}
void loop(){
if(sensor.knocked()){
//rotate the servo motor to open the lid
lidOpener.write(60);
delay(3000);
//close the lid
lidOpener.write(0);
delay(200);
}
}
* This is an open source box. More importantly,
* it’s a automatic opening box. When you knock on it,
* the box opens. Save/take your candies from it,
* and the box closes by itself.
*/
#include <BasicEducationShield.h>
//It's necessary to include Servo.h if servo is used
#include <Servo.h>
//Declare the pezio knock sensor. Connected to A0
PiezoKnockSensor sensor=PiezoKnockSensor(A0);
//Declare the servo motor for opening the lid
Servo lidOpener;
void setup(){
//define the threshold and debounce time of the knock
//sensor. Threshold defines how hard you need to knock,
//debounce time prevents the sensor from detecting
//false knocks, but also limits how rapid you can knock.
sensor.config(200,80);
//initialize the servo
lidOpener.attach(9);
//Rotate servo to close lid
lidOpener.write(0);
}
void loop(){
if(sensor.knocked()){
//rotate the servo motor to open the lid
lidOpener.write(60);
delay(3000);
//close the lid
lidOpener.write(0);
delay(200);
}
}
Cómo funciona
Cuando el sensor piezoeléctrico detecta un golpe, el servo se posiciona en un ángulo determinado para que la tapa se levante. Tras esperar un tiempo, el servo hace que la tapa se cierre. Luego el programa se reinicia.¿No funciona?
- ¿La tapa no se abre / cierra por completo? Ajusta los valores en
setAngle()
para arreglarlo. Pero primero, ajusta el ángulo del brazo del servo. - ¿La caja no hace nada cuando le das un toque? Mira la referencia para corregir errores del sensor piezoeléctrico de vibración. Si aún no funciona, consulta la referencia para corregir errores del servo estándar.
¡Sigue experimentando!
- ¡Haz una caja de seguridad! Para que así tengas que abrirlo con un patrón de toques.
- Modifícalo de tal manera que tocando la caja se abra o se cierre, en lugar de abrirse y luego cerrarse automáticamente como hace ahora.
No hay comentarios:
Publicar un comentario
Los comentarios serán supervisados antes de su publicacion