La lámpara de IKEA Robot (4 / 4 paso)

Paso 4: El código

El código:
Aquí está la primera versión del código, necesita mucha mejora. Hay algunas i´m de las bibliotecas no usando el bucle principal, pero puede ser utilizado para modificar el comportamiento de la lámpara.
Así que ¡ disfrute! ;-)

/ * Para el concurso de SeeedStudio juguete Hack
Base don los ejemplos del sensor de movimiento, sensor de noción, servo de mando y otros.
www.arduinoarts.com * /

#include < Servo.h >
const int buttonPin = 4;     Estado de interruptor
int buttonState = 0;         variable para lectura del estado del pulsador

Ajuste de servos

Servo myservo2;
Servo myservo;  crear objeto servo para controlar un servo
int pos = 0;    variable para almacenar la posición del servo
int pos2 = 0;    variable para almacenar la posición del servo
int val1;
int val2;

CONFIGURACIÓN DE LED

const int ledPin2 = 5; //Base luz
const int ledPin = 12; //Lamp luz

int countlamp2 = 0;   número de bucles de servo

Instalación de la ruido

const int thresholdvalue = 300; respuesta de //The umbral ruido

CONFIGURACIÓN de acelerómetro

int ystate;
int xstate;

#include < Wire.h >

#define MMA7660addr 0x4c
#define MMA7660_X 0 x 00
#define MMA7660_Y 0 x 01
#define MMA7660_Z 0 x 02
#define MMA7660_TILT 0 x 03
#define MMA7660_SRST 0 x 04
#define MMA7660_SPCNT 0 x 05
#define MMA7660_INTSU 0 x 06
#define MMA7660_MODE 0x07
#define MMA7660_SR 0x08
#define MMA7660_PDET 0 x 09
#define MMA7660_PD 0x0A

clase de aceleración
{
público:
char x;
char y;
char z;
};

Índice de Char;
control de Char;
Estado de Char;

int audiodelay = 1000;

void mma7660_init(void)
{
Wire.Begin();
Wire.beginTransmission (MMA7660addr);
Wire.Send(MMA7660_MODE);
Wire.Send(0x00);
Wire.endTransmission();

Wire.beginTransmission (MMA7660addr);
Wire.Send(MMA7660_SR);
Wire.Send(0x07);  Muestras/segundo activo y el modo de suspensión
Wire.endTransmission();

Wire.beginTransmission (MMA7660addr);
Wire.Send(MMA7660_MODE);
Wire.Send (0 x 01), de modo //active
Wire.endTransmission();

}

void setup()
{
mma7660_init();        Únete a bus i2c (dirección opcional para el maestro)
Serial.Begin(9600);
Sensor de movimiento
pinMode (6, entrada); //Use pin 2 para recibir la señal que se generan por el módulo
Luz de la lámpara y lámpara de base
pinMode (ledPin, salida);
pinMode (ledPin2, salida);
SERVOS

AUDIO
DDRD | 0X0C;   D2 y D3 en el modo de escritura;
PORTD & = 0xF3;  Conjunto D2 y D3 a la baja;
Sensor de ruido analógico 0
INTERRUPTOR
pinMode (buttonPin, entrada);
}

void rec_2_begin()
{
PORTD = (PORTD | 0b00000100) & 0b11110111;
}
void rec_2_stop()
{
PORTD & = 0xF3;
}
void play_2()
{
PORTD = (PORTD | 0b00000100) & 0b11110111;
Delay(audiodelay);
PORTD & = 0xF3;
}
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
función para el control de la segment_3
void rec_3_begin()
{
PORTD = (PORTD | 0b00001000) y 0b11111011;
}
void rec_3_stop()
{
PORTD & = 0xF3;
}
void play_3()
{
PORTD = (PORTD | 0b00001000) y 0b11111011;
Delay(audiodelay);
PORTD & = 0xF3;
}
/////////////////////////////////////////////////////
////////////////////////////////////////////////
función para el control de la segment_4;
void rec_4_begin()
{
PORTD = PORTD | 0b00001100;
}
void rec_4_stop()
{
PORTD & = 0xF3;
}
void play_4()
{
PORTD = PORTD | 0b00001100;
Delay(audiodelay);
PORTD & = 0xF3;
}
//////////////////////

