Rörelse kontrollerad ultraljud lampa (3 / 9 steg)

Steg 3: Skriva Arduino koden



När du har är allt ansluten upp nästa steg att koppla Arduino till datorn och börja skriva koden för det. Du kan hämta koden eller kopiera och klistra in nedan, men innan du kan köra det, måste du ladda ner NewPing Arduino bibliotek och packa upp den till mappen Arduino bibliotek.

HÄMTA ARDUINO KOD

/ * BEGIN ARDUINO KOD * /

/ * IMPORTERA nödvändiga bibliotek * / < br > #include //Import "NewPing" biblioteket för den ultraljudssensorer
#include //Import server biblioteket

/ * DEKLARERA ALLA VARIABLER * /

int bild = 0; Skjut detektor variabel

booleska vänster = false; Lämnade sant/falskt variabel
booleska center = false; Center sant/falskt variabel
booleska höger = sant; Alldeles sant/falskt varialbe

#define leftTrig 8 //left sensor utdata Arduino pin
#define leftEcho 9 //left sensor Arduino ingångsstift
#define centerTrig 10 //center sensor utdata Arduino pin
#define centerEcho 11 / / center sensor Arduino ingångsstift
#define rightTrig 12 //right sensor utdata Arduino pin
#define rightEcho 13 //right sensor Arduino ingångsstift

Servo servoRotate; Servo som roterar lampan
Servo servoUpDown; Servo som kommer att flytta lampan upp/ner

int servoRotatePin = 4; Roterande servo Arduino pin
int servoUpDownPin = 5; //Vertical servo Arduino pin

CONST int maxD = 20; cm; Maximalt avstånd

långa int lastTouch = -1; MS
int resetAfter = 2000. MS
int afterSlideDelay = 500. MS; alla bilder ignoreras efter lyckade bilden
int afterSlideOppositeDelay = 1500; vänstra bilderna ignoreras efter framgångsrika högra bilden

int SLIDELEFT_BEGIN = -1; Motion har identifierats från höger
int SLIDELEFT_TO_CENTER = -2; motion har identifierats från höger till mitten

int SLIDENONE = 0; Ingen motion upptäcktes

int SLIDERIGHT_BEGIN = 1; motion har identifierats från vänster
int SLIDERIGHT_T0_CENTER = 2; motion har identifierats från vänster till mitten

int centerDistance;

/ * SETUP SERIAL MONITOR OCH SERVON * /
void setup()
{
Serial.BEGIN(9600);
servoRotate.attach (servoRotatePin, 0, 180);
servoUpDown.attach (servoUpDownPin, 0, 180);
servoRotate.write(0);
}

/ * PING ULTRALJUDSSENSORER, BERÄKNA BILDEN STATUS * /
void loop()
{
vänster = ping (leftTrig, leftEcho); Skicka ping till vänster sensor
Center = ping (centerTrig, centerEcho); Skicka ping till center sensor
höger = ping (rightTrig, rightEcho); Skicka ping till rätt censor
centerDistance = getDistance (centerTrig, centerEcho); få objekt avstånd från centrum sensor

Om det finns något upptäcks av snensors, lagra tid att "sista touch"
om (vänster || center || rätt) {
lastTouch=millis();
}

Om tiden senast kände är större än återställningstiden, återställa bilden variabeln
om (millis ()-lastTouch > resetAfter)
{
bild = 0;
Serial.println ("Återställ bild och timer");
}

Upptäcka en bild till höger
om (bild > = SLIDENONE) {
om ((till vänster) & & (! rätt))
bild = SLIDERIGHT_BEGIN;
om (center & & (bild == SLIDERIGHT_BEGIN))
bild = SLIDERIGHT_T0_CENTER;
om (rätt & & (bild == SLIDERIGHT_T0_CENTER)) {
slideNow('R');

}
}

Upptäcka en bild till vänster
om (bild < = SLIDENONE) {
om (rätt & & (! vänster))
bild = SLIDELEFT_BEGIN;
om (center & & bild == SLIDELEFT_BEGIN)
bild = SLIDELEFT_TO_CENTER;
om (vänster & & bild == SLIDELEFT_TO_CENTER) {
slideNow('L');
}
}

upptäcka centrum avstånd
IF(Slide) {
om (center & & (! vänster) & & (! rätt)) {
om (centerDistance) {
verticalMove(centerDistance);
}
}
}

Delay(50); MS
}

/ * FUNKTION FÖR ATT SKICKA UT EN PING * /
booleska ping (int trigPin, int echoPin) / /, int ledPin)
{
int d = getDistance (trigPin, echoPin); cm
booleska pinActivated = false;
om (d < maxD) {
pinActivated = sant;
} annat {
pinActivated = false;
}
återvända pinActivated;

}

/ * FUNKTION FÖR ATT FÅ OCH CACLULATE AVSTÅND * /
int getDistance (int trigPin, int echoPin)
{
lång varaktighet, tum, cm;

pinMode (trigPin, produktionen);

digitalWrite (trigPin, låg);
delayMicroseconds(2);
digitalWrite (trigPin, hög);
delayMicroseconds(10);
digitalWrite (trigPin, låg);

pinMode (echoPin, ingång);
längd = pulseIn (echoPin, hög);

tum = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);

Return(inches);
Return(cm);
}

/ * KONVERTERA MIKROSEKUNDER TILL INCHES
lång microsecondsToInches(long microseconds)
{
återvända mikrosekunder / 74 / 2;
}
*

* KONVERTERA MIKROSEKUNDER TILL CENTIMETER * /
lång microsecondsToCentimeters(long microseconds)
{
återvända mikrosekunder / 29 / 2;
}

/ * BILD VÄNSTER OCH BILDEN RÄTT RÖRELSE FUNKTIONER * /
void slideNow(char direction) {
om ("R" == riktning) {
servoRotation('R');
Serial.println ("rotera höger");
}
om ("L" == riktning) {
servoRotation('L');
Serial.println ("rotera vänster");

}
Delay(afterSlideDelay);
bild = SLIDENONE;
}

/ * UPP OCH NER RÖRELSE FUNKTIONER * /
int verticalMove (int originalDistance) {
om (originalDistance > 0 & & originalDistance < = 10) {
servoVertical('D');
Serial.Print ("flytta ner:");
Serial.println(originalDistance);

} else om (originalDistance < = 30) {
servoVertical('U');
Serial.Print ("flytta upp:");
Serial.println(originalDistance);

}
Delay(afterSlideDelay);
bild = SLIDENONE;
}

/ * SERVO ROTATION FUNKTIONEN * /
void servoRotation(char whichway) {
int currentPos = servoRotate.read();
om ('R' == whichway) {
servoRotate.write(currentPos + 15);
} else om ('L' == whichway) {
servoRotate.write (currentPos - 15);
}
}

/ * SERVO UPP/NER FUNKTION * /
void servoVertical(char upOrDown) {
int currentPos = servoUpDown.read();
om ('U' == upOrDown) {
servoUpDown.write (currentPos - 25);
} else om (hade ' == upOrDown) {
servoUpDown.write(currentPos + 25);
}
}

Se Steg
Relaterade Ämnen

Rörelse kontrollerade ljusshow

idén till detta projekt har knackat i mitt huvud för de senaste åren. Slutligen bestämde jag mig att få bort min rumpa och göra det. Varnas: det är en lång instructable eftersom det är ett flerdelat byggande, och jag är lite mångordig när du skriver...

IoT rörelse kontrollerad servon

Säkra och pålitliga realtid data streaming är viktigt för Sakernas Internet. Jag har sett massor av demonstrationer som innefattar program eller "knappen här, ledde därborta" typ hårdvara, men en vän och jag ville göra något som var mer interakt...

Skapa din egen rörelse kontrollerade robot

Rörelse kontrollerade erfarenheter behöver inte begränsas till spel eller ens digitala enheter, faktiskt en lyhörd motion interaktion kan uppnås med hjälp av enkla och tillgängliga vardagsföremål.En algoritm ingenjör på Extrema verkligheten nyligen s...

Bluetooth kontrollerad Rainbow lampa

Denna Bluetooth kontrollerad Rainbow lampa kan kopplas till valfri färg med hjälp av din smartphone. Lampan inte bara ser ut som alla sju färger i regnbågen men också lyser i alla sju färger i regnbågen. De former som det gör på natten är bara fantas...

Hercules: Rörelse kontrollerade Android roboten

när jag var i 8: e klass, var jag nyfiken när du spelar förslaget spel på Nokia 5800. Jag blev så glad, hur jag kunde kontrollera tävlings-bilen genom att endast luta telefonen. Jag brukade drömma om att göra denna samma bil i den verkliga världen.Nu...

LEAP rörelse kontrollerad Remote Search och bortskaffande Robot

Som en del av min post för Leap #3D sylt var jag upphetsad att bygga denna trådlösa gest kontrollerade Sök/rädda Robot baserad på Raspberry Pi. Detta projekt visar och ger en minimalistisk exempel på hur trådlös 3D hand gester kan användas för att st...

Rörelse kontrollerade utlopp

Problem:Jag hade problem med att ha en strömbrytare i fel ände av korridoren. Jag ville också ha en ny strömbrytare installerade eftersom det historiska värdet av byggnaden. Hittills har jag använt en vanlig golvlampa men stänger av lampan på och hel...

Sakernas Internet kontrollerad Smart lampa/Outlet med spark core och IFTTT

Jag ville ha en natt-lampa som kommer att slå på efter solnedgången och stänga av mitt i natten. Finns på homedepot eller andra järnhandeln timers kan bara ställa in en tid. Eftersom det finns sommartid i USA, fick det bytas. För att lösa detta, är u...

Rörelse kontrollerade Outlet - från en rörelse sensing ljus

Föreställ dig att du är en trick-or-treater som kommer till den mest skrämmande hus på blocket. Efter att ha gått förbi alla ghouls, spöken och kyrkogårdar du slutligen når den sista vägen. Du kan se godis i en skål framför dig! Men då ett spöke dyke...

Rörelse kontrollerad RGB ledde kostym med Xbox 360 Kinect, Max MSP och Arduino Del1

Jag ville för de senaste månaderna har jag arbetat på ett kinect projekt skapat en ledde outfit som svarade för bäraren rörelser. Hittills har jag bara armarna gjort, och det finns några problem som måste utarbetas, men det fungerar bra hittills.Steg...

Raspberry Pi Google kalender med rörelse kontrollerade webkamera och väder

detta är ett tillägg till Piney's awesome riktningar. Jag ville ha en Google-Kalender Visa med en webbkamera som en rörelsesensor så att bildskärmen tänds endast när någon är nära det och stängs av när ingen är runt. Jag lade också till en väder pane...

Hand rörelse kontrollerade R/C bil

detta är en måste-göra hacka för någon billig R/C bil, använder tilt sensing växlar jag gjorde så du kan styra en bil bara genom att luta registeransvarige som en wiimote.Det finns många möjligheter med detta hack, till exempel, du kan förvandla regi...

Bygga ett Portal torn med rörelse kontrollerade ljud och belysning

i detta Instructable jag ska visa dig hur jag gick om att bygga min egen liv storlek talar Portal torn från början till slut. Detta är ett ganska ingående projekt som kommer att omfatta varje konstruktionsfasen samt alla tekniker jag använde längs vä...

Projektor lampa konvertering till LED

fick jag en projektor från en vän December 2010. Det är en kraftig D100U från 1997. Det hade inte den ursprungliga glödlampan, men allt annat fungerade bra. Jag gjorde lite efterforskningar på nätet för att se om jag kunde få en lampa för det och fic...

Arduino kontrollerade rum värmesystem

Det första som kom till mig när jag började mikro-controller programmering var att ställa in en automatisk lokal uppvärmning cum luftfuktare system. Bangalore har en mycket förvirrande väder - särskilt för nykomlingar. Temperaturen är oftast måttlig,...

Hemlig rörelse aktiverat ghost projektor (AKA BOO rutan)

jag hade en ledig helg och beslutade att jag skulle dra något tillsammans för Halloween i år med alla bitar och bobs jag hade liggande. Detta är vad jag kom med! Det är i grunden en enkel laser projektor vilka projekt en bild på en vägg samtidigt sän...

Interaktiva led lampa | Tensegrity struktur + arduino

Detta stycke är en rörelse-lyhörd lampa. Utformad som en minimal tensegrity skulptur, ändrar lampan konfigurationen av färger som svar på orientering och förflyttning av hela strukturen.Med andra ord, beroende på dess orientering visar lampan en viss...

Lätt dolda tråd fluorescerande skrivbord lampa Installation

UppgiftenJag köpte en billig fluorescerande skrivbordslampa att installera över ett skrivbord. Jag ville ha det att inte Visa någon tråden och ser så ren som möjligt. Detta instructable visar hur jag gick om att göra detta enkelt. Det kan vara använd...

Internet kontrollerad lampan med ESP8266 wifi relay IoT

ESP8266 wifi relay (ESP01) IoT kontroll en lampaInternet kontrollerad elektrisk lampa med ESP8266 wifi (ESP01) IoTInternet kontrollerad lampan med ESP8266 wifi relay IoTESP8266 (ESP01) är en mycket låg kostnad WiFi transceiver som kan läggas till all...