La lampe de Robot IKEA (4 / 4 étapes)

Étape 4: Le Code

Le Code :
Voici la première version du code, ont besoin de beaucoup d’amélioration. Il y a quelques bibliothèques i´m pas utiliser sur la boucle principale, mais peut être utilisé pour modifier le comportement du feu.
Alors profitez ! ;-)

/ * Faite par pour le concours de SeeedStudio jouet Hack
Base de don les exemples du détecteur de mouvement, capteur de notion, servo de bouton et d’autres.
www.arduinoarts.com * /

#include < Servo.h >
const int buttonPin = 4 ;     État de l’interrupteur
buttonState int = 0 ;         variable pour la lecture de l’état de bouton poussoir

Installation de servo

Servo myservo2 ;
Servo myservo ;  Créez l’objet servo pour contrôler un servo
int pos = 0 ;    variable pour stocker la position du servo
pos2 int = 0 ;    variable pour stocker la position du servo
int val1 ;
val2 int ;

INSTALLATION DE LED

const int ledPin2 = 5; //Base lumière
const int ledPin = 12 ; //Lamp Light

int countlamp2 = 0 ;   nombre de boucles sur servo

Installation de bruit

const int thresholdvalue = 300 ; réponse de bruit pour le seuil //The

Accéléromètre SETUP

int ystate ;
xstate int ;

#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 0 x 07
#define MMA7660_SR 0 x 08
#define MMA7660_PDET 0 x 09
#define MMA7660_PD 0x0A

Accélération de la classe
{
public :
char x ;
char y ;
z de char ;
};

indice de char ;
contrôle de char ;
État de char ;

int audiodelay = 1000 ;

Sub 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) ;  Échantillons/seconde Active et Auto-Sleep Mode
Wire.endTransmission() ;

Wire.beginTransmission (MMA7660addr) ;
Wire.Send(MMA7660_MODE) ;
Wire.Send (0 x 01); //active mode
Wire.endTransmission() ;

}

void setup()
{
mma7660_init() ;        Joignez-vous à bus i2c (adresse facultatif pour maître)
Serial.Begin(9600) ;
Détecteur de mouvement
pinMode (entrée 6,); //Use broche 2 de recevoir le signal émis par le module
Lampe lumière et lumière de base
pinMode (ledPin, sortie) ;
pinMode (ledPin2, sortie) ;
SERVOS

AUDIO
DDDR | = 0X0C ;   D2 et D3 en mode écriture ;
PORTD & = 0xF3 ;  D2 et D3 réglé à basse ;
Bruit du capteur analogique 0
INTERRUPTEUR
pinMode (buttonPin, entrée) ;
}

Sub rec_2_begin()
{
PORTD = (PORTD | 0b00000100) & 0b11110111 ;
}
Sub rec_2_stop()
{
PORTD & = 0xF3 ;
}
Sub play_2()
{
PORTD = (PORTD | 0b00000100) & 0b11110111 ;
Delay(audiodelay) ;
PORTD & = 0xF3 ;
}
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
fonction pour contrôler la segment_3
Sub rec_3_begin()
{
PORTD = (PORTD | 0b00001000) & 0b11111011 ;
}
Sub rec_3_stop()
{
PORTD & = 0xF3 ;
}
Sub play_3()
{
PORTD = (PORTD | 0b00001000) & 0b11111011 ;
Delay(audiodelay) ;
PORTD & = 0xF3 ;
}
/////////////////////////////////////////////////////
////////////////////////////////////////////////
fonction pour contrôler la segment_4 ;
Sub rec_4_begin()
{
PORTD = PORTD | 0b00001100 ;
}
Sub rec_4_stop()
{
PORTD & = 0xF3 ;
}
Sub play_4()
{
PORTD = PORTD | 0b00001100 ;
Delay(audiodelay) ;
PORTD & = 0xF3 ;
}
//////////////////////