void check_move()
{
int sensorValue = digitalRead(6);
if(sensorValue==1)
{
digitalWrite(ledPin,HIGH);
Serial.println (sensorValue, DEC); //Print el estado de la señal a través del monitor serie.
servo1();

}
otra cosa
{
digitalWrite(ledPin,LOW);
Serial.println (sensorValue, DEC); //Print el estado de la señal a través del monitor serie.
servo2();
}
}

void servo1_right()
{
myservo.Attach(9);
para (pos = 90; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
/ * play_2();
Delay(1000);
para (pos = 180; pos > = 90; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}*/
}
void servo1_left()
{
myservo.Attach(9);
para (pos = 90; pos > 1; pos = 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}/*
play_2();
Delay(1000);
para (pos = 1; pos < = 90; pos += 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}*/
}

void servo1_return()
{
myservo.Attach(9);
int posact = myservo.read();
Si (myservo.read() > 90) {}
para (pos = posact; pos > 90; pos = 1) / / devuelve a 90
{/ / en pasos de 1 grado
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
}
Else {}
para (pos = posact; pos < = 90; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
}
}

void servo2_right()
{
myservo2.Attach(10);
para (pos = 90; pos < 120; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo2.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
/ * play_2();
Delay(1000);
para (pos = 180; pos > = 90; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}*/
}
void servo2_left()
{
myservo2.Attach(10);
para (pos = 90; pos > 60; pos = 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo2.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}/*
play_2();
Delay(1000);
para (pos = 1; pos < = 90; pos += 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}*/
}

void servo2_return()
{
myservo2.Attach(10);
int posact = myservo2.read();
Si (myservo2.read() > 90) {}
para (pos = posact; pos > 90; pos = 1) / / devuelve a 90
{/ / en pasos de 1 grado
myservo2.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
}
Else {}
para (pos = posact; pos < = 90; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo2.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
}
}

void servo1_no()
{
myservo.Attach(9);
para (pos = 90; pos < 120; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
para (pos = 120; pos > = 90; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(10);                       espera 15ms para el servo a la posición
}
}

void servo2()
{
myservo2.Attach(10);
para (pos2 = 110; pos2 < 140; pos2 += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado
myservo2.Write(POS2);              Dile el servo a la posición en la variable 'pos'
Delay(15);                       espera 15ms para el servo a la posición
}

}

void servo1R()
{
myservo.Write(90);
myservo.Detach();

}
void servo2R()
{
myservo2.Write(90);
myservo2.Detach();
}

void lampblink()
{
int sensorValue = digitalRead(6);
Si (sensorValue = 1) {}
digitalWrite(ledPin,HIGH);
retardo (1);
digitalWrite(ledPin,LOW);
retardo (1);
//}
otra cosa
digitalWrite(ledPin,LOW);
}
void lamptest()
{

para (int i = 0; i < 100; i ++)
{
digitalWrite (12, HIGH);
Delay(50);
digitalWrite (12, bajo);
Delay(50);
}
}

void lampoff()
{
retrasar (2000);
digitalWrite (ledPin, LOW);
}

acelerómetro

void Ecom()
{
unsigned char val [3];
int cuenta = 0;
Val [0] = val [1] = val [2] = 64;
Wire.requestFrom(0x4c, 3);    Reciba 3 bytes del dispositivo esclavo 0x4c

while(Wire.Available())
{
if(Count < 3)
mientras (val [cuenta] > 63) / / cargar la maldita cosa es malo
{
Val [cuenta] = Wire.receive();

}
cuenta ++;
}

transformar los 7 bits firmaron número en una de 8 bits firmado número.
Aceleración ret;

Ret.x = ((char) (val [0] << 2)) / 4;
Ret.y = ((char) (val [1] << 2)) / 4;
Ret.z = ((char) (val [2] << 2)) / 4;
ystate = ret.y;
xstate = ret.x;

Serial.Print ("x =");
Serial.println(Ret.x,DEC);   imprimir la lectura

Serial.Print ("y =");
Serial.println(Ret.y,DEC);   imprimir la lectura

Serial.Print ("z =");
Serial.println(Ret.z,DEC);   imprimir la lectura * /
}

char la lectura = 0;

void loop()
{

Ecom(); comprobar estado de acelerómetro
digitalWrite(ledPin2,HIGH);
buttonState = digitalRead(buttonPin);  leer el estado del interruptor

Si (buttonState == HIGH)
{
lampblink(); / / enciende el LED:
myservo.Attach(9);  se fija el servo en el pin 9 al objeto servo
myservo2.Attach(10);  se fija el servo en el pin 9 al objeto servo
val1 = ystate;            Lee el valor del potenciómetro (valor entre 0 y 1023)
val1 = mapa (val1, 30, -30, 0, 179);     la escala a utilizar con el servo (valor entre 0 y 180)
myservo2.Write(val1);                  ajusta la posición del servo según el valor de escala
val2 = xstate;            Lee el valor del potenciómetro (valor entre 0 y 1023)
val2 = mapa (val2, -30, 30, 0, 179);     la escala a utilizar con el servo (valor entre 0 y 180)
myservo.Write(val2);                  ajusta la posición del servo según el valor de escala

Si (ystate < -15) {}
play_3();
}
}
Else {}
control de ruido
int sensorValue2 = analogRead (A0); sensor de //noise
Serial.println(sensorValue2);
if(sensorValue2>thresholdvalue)
{
Serial.println("Yes");
digitalWrite(ledNoise,HIGH);
play_4();
lampoff();
lampblink();
servo1_no();
servo1_no();
servo1R();
Delay(1000);
}
otra cosa
{
lampoff();
}
control de movimiento
int sensorValue = digitalRead(6); sensor de movimiento
if(sensorValue==1)
{
Serial.println("Move");
movestate = 1;
lampblink();
servo2();
servo2_right();
servo1_right();
play_2();
retrasar (1000);
servo2_return();
servo1_return();
servo1_left();
servo2_left();
play_2();
retrasar (1000);
servo2_return();
servo1_return();
Delay(1000);
}
otra cosa
{
digitalWrite(ledNoise,LOW);
servo2();
servo1R();
servo2R();
lampoff();
play_2();
movestate = 0;

}

}
}

Artículos Relacionados

Proyector de los medios de comunicación barato y simple con una lámpara de ikea reciclada

Proyector de los medios de comunicación barato y simple con una lámpara de ikea reciclada

El propósito del proyecto es reciclar una vieja lámpara de ikea que tengo en algo más elegante. En mi caso, quiero una mejor lámpara decorativa, pero con algunas modificaciones puede tener un proyector de diapositivas (con LED o bombilla estándar) o
Lámparas de IKEA hacer viejas bases de la lámpara nueva otra vez!

Lámparas de IKEA hacer viejas bases de la lámpara nueva otra vez!

he encontrado dos lámparas utiliza-a-ser-bastante atascadas en el barro en la granja de mi amigo. Hosed EM y trajo em casa y por último averiguado cómo hacer útil otra vez.Me ha pasado en dos bases de la lámpara de Ikea en la tienda de un dólar cada
Linterna lámpara de IKEA ROTERA

Linterna lámpara de IKEA ROTERA

¿Aburrido de las lámparas se pueden encontrar en walmart? ¿Como el instinto de ye olde farolas? ¿Como hacer cosas y llenar su habitación con ellos? Pues yo tengo el instructable para usted!Este instructable te deja con una funcional, único y bastante
Convertir una lámpara de IKEA APPLARO regular en una bonita lámpara.

Convertir una lámpara de IKEA APPLARO regular en una bonita lámpara.

Mi compañero compró un par de IKEA APPLARO lámparas y he pensado poner algunos mi sobras del papel de arte encima de ella, sería mejor. Y seguro que lucen mejor. El proyecto tomó cerca de 2.5-3 horas. Puede utilizar cualquier papel fino que no bloque
Diversión con lámpara de IKEA

Diversión con lámpara de IKEA

nada especial.Nada nuevo.Es sólo mi propia versión de la luz de estado de ánimo con la famosa lámpara de IKEA Mylonit.Paso 1: Lo desarma. Botella de dejar solo.Vamos a jugar con el zócalo del bulbo.Paso 2: Eso fue fácil. Vamos a traer algunas partes
Smartify FRYEBO la lámpara de Ikea

Smartify FRYEBO la lámpara de Ikea

IKEA es muy famoso por su diseño minimalista y simplicidad. La lámpara FRYEBO es un objeto precioso diseñado específicamente para ser usable, sencillo e intuitivo.Siguiendo la misma filosofía que decidimos smartify esta lámpara añadiendo un círculo d
¿Lámpara de IKEA?  ¿Cortina de Ikea no?  Fija en $3!

¿Lámpara de IKEA? ¿Cortina de Ikea no? Fija en $3!

¿Tiene una lámpara de Ikea y quiere tener una cortina de Ikea no? Solucionar ese problema por menos de $3!He buscado por todas partes para una solución rápida, fácil, un poco gizmo o adaptador o algo, todo en vano. Después de lo que algunos pensaban
Cambio de la lámpara de IKEA. Artículo "Como es" acaba de conseguir mejor.

Cambio de la lámpara de IKEA. Artículo "Como es" acaba de conseguir mejor.

Todos los fans de Ikea conoces la sección "tal cual", correcta??Y a veces encuentras cosas que se, es que está demasiado dañados.Bueno, señoras y robots, creo que es una buena oportunidad para un cambio de imagen.Verás, vivo en la ciudad de Méxi
Steampunk modificada lámpara de IKEA para camping

Steampunk modificada lámpara de IKEA para camping

para la vida al aire libre steampunker moderno toma su linterna modificada de IKEA.Ver como va.Paso 1: Cómo hacerlo Tomar tal un anillo de un sostenedor de la lámpara un corte hacia abajo como se ve. Poner a la pequeña vela holderm desde la parte inf
IKEA ROBOT

IKEA ROBOT

Inspirado en un proyecto de Kickstarter , yo no podía ni andar más allá de la caja de piezas de repuesto en mi Ikea local. Así que tomó una bolsa y lleno de piezas de hardware. (sobre todo las bisagras de mueble de cocina) Una bolsa grande llena valo
Sencilla lámpara de Ikea-hack

Sencilla lámpara de Ikea-hack

estas instrucciones muestran cómo hice una lámpara simple para una pantalla de cartulina. La pantalla no era realmente adecuada para una lámpara normal ya que la bombilla puede verse a través de la corrugación. En términos generales, esta lámpara deb
Lámpara de IKEA hacks para 2 iMacs

Lámpara de IKEA hacks para 2 iMacs

sé hay lámparas USB de LED para portátiles, pero necesito un derecho sobre las pantallas.así que aquí hay hacks para iMac G4 y un Intel.... no sé exactamente qué nombre de modelo es esta lámpara IKEA...Paso 1: Para el G4, desatornillar las placas inf
Lámpara de Instructables Robot cinético. Lampara Movil.

Lámpara de Instructables Robot cinético. Lampara Movil.

Este es mi primer Ible con la ayuda de mi papá, we´re va a hacer una lámpara con movimiento, especial para un regalo o para decorar su árbol de Navidad.Este es mi primer proyecto y con la ayuda de mi papa vamos a crear una lampara móvil especial para
Elegante lámpara de IKEA partes

Elegante lámpara de IKEA partes

de repente, una inspiración única llevó a la creación de una lámpara con estilo...hecha de dos botellero VURM espalda con espalda, para explotar su forma intrigante, junto con una lámpara LERSTA como apoyo.Paso 1: Concepto GeneralLa Asamblea General