Movimiento controlado ultrasónica lámpara (3 / 9 paso)

Paso 3: Escribir el código de Arduino

Cuando tengas todo conectado hasta el siguiente paso es conectar el Arduino al ordenador y comenzar a escribir código para él. Puede descargar el código o copiar y pegar desde abajo, pero antes de que se puede ejecutar, debe descargar la librería de NewPing Arduino y descomprimirlo en la carpeta de las bibliotecas de Arduino.

DESCARGAR CÓDIGO DE ARDUINO

 /*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); } } 

Artículos Relacionados

UltraGuitar - una guitarra ultrasónica

UltraGuitar - una guitarra ultrasónica

¡Hola!Me encanta la música. Estoy jugando en el piano pero también quería aprender a tocar guitarra. He probado un monton de veces, pero era muy difícil jugar incluso canciones. Pude jugar una línea melódica, pero no los acordes. Busqué una manera de
Medidor portátil gama ultrasónica

Medidor portátil gama ultrasónica

Este dispositivo es un metro pequeño, portátil gama ultrasónica utilizando un microcontrolador ATMega328, un módulo de ultrasonido y un 4 x 20 LCD para que van las distancias en metros y pulgadas.Paso 1: teoríaEn física, sonido es el resultado de la
Hércules: El movimiento controlado por Android Robot

Hércules: El movimiento controlado por Android Robot

cuando estaba en el 8º grado, estaba intrigado mientras se reproduce el movimiento de lo juegos en Nokia 5800. Me emocionó, cómo puedo controlar el coche de carreras sólo inclinando el teléfono. Solía soñar que este mismo coche en el mundo real.Ahora
IoT movimiento controlado Servos

IoT movimiento controlado Servos

Seguro y confiable en tiempo real streaming de datos es esencial para la IoT. He visto un montón de manifestaciones que impliquen aplicaciones o hardware de tipo "botón aquí, llevado allí", pero un amigo y yo quería hacer algo más interactivo...
Crear tu propio robot de movimiento controlado

Crear tu propio robot de movimiento controlado

Experiencias de movimiento controlado no es necesario limitarse a juegos o dispositivos incluso digitales, realmente se puede lograr una interacción de movimiento sensible mediante el uso de objetos cotidianos sencillos y accesibles.Un ingeniero de a
4 pasos fáciles para crear una única lámpara de botella de vino

4 pasos fáciles para crear una única lámpara de botella de vino

fabricación de una botella de mesa lámpara de un vino (o cualquier tipo de) parece ser un proyecto de arte muy popular. Sin embargo, mientras que las luces que vi en línea estaban bien, yo siempre los consideraba poco más que un elemento de novedad. 
Construcción de una torreta de Portal con movimiento controlado audio e iluminacion

Construcción de una torreta de Portal con movimiento controlado audio e iluminacion

en este Instructable voy a mostrarle cómo me fui sobre la construcción de mi propia vida tamaño hablando torreta de Portal de principio a fin. Se trata de una profundidad bastante en proyecto que cubra todas las fases de construcción y todas las técn
Salida de movimiento controlado

Salida de movimiento controlado

Problema:Tuve un problema con tener un interruptor de la luz en el extremo incorrecto del corredor. También quería un interruptor nuevo instalado por el valor histórico del edificio. Hasta ahora he utilizado una lámpara de pie normal pero cambiar la
Mapmaker ultrasónica utilizando Arduino y MatLab

Mapmaker ultrasónica utilizando Arduino y MatLab

visión es uno de los sentidos más emocionantes que puede dotar a su robot. La capacidad para percibir obstáculos permite a un robot tomar una decisión educada sobre los otros movimientos.Sin embargo, también no es los sentidos más fácil implementar p
Movimiento controlado por luz de mostrar

Movimiento controlado por luz de mostrar

la idea de este proyecto ha sido golpeando alrededor de dentro de mi cabeza durante los últimos años. Finalmente decidí bajar mi trasero y hacerlo. Tenga en cuenta: es un largo instructable porque es una compilación de varias parte, y estoy un poco d
Circuito simple para cada iniciación electrónica: lámpara de la noche #Automatic con LDR

Circuito simple para cada iniciación electrónica: lámpara de la noche #Automatic con LDR

Hola chicos ☺Buscando algunos proyectos DIY de principio en electrónica..! entonces usted ha venido al lugar correctoEn este proyecto estoy compartiendo mi primer proyecto electrónico.Que imparto a cada uno primero en electrónica...Nueva electrónica.
Una misteriosa caja - gama ultrasónica Finder(Arduino)

Una misteriosa caja - gama ultrasónica Finder(Arduino)

¿Hay dos noticias, que uno quiere escuchar primero? Vale. Déjame contarte buenas noticias-nuestra empresa de Elecrow de crecimiento rápido en apoyo de fabricante socios y Arduino entusiastas, hemos añadido un montón de personal, así que necesitamos u
Coche ultrasónica + Arduino

Coche ultrasónica + Arduino

Versao em portuguêsA diferencia del coche que sigue la línea, que necesita una línea pintada en el suelo, este es uno totalmente autónomo, ya que puede ver la distancia que las cosas son y se desvían de ellos.Paso 1: materiales 1 x sensor de ultrason
Frambuesa Pi Google Calendar con movimiento controlado por Webcam y tiempo

Frambuesa Pi Google Calendar con movimiento controlado por Webcam y tiempo

esto es una adición a direcciones impresionantes de Piney. Quería mostrar un calendario de Google con una webcam como un sensor de movimiento para que el monitor sólo se enciende cuando alguien está cerca de él y se apaga cuando nadie esté alrededor.