Sub check_move()
{
int sensorValue = digitalRead(6) ;
if(sensorValue==1)
{
digitalWrite(ledPin,HIGH) ;
Serial.println (sensorValue, DEC); //Print l’état du signal par le moniteur de la série.
SERVO1() ;

}
d’autre
{
digitalWrite(ledPin,LOW) ;
Serial.println (sensorValue, DEC); //Print l’état du signal par le moniteur de la série.
Servo2() ;
}
}

Sub servo1_right()
{
myservo.Attach(9) ;
pour (pos = 90; pos < 180; pos += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
/ * play_2() ;
Delay(1000) ;
pour (pos = 180; pos > = 90; pos-= 1) / / va de 180 degrés à 0 degrés
{
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}*/
}
Sub servo1_left()
{
myservo.Attach(9) ;
pour (pos = 90; pos > 1; pos = 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}/*
play_2() ;
Delay(1000) ;
pour (pos = 1; pos < = 90; pos += 1) / / va de 180 degrés à 0 degrés
{
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}*/
}

Sub servo1_return()
{
myservo.Attach(9) ;
int posact = myservo.read() ;
Si (myservo.read() > 90) {}
pour (pos = posact; pos > 90; pos = 1) / / retour à 90
{/ / par incréments de 1 degré
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
}
else {}
pour (pos = posact; pos < = 90; pos += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
}
}

Sub servo2_right()
{
myservo2.Attach(10) ;
pour (pos = 90; pos < 120; pos += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo2.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
/ * play_2() ;
Delay(1000) ;
pour (pos = 180; pos > = 90; pos-= 1) / / va de 180 degrés à 0 degrés
{
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}*/
}
Sub servo2_left()
{
myservo2.Attach(10) ;
pour (pos = 90; pos > 60; pos = 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo2.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}/*
play_2() ;
Delay(1000) ;
pour (pos = 1; pos < = 90; pos += 1) / / va de 180 degrés à 0 degrés
{
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}*/
}

Sub servo2_return()
{
myservo2.Attach(10) ;
int posact = myservo2.read() ;
Si (myservo2.read() > 90) {}
pour (pos = posact; pos > 90; pos = 1) / / retour à 90
{/ / par incréments de 1 degré
myservo2.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
}
else {}
pour (pos = posact; pos < = 90; pos += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo2.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
}
}

Sub servo1_no()
{
myservo.Attach(9) ;
pour (pos = 90; pos < 120; pos += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
pour (pos = 120; pos > = 90; pos-= 1) / / va de 180 degrés à 0 degrés
{
myservo.Write(POS) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(10) ;                       attend 15 ms pour le servo atteindre la position
}
}

Sub servo2()
{
myservo2.Attach(10) ;
pour (pos2 = 110 ; pos2 < 140 ; pos2 += 1) / / va de 0 degrés à 180 degrés
{/ / par incréments de 1 degré
myservo2.Write(POS2) ;              dire de servo pour aller à positionner dans la variable « pos »
Delay(15) ;                       attend 15 ms pour le servo atteindre la position
}

}

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

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

Sub lampblink()
{
int sensorValue = digitalRead(6) ;
Si (sensorValue = 1) {}
digitalWrite(ledPin,HIGH) ;
retard (1) ;
digitalWrite(ledPin,LOW) ;
retard (1) ;
//}
d’autre
digitalWrite(ledPin,LOW) ;
}
Sub lamptest()
{

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

Sub lampoff()
{
retarder (2000) ;
digitalWrite (ledPin, basse) ;
}

accéléromètre

Sub Ecom()
{
unsigned char val [3] ;
int count = 0 ;
Val [0] = val [1] = val [2] = 64 ;
Wire.requestFrom(0x4c, 3) ;    demander 3 octets du périphérique esclave 0x4c

while(Wire.available())
{
if(Count < 3)
tandis que (val [count] > 63) / / recharger cette saloperie c’est mauvais
{
Val [count] = Wire.receive() ;

}
Count ++ ;
}

transformer les 7 bits signé nombre dans un 8 bits signé nombre.
Accélération 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) ;   imprimer la lecture

Serial.Print ("y =") ;
Serial.println(RET.y,DEC) ;   imprimer la lecture

Serial.Print ("z =") ;
Serial.println(RET.z,DEC) ;   imprimer la lecture * /
}

char de lecture = 0 ;

void loop()
{

Ecom() ; vérifier l’état de l’accéléromètre
digitalWrite(ledPin2,HIGH) ;
buttonState = digitalRead(buttonPin) ;  lire l’état de l’interrupteur

Si (buttonState == HIGH)
{
lampblink(); / / LED s’allume :
myservo.Attach(9) ;  attache le servo sur la broche 9 à l’objet de servo
myservo2.Attach(10) ;  attache le servo sur la broche 9 à l’objet de servo
val1 = ystate ;            lit la valeur du potentiomètre (valeur comprise entre 0 et 1023)
val1 = carte (val1, 30 -30, 0, 179) ;     redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
myservo2.Write(val1) ;                  définit la position du servo selon la valeur à l’échelle
val2 = xstate ;            lit la valeur du potentiomètre (valeur comprise entre 0 et 1023)
val2 = carte (val2, -30, 0, 30, 179) ;     redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
myservo.Write(val2) ;                  définit la position du servo selon la valeur à l’échelle

Si (ystate < -15) {}
play_3() ;
}
}
else {}
recherche de bruit
int sensorValue2 = analogRead (A0); //noise capteur
Serial.println(sensorValue2) ;
if(sensorValue2>thresholdValue)
{
Serial.println("Yes") ;
digitalWrite(ledNoise,HIGH) ;
play_4() ;
lampoff() ;
lampblink() ;
servo1_no() ;
servo1_no() ;
servo1R() ;
Delay(1000) ;
}
d’autre
{
lampoff() ;
}
vérification de la requête
int sensorValue = digitalRead(6) ; détecteur de mouvement
if(sensorValue==1)
{
Serial.println("Move") ;
movestate = 1 ;
lampblink() ;
Servo2() ;
servo2_right() ;
servo1_right() ;
play_2() ;
retarder (1000) ;
servo2_return() ;
servo1_return() ;
servo1_left() ;
servo2_left() ;
play_2() ;
retarder (1000) ;
servo2_return() ;
servo1_return() ;
Delay(1000) ;
}
d’autre
{
digitalWrite(ledNoise,LOW) ;
Servo2() ;
servo1R() ;
servo2R() ;
lampoff() ;
play_2() ;
movestate = 0 ;

}

}
}

Articles Liés

Fantaisie vers le haut une lampe de bureau Ikea

Fantaisie vers le haut une lampe de bureau Ikea

alors, tout d'abord, c'est ma première publication sur ce site merveilleux. Il n'est pas une chose étape par étape, parce que je n'a pas pris de photos le long du chemin (je l'ai fait il y a quelques temps).J'ai fait une vieille lampe Ikea retrouver
Faire une lampe de table chic bohème à l’aide de la lampe de table Ikea Arstid

Faire une lampe de table chic bohème à l’aide de la lampe de table Ikea Arstid

The Ikea Arstid lampe de table a une sensation classique à lui, mais peut démarrer la recherche « fatigué » après un certain temps. Découvrez mon actualisation de cette pièce classique en un étonnant tableau Bohême.Etape 1: Enlever l'abat-jour Cela n
Poupée de IKEA est devenu lampe réglable !

Poupée de IKEA est devenu lampe réglable !

Je cherchais une nouvelle lampe de lecture et tout à coup j'ai eu l'idée de fixer une lampe à ma poupée réglable ikea (qui a été fondamentalement collecte de la poussière) et elle se présenterait comme la poupée tenait la lampe pour moi. Cette instru
BRICOLAGE lampe R2D2 de lampe IKEA $10

BRICOLAGE lampe R2D2 de lampe IKEA $10

celui-ci est venu de distraction de cisaillement et de procrastination, choses qui envahi ma vie quotidienne.J'ai construis une pleine grandeur R2D2 à partir de zéro, quand vous êtes zéro tout bâtiment commence le regard comme une partie potentielle,
LED de bureau / espace de travail / clavier lampe (Tertial IKEA hack)

LED de bureau / espace de travail / clavier lampe (Tertial IKEA hack)

Cette instructable va vous montrer comment facilement convertir votre ancienne lampe de bureau IKEA Tertial une plus contemporaine, énergie efficace et le plus beau clavier, bureau ou espace de travail de dispositif d'éclairage.Note : Ceci est mon pr
PIRATÉ la lampe Ikea papier.

PIRATÉ la lampe Ikea papier.

Ma femme a parlé de faire un de ces vraiment chinsy plug-in les appliques de nuit pour la pépinière. Car la façon dont j'ai eu un certain nombre d'extra bandes de LED, une lampe qui se trouvait déjà dans la pépinière, microcontrôleurs, et SCR de coup
Les lampes IKEA refaire anciennes bases de lampe nouvelle !

Les lampes IKEA refaire anciennes bases de lampe nouvelle !

j'ai trouvé deux lampes utilisé-à-être-assez coincés dans la boue à la ferme de mon ami. J'ai arrosé em a ' em maison et enfin compris comment rendre utile à nouveau.Je suis tombé sur deux bases de lampe Ikea à la friperie pour un dollar chacune (sim
Super Mario Piranha plante lampe de lampe IKEA $10

Super Mario Piranha plante lampe de lampe IKEA $10

Bonjour à tous, c'est le genre de suite à ma lampe IKEA R2D2 instructable.Eh bien, mon plus vieux garçon veut changer sa chambre de Star Wars pour Super Mario pour un thème.  Qui est bon, parce que celui plus jeune veut une chambre de Star Wars, qui
Remplacer l’interrupteur de la lampe IKEA

Remplacer l’interrupteur de la lampe IKEA

Tout cela a commencé avec l'abat-jour sur une paire de vieux lampadaires IKEA qui cherchaient un peu miteux. Les ampoules fluorescentes compactes de 3 voies commençaient à montrer leur âge car ils ne semblent plus être aussi brillant. Donc le temps d
Hack de 12 volts lampe IKEA Jansjo

Hack de 12 volts lampe IKEA Jansjo

Après avoir converti facilement une lampe LED Dioder Ikea à ruisseler la batterie 12V dans mon camping-car, j'ai décidé de faire un aller-retour à Ikea pour trouver une liseuse de mettre dessus de mon lit. Je ne savais pas jusqu'à ce que je suis rent
Simple lampe Ikea-hack

Simple lampe Ikea-hack

ces instructions indiquent comment j'ai fait une simple lampe pour un abat-jour en carton. L'abat-jour n'était pas vraiment adapté pour une lampe normale puisque l'ampoule nue pourrait être vu à travers l'ondulation. De manière générale, cette lampe
Étoiles-lampe Ikea Hack Constellations Glow in the Dark

Étoiles-lampe Ikea Hack Constellations Glow in the Dark

Comment réparer une lampe de papier ikea, avec une nouvelle couverture de papier original.Vous aurez besoin :Lampe IKEAcolle de pistolet à chaudCrêpe de papierHama - lueur dans l'obscuritéconstelation carteÉtape 1: Distinct vieux papiers de lampe Si
LittleBits Grappler : le bras robotique de l’espace

LittleBits Grappler : le bras robotique de l’espace

Un grappin est à l'extrémité du bras du Robot de l'ISS et sert à accrocher à des objets dans l'espace – comme les astronautes ! Nous avons créé une réplique de travail à l'aide d'un tube acrylique, une lampe de bureau et les modules de la littleBits
Réservez la lampe

Réservez la lampe

le livre lampe brille sur tous seul sur l'étagère. Lorsqu'elle abritait autrefois des pages pour exciter l'imagination, il abrite aujourd'hui une lampe pour égayer l'espace derrière elle.Ce projet peut être fait pour 5 $ et prend moins d'une demi-heu