Motie gecontroleerd ultrasone Lamp (3 / 9 stap)

Stap 3: Schrijven van de Code van de Arduino


Wanneer u hebt is alles aangesloten de volgende stap naar de Arduino aansluit op uw computer en beginnen met het schrijven van code voor het. U kunt downloaden van de code of kopiëren en plakken uit de onderstaande lijst, maar voordat u deze uitvoeren kunt, moet u de NewPing Arduino library downloaden en unzip het naar de map van de Arduino Libraries.

ARDUINO CODE DOWNLOADEN

 /*BEGIN ARDUINO CODE*/ 
 /*IMPORT NECESSARY LIBRARIES*/<br>#include //Import the "NewPing" library for the Ultrasonic Sensors #include //Import the server library 
 /*DECLARE ALL VARIABLES*/ 
 int slide = 0; //Slide detector variable 
 boolean left=false; //Left true/false variable boolean center=false; //Center true/false variable boolean right=true; //Right true/false varialbe 
 #define leftTrig 8 //left sensor output Arduino pin #define leftEcho 9 //left sensor input Arduino pin #define centerTrig 10 //center sensor output Arduino pin #define centerEcho 11 // center sensor input Arduino pin #define rightTrig 12 //right sensor output Arduino pin #define rightEcho 13 //right sensor input Arduino pin 
 Servo servoRotate; //Servo that will rotate the lamp Servo servoUpDown; //Servo that will move the lamp up/down 
 int servoRotatePin = 4; //Rotational servo Arduino pin int servoUpDownPin = 5;//Vertical servo Arduino pin 
 const int maxD = 20; //cm; maximum distance 
 long int lastTouch = -1; //ms int resetAfter = 2000; //ms int afterSlideDelay = 500; //ms; all slides ignored after successful slide int afterSlideOppositeDelay = 1500; //left slides ignored after successful right slide 
 int SLIDELEFT_BEGIN = -1; //Motion was detected from right int SLIDELEFT_TO_CENTER = -2; //motion was detected from right to center 
 int SLIDENONE = 0; //No motion was detected 
 int SLIDERIGHT_BEGIN = 1; // motion was detected from left int SLIDERIGHT_T0_CENTER = 2; // motion was detected from left to center 
 int centerDistance; 
 /*SETUP SERIAL MONITOR AND SERVOS*/ void setup() { Serial.begin(9600); servoRotate.attach(servoRotatePin, 0, 180); servoUpDown.attach(servoUpDownPin, 0, 180); servoRotate.write(0); } 
 /*PING ULTRASONIC SENSORS, CALCULATE SLIDE STATUS*/ void loop() { left = ping(leftTrig, leftEcho); //send ping to left sensor center = ping(centerTrig, centerEcho); //send ping to center sensor right = ping(rightTrig, rightEcho); //send ping to right censor centerDistance = getDistance(centerTrig, centerEcho); //get object distance from center sensor //If there is anything detected by the snensors, store the time to "last touch" if (left || center || right){ lastTouch=millis(); } //If the time last sensed is greater than the reset time, reset the slide variable if (millis()-lastTouch>resetAfter) { slide = 0; Serial.println("Reset slide and timer. "); } //Detect a slide to the right if (slide >= SLIDENONE) { if ( (left) && (!right) ) slide = SLIDERIGHT_BEGIN; if (center && (slide == SLIDERIGHT_BEGIN)) slide = SLIDERIGHT_T0_CENTER; if (right && (slide == SLIDERIGHT_T0_CENTER)){ slideNow('R'); } } //Detect a slide to the left if (slide <= SLIDENONE) { if ( right && (!left) ) slide = SLIDELEFT_BEGIN; if (center && slide == SLIDELEFT_BEGIN) slide = SLIDELEFT_TO_CENTER; if (left && slide == SLIDELEFT_TO_CENTER){ slideNow('L'); } } //detect center distance if(slide){ if(center && (!left) && (!right)){ if (centerDistance){ verticalMove(centerDistance); } } } delay(50); //ms } 
 /*FUNCTION TO SEND OUT A PING*/ boolean ping(int trigPin, int echoPin) //, int ledPin) { int d = getDistance(trigPin, echoPin); //cm boolean pinActivated = false; if (d < maxD){ pinActivated = true; } else { pinActivated = false; } return pinActivated; } 
 /*FUNCTION TO GET AND CACLULATE DISTANCE*/ int getDistance(int trigPin, int echoPin) { long duration, inches, cm; pinMode(trigPin, OUTPUT); digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); //inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); //return(inches); return(cm); } 
 /*CONVERT MICROSECONDS TO INCHES long microsecondsToInches(long microseconds) { return microseconds / 74 / 2; } * 
 *CONVERT MICROSECONDS TO CENTIMETERS*/ long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; } 
 /*SLIDE LEFT AND SLIDE RIGHT MOVEMENT FUNCTIONS*/ void slideNow(char direction){ if ('R' == direction){ servoRotation('R'); Serial.println("Rotate Right"); } if ('L' == direction){ servoRotation('L'); Serial.println("rotate Left"); } delay(afterSlideDelay); slide = SLIDENONE; } 
 /*UP AND DOWN MOVEMENT FUNCTIONS*/ int verticalMove(int originalDistance){ if (originalDistance > 0 && originalDistance <= 10){ servoVertical('D'); Serial.print("Move Down: "); Serial.println(originalDistance); } else if (originalDistance <= 30){ servoVertical('U'); Serial.print("Move Up: "); Serial.println(originalDistance); } delay(afterSlideDelay); slide = SLIDENONE; } 
 /*SERVO ROTATION FUNCTION*/ void servoRotation(char whichway){ int currentPos = servoRotate.read(); if ('R' == whichway){ servoRotate.write(currentPos + 15); }else if('L' == whichway){ servoRotate.write(currentPos - 15); } } 
 /*SERVO UP/DOWN FUNCTION*/ void servoVertical(char upOrDown){ int currentPos = servoUpDown.read(); if ('U' == upOrDown){ servoUpDown.write(currentPos - 25); }else if('D' == upOrDown){ servoUpDown.write(currentPos + 25); } } 

Gerelateerde Artikelen

Bluetooth gecontroleerde Rainbow Lamp

Bluetooth gecontroleerde Rainbow Lamp

Deze Bluetooth gecontroleerde Rainbow Lamp kunnen op elke kleur worden geschakeld met behulp van uw smartphone. De lamp ziet eruit als alle zeven kleuren van de regenboog maar ook gloeit in alle zeven kleuren van de regenboog. De shapes die het maakt
Motie gecontroleerd outlet

Motie gecontroleerd outlet

Probleem:Ik had een probleem met het hebben van een lichtschakelaar in het verkeerde eind van de gang. Ik wilde ook niet dat een nieuwe switch geïnstalleerd vanwege de historische waarde van het gebouw. Tot nu toe die ik heb gebruikt een normale vloe
De grote Rob Robot - Minty Mote gecontroleerd

De grote Rob Robot - Minty Mote gecontroleerd

gebaseerd op een slimmere beeld retro robot genaamd de Robo-Cub welk mij voor een dollar op een rommelmarkt got.De afstandsbediening was uit een doos van rommel op de rommelmarkt en werd gegooid in voor gratis.Het heeft met zijn gemoderniseerd en Ard
Bouwen van een Portal torentje met motie-gecontroleerde audio en verlichting

Bouwen van een Portal torentje met motie-gecontroleerde audio en verlichting

In dit Instructable ik ga je laten zien hoe ik ging over het bouwen van mijn eigen leven grootte praten Portal torentje van start tot finish. Dit is een vrij diepgaande project dat zal betrekking hebben op alle fasen van bouw en alle technieken gebru
Licht gecontroleerd venster Lamp

Licht gecontroleerd venster Lamp

Waarom heb ik ik wan't licht gecontroleerd licht?Ik bouw deze vloek van ik ben moe van de verandering de timer elke maand.Dus is wanneer de zon gaat down die de lampen oplichten.plus het blik alsof iemand is home zijn vloek van het licht van de versc
IoT gecontroleerd slimme Lamp/Outlet met behulp van vonk kern en IFTTT

IoT gecontroleerd slimme Lamp/Outlet met behulp van vonk kern en IFTTT

Ik wilde een nachtlampje die na zonsondergang inschakelen en uitschakelen in het midden van de nacht. De timers beschikbaar op homedepot of andere bouwmarkten kunt u alleen een tijd in te stellen. Aangezien er in de Verenigde Staten zomertijd, moest
Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Motie gecontroleerde RGB Led pak met behulp van Xbox 360 Kinect, Max MSP en Arduino deel 1

Ik wilde voor de afgelopen paar maanden die ik aan een project kinect gewerkt heb gemaakt van een led outfit dat gereageerd op de bewegingen van de drager. Ik heb tot nu toe alleen de armen gedaan, en er zijn enkele problemen die moeten worden uitgew
Internet gecontroleerde lamp met ESP8266 wifi relay IoT

Internet gecontroleerde lamp met ESP8266 wifi relay IoT

ESP8266 wifi relay (ESP01) IoT controle per lampInternet gecontroleerde elektrische lamp met ESP8266 wifi (ESP01) IoTInternet gecontroleerde lamp met ESP8266 wifi relay IoTESP8266 (ESP01) is een zeer goedkope WiFi-transceiver die kan worden toegevoeg
Arduino gecontroleerde ruimte verwarmingssysteem

Arduino gecontroleerde ruimte verwarmingssysteem

Het eerste ding dat kwam naar mijn mening toen ik begon micro-controller programmering was een automatische kamer verwarming cum luchtbevochtiger systeem instellen. Bangalore heeft een erg verwarrend weer - met name voor nieuwkomers. De temperatuur i
Houten Architect Lamp

Houten Architect Lamp

Je hebt nooit genoeg lampen! Zeker, ze zijn gemakkelijk aan te schaffen, maar ze zijn leuk om te maken. Dit is een vrij eenvoudige manier om een houten architect lamp, gemodelleerd naar de metalen soort die je in een winkel kopen kunt. Mijne bleek no
Retro cassette opknoping led lamp

Retro cassette opknoping led lamp

er zijn instructables over cassette lampen. Alles wat die ik heb gezien zijn top tafellampen.Ik wilde maken van een hangende dak lamp.Ik wilde ook gebruiken multi kleur led lamp, zodat het lijkt nog meer retro: 70 's hier kom ik!Stap 1: Wat heb ik no
Hercules: The Motion gecontroleerd Android Robot

Hercules: The Motion gecontroleerd Android Robot

toen ik in de 8th -rang, was ik geïntrigeerd tijdens het spelen van de motie games op Nokia 5800. Ik was zo blij, hoe kan ik de racewagen controle door alleen het kantelen van de telefoon. Ik gebruikte om te dromen van het maken van deze dezelfde aut
Projector lamp conversie naar LED

Projector lamp conversie naar LED

kreeg ik een Projector van een vriend December 2010. Het is een scherpe D100U uit 1997. Het had niet de originele lamp, maar alles werkte prima. Ik deed wat onderzoek online om te zien als ik kon krijgen een lamp voor en kwam erachter dat het kost me
IoT Motion gecontroleerd servo's

IoT Motion gecontroleerd servo's

Veilige en betrouwbare real-time gegevens streaming is essentieel voor IoT. Ik heb gezien tal van demonstraties waarbij toepassingen of "drukknop hier, bracht op daar" type hardware, maar een vriend en ik wilde iets dat meer interactief was... e