De Lamp van de IKEA Robot (4 / 4 stap)

Stap 4: De Code

De Code:
Hier is de eerste versie van de code, veel verbetering nodig. Er zijn sommige bibliotheken i´m niet gebruiken op de hoofdlus, maar kan worden gebruikt voor het wijzigen van het gedrag van de lamp.
Dus geniet van! ;-)

/ * Gemaakt door voor de wedstrijd SeeedStudio Toy Hack
Base don de voorbeelden van de bewegingssensor, begrip sensor, knop servo en anderen.
www.arduinoarts.com * /

#include < Servo.h >
Const int buttonPin = 4;     schakelaar staat
int buttonState = 0;         variabele voor het lezen van de drukknop status

Servo Setup

Servo myservo2;
Servo myservo;  maken van servo-object om te bepalen van een servo
int pos = 0;    variabele op te slaan van de servo positie
int pos2 = 0;    variabele op te slaan van de servo positie
int val1;
int val2;

LED SETUP

Const int ledPin2 = 5; //Base licht
Const int ledPin = 12; //Lamp licht

int countlamp2 = 0;   aantal lussen op de servo

Geluid installatie

Const int thresholdvalue = 300; //The drempel lawaai reactie

Versnellingsmeter SETUP

int ystate;
int xstate;

#include < Wire.h >

#define MMA7660addr 0x4c
#define MMA7660_X 0x00
#define MMA7660_Y 0x01
#define MMA7660_Z 0x02
#define MMA7660_TILT 0x03
#define MMA7660_SRST 0x04
#define MMA7660_SPCNT 0x05
#define MMA7660_INTSU 0x06
#define MMA7660_MODE 0x07
#define MMA7660_SR 0x08
#define MMA7660_PDET 0x09
#define MMA7660_PD 0x0A

klasse versnelling
{
publiek:
char x;
char y;
char z;
};

char index;
char controle;
char staat;

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);  Monsters/seconde actief en Auto-slaap-modus
Wire.endTransmission();

Wire.beginTransmission (MMA7660addr);
Wire.send(MMA7660_MODE);
Wire.send (0x01); //active-modus
Wire.endTransmission();

}

VOID Setup
{
mma7660_init();        Join i2c bus (adres facultatief voor master)
Serial.begin(9600);
Bewegingssensor
pinMode (6, INPUT); //Use pin 2 om het signaal door de module output
Lamp licht en basis licht
pinMode (ledPin, OUTPUT);
pinMode (ledPin2, OUTPUT);
SERVO 'S

AUDIO
DDRD | = 0X0C;   D2 en D3 in schrijfmodus;
PORTD & = 0xF3;  D2 en D3 is ingesteld op laag;
Lawaai sensor op analoge 0
SCHAKELAAR
pinMode (buttonPin, INPUT);
}

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;
}
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
functie voor het bepalen van de segment_3
VOID rec_3_begin()
{
PORTD = (PORTD | 0b00001000) & 0b11111011;
}
VOID rec_3_stop()
{
PORTD & = 0xF3;
}
VOID play_3()
{
PORTD = (PORTD | 0b00001000) & 0b11111011;
delay(audiodelay);
PORTD & = 0xF3;
}
/////////////////////////////////////////////////////
////////////////////////////////////////////////
functie voor het bepalen van de 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 de stand van het signaal via de seriële monitor.
servo1();

}
anders
{
digitalWrite(ledPin,LOW);
Serial.println (sensorValue, DEC); //Print de stand van het signaal via de seriële monitor.
Servo2();
}
}

VOID servo1_right()
{
myservo.attach(9);
voor (pos = 90; pos < 180; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
/ * play_2();
delay(1000);
voor (pos = 180; pos > = 90; pos-= 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}*/
}
VOID servo1_left()
{
myservo.attach(9);
voor (pos = 90; pos > 1; pos-= 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}/*
play_2();
delay(1000);
voor (pos 1; = pos < = 90; pos += 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}*/
}

VOID servo1_return()
{
myservo.attach(9);
int posact = myservo.read();
Als (myservo.read() > 90) {}
voor (pos = posact; pos > 90; pos-= 1) / / terug naar 90
{/ / in stappen van 1 graad
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
}
else {}
voor (pos posact; = pos < = 90; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
}
}

VOID servo2_right()
{
myservo2.attach(10);
voor (pos = 90; pos < 120; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo2.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
/ * play_2();
delay(1000);
voor (pos = 180; pos > = 90; pos-= 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}*/
}
VOID servo2_left()
{
myservo2.attach(10);
voor (pos = 90; pos > 60; pos-= 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo2.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}/*
play_2();
delay(1000);
voor (pos 1; = pos < = 90; pos += 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}*/
}

VOID servo2_return()
{
myservo2.attach(10);
int posact = myservo2.read();
Als (myservo2.read() > 90) {}
voor (pos = posact; pos > 90; pos-= 1) / / terug naar 90
{/ / in stappen van 1 graad
myservo2.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
}
else {}
voor (pos posact; = pos < = 90; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo2.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
}
}

VOID servo1_no()
{
myservo.attach(9);
voor (pos = 90; pos < 120; pos += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
voor (pos = 120; pos > = 90; pos-= 1) / / gaat van 180 graden tot 0 graden
{
myservo.write(POS);              servo naar positie in de variabele 'pos' vertellen
delay(10);                       wacht 15ms voor de servo te bereiken de positie
}
}

VOID servo2()
{
myservo2.attach(10);
voor (pos2 = 110; pos2 < 140; pos2 += 1) / / gaat van 0 graden tot 180 graden
{/ / in stappen van 1 graad
myservo2.write(pos2);              servo naar positie in de variabele 'pos' vertellen
delay(15);                       wacht 15ms voor de servo te bereiken de positie
}

}

VOID servo1R()
{
myservo.write(90);
myservo.Detach();

}
VOID servo2R()
{
myservo2.write(90);
myservo2.Detach();
}

VOID lampblink()
{
int sensorValue = digitalRead(6);
Als (sensorValue = 1) {}
digitalWrite(ledPin,HIGH);
vertraging (1);
digitalWrite(ledPin,LOW);
vertraging (1);
//}
anders
digitalWrite(ledPin,LOW);
}
VOID lamptest()
{

for (int i = 0; ik < 100; i ++)
{
digitalWrite (12, hoge);
delay(50);
digitalWrite (12, laag);
delay(50);
}
}

VOID lampoff()
{
vertraging (2000);
digitalWrite (ledPin, laag);
}

versnellingsmeter

VOID Ecom()
{
unsigned char val [3];
int count = 0;
Val [0] = val [1] = val [2] = 64;
Wire.requestFrom(0x4c, 3);    3 bytes voor aanvragen vanaf slave apparaat 0x4c

while(Wire.available())
{
if(count < 3)
terwijl (val [graaf] > 63) / / herladen ding het is slecht
{
Val [graaf] = Wire.receive();

}
Graaf ++;
}

transformatie de 7 bit nummer aangemeld met een 8 bit nummer ondertekend.
Versnelling 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);   afdrukken van de lezing

Serial.Print ("y =");
Serial.println(Ret.y,DEC);   afdrukken van de lezing

Serial.Print ("z =");
Serial.println(Ret.z,DEC);   afdrukken de lezing * /
}

lezing char = 0;

void loop
{

Ecom(); staat van de versnellingsmeter controleren
digitalWrite(ledPin2,HIGH);
buttonState = digitalRead(buttonPin);  Lees de stand van de schakelaar

Als (buttonState == HIGH)
{
lampblink(); / / LED inschakelen:
myservo.attach(9);  de servo op pin 9 hecht aan de servo-object
myservo2.attach(10);  de servo op pin 9 hecht aan de servo-object
val1 = ystate;            leest de waarde van de potentiometer (waarde tussen 0 en 1023)
val1 = kaart (val1, 30 -30, 0, 179);     schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo2.write(val1);                  stelt u de positie van de servo volgens de geschaalde waarde
val2 = xstate;            leest de waarde van de potentiometer (waarde tussen 0 en 1023)
val2 = kaart (val2, 179, -30, 30, 0);     schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo.write(val2);                  stelt u de positie van de servo volgens de geschaalde waarde

Als (ystate < -15) {}
play_3();
}
}
else {}
geluid zoeken
int sensorValue2 = analogRead (A0); //noise sensor
Serial.println(sensorValue2);
if(sensorValue2>thresholdvalue)
{
Serial.println("Yes");
digitalWrite(ledNoise,HIGH);
play_4();
lampoff();
lampblink();
servo1_no();
servo1_no();
servo1R();
delay(1000);
}
anders
{
lampoff();
}
zoeken naar beweging
int sensorValue = digitalRead(6); bewegingssensor
if(sensorValue==1)
{
Serial.println("Move");
movestate = 1;
lampblink();
Servo2();
servo2_right();
servo1_right();
play_2();
vertraging (1000);
servo2_return();
servo1_return();
servo1_left();
servo2_left();
play_2();
vertraging (1000);
servo2_return();
servo1_return();
delay(1000);
}
anders
{
digitalWrite(ledNoise,LOW);
Servo2();
servo1R();
servo2R();
lampoff();
play_2();
movestate = 0;

}

}
}

Gerelateerde Artikelen

Lamp van de IKEA hacks voor 2 iMacs

Lamp van de IKEA hacks voor 2 iMacs

ik weet er bent USB lampen van LEDs voor laptops, maar ik moet één recht over de schermen.Dus hier zijn hacks voor G4, iMac en een Intel.... weet niet precies welke modelnaam deze IKEA lamp is...Stap 1: Voor de G4, draai de bodem platen & remount de
Fix gebroken Philips Hue lamp met een IKEA Ledare-lamp

Fix gebroken Philips Hue lamp met een IKEA Ledare-lamp

Eerst gelieve mijn excuses voor mijn Engels als ik niet een native speaker. Als u eventuele fouten kunt zien of iets onduidelijk is laat alstublieft een reactie zodat ik het kan bijwerken.Laat nu over het project praten: Ik ben eigenaar is van sommig
DIY R2D2 Lamp van 10 dollar IKEA lamp

DIY R2D2 Lamp van 10 dollar IKEA lamp

deze kwam van shear afleiding en uitstel, dingen die binnengevallen van mijn dagelijks leven.Ik ben het opbouwen van een hoogtepunt-rangschik R2D2 vanaf nul, wanneer u bent kras bouwen alles kijken begint als een potentiële deel, goed deze lamp die i
Super Mario Piranha Plant Lamp van 10 dollar IKEA Lamp

Super Mario Piranha Plant Lamp van 10 dollar IKEA Lamp

Hallo allemaal, dit is een soort van een follow-up van mijn IKEA R2D2 lamp instructable.Nou, wil mijn oudste jongen omzetten in zijn kamer uit Star Wars Super Mario voor een thema.  Dat is goed omdat de jongere een wil een Star Wars-kamer, wat beteke
IKEA ROBOT

IKEA ROBOT

Geïnspireerd door een Kickstarter -project, ik kon niet lopen langs het vak vervangonderdelen bij mijn lokale Ikea. Dus ik nam een tas en vulde het met hardware onderdelen. (meestal keukenkast scharnieren) Een grote zak gevuld kostencalculaties gewoo
Gemakkelijke SUNNAN van de IKEA hack (niet destructieve)

Gemakkelijke SUNNAN van de IKEA hack (niet destructieve)

eenvoudig SUNNAN van de IKEA hack (niet destructieve)Ik heb altijd een heleboel dingen verplaatsen in de etalage van de winkel van mijn stuk speelgoed. Om het een beetje lichter op batterijverbruik en beter voor het milieu te maken gebruik ik de IKEA
Hoe maak je een aangepaste lamp van cd spindel

Hoe maak je een aangepaste lamp van cd spindel

Zou u willen wippen awesome lamp van recyclage moet u dit:-Twee verschillende grootte cd spindels-Zwart papier (of een andere kleur die je wilt)-Gloeilamp-Cellofaan (de kleur die u wenst uw lamp)-Sommige tools zoals een mes, schaar en lijmStap 1: De
Van een Ikea voetbank aan (Poang) 3D-printer!

Van een Ikea voetbank aan (Poang) 3D-printer!

Hallo allemaal,Dit is mijn eerste Instructable en ik wil met u delen van het bouwproces van mijn eerste 3D printer...Ja, een andere één, maar dit men gemaakt van een Ikea voetbank vinden in de prullenbak kan van mijn wijk, dus ik al: waarom niet opha
Verspreiden van liefde met Robots

Verspreiden van liefde met Robots

een bouwpakket voor de liefde...Het idee van een "liefde Robot" werd oorspronkelijk geplant in mijn hoofd door mijn dochter Tika van werk "Een Robot gemaakt van liefde en met liefde", zoals in de derde afbeelding hieronder. Dus ben ik
Vervanging van de lamp van het dashboard van de LED

Vervanging van de lamp van het dashboard van de LED

eenvoudige vervanging correctie voor dashboard lampen. LED's leven moeten buiten het voertuig hoeft dus nooit ter vervanging van hen opnieuw.u moet;-stro hoed 1/2 watt leds (één voor elke lamp) (eBay heeft duizenden aan koos van compleet met resister
2D Cartoon-Animatie van de Instructable Robot

2D Cartoon-Animatie van de Instructable Robot

De bekende instructable robot die hebben we alle uitgegroeid tot liefde is nu gemodelleerd in Synfig Studio's verbazende 2D animatiesoftware en bekendgemaakt op deze pagina's voor iedereen te gebruiken. Het volledig functionele robot modelbestand is
Uitbreiding van de zachte robot Actuator

Uitbreiding van de zachte robot Actuator

Zachte robotica is een nieuwe en jonge veld van robots die (meestal) zacht en compatibele materialen in tegenstelling tot de strakke en harde materialen gebruikt. Meeste zachte robots bestaan van meerdere zachte robotic bedieningssleutel, waarvan de
Augustus van menselijke aangedreven Robot

Augustus van menselijke aangedreven Robot

Ik speel met verschillende educatieve manipulatives voor een levende. (Bezoek www.weirdrichard.com). Mijn kinderen zijn verwend met toegang tot allerlei speelgoed!Ik vertelde mijn zoon (leeftijd 5) over de Instuctables/Autodesk Kinetic Sculpture weds
Het ontwerpen en bouwen van een bestrijding robot

Het ontwerpen en bouwen van een bestrijding robot

Combat robots zijn onderhoudend en vermakelijk sinds voordat ze populair op Comedy Central waren. Een tijdje terug ik ondernam de uitdaging van de bouw van een paar van bestrijding robots (een 30 pond en een 220lb). Ongeacht de grootte van de machine