Cómo construir otra máquina inútil: fácil de hacer y difícil de usar! (8 / 9 paso)

Paso 8: El código

Para escribir el código para el arduino, es necesario el arduino IDE (descargar aquí)

Estoy usando la versión 1.0.5, sólo asegúrese de seleccionar el puerto COM correcto (windows) y tipo de la IDE del tablero después de usar el código y subir exitosa.

Nota: Los valores que utiliza en el código para establecer la desviación máxima de los servos están hechos exactamente para este cuadro teniendo en cuenta los servos posicionamiento, ejes y ángulos. Consegui esto a través de la prueba. Así que necesita elaborar sus propios valores según su cuadro y colocación del servo.

Para referencia, por debajo de los valores de mín/máx que utiliza para cada servo como verán les ocurre en el código:

La puerta:
80 ocultar, 155 Abra completamente

La mano:
ocultar, 129 empujando encendido 0

Aquí está el código (mejor descargar el archivo adjunto a este paso en vez de copiar/pegar desde abajo):

#include < Servo.h >
Servo doorServo;
Servo handServo;

int switch_pin = 2;               Ponga el interruptor en el pin 2

variables de motor
int motorThrottle = 11;
int motorDirection = 13;
Resistancia de int = 8;

int pos = 0;
int selectedMove = 0;             colocar el selector de
int Testmove = 0;                 modo de prueba: sistema para mover el número para probar sólo una jugada seleccionada
(establecido en cero para funcionar normalmente es decir: roundrobbin en el amm se mueve)

void setup()
{
Serial.Begin(9600);
pinMode (switch_pin, entrada);
doorServo.attach(9);           servo sistema puerta de 9 Pin pwm
handServo.attach(10);          servo de mano set de 10 Pin pwm
doorServo.write(80);           Set puerta para ocultar la posición
handServo.write(0);            sistema mano para ocultar la posición

Canal B, de la instalación (desde canal A está reservado por servos de puerta y de la mano y no puede ber utilizado al mismo tiempo)
pinMode (motorDirection, salida); Clavija de iniciados Motor canal de B
pinMode (resistancia, salida); Pin de B inicia canal de freno

}

void loop()
{
Si (Testmove! = 0) {}
selectedMove = Testmove;
}

Si el interruptor está encendido, luego mover la puerta y a mano para apagarlo...
if(digitalRead(switch_pin) == HIGH)
{

Si (selectedMove > 10) {selectedMove = 0;} //when se juegan todos los movimientos, repetir los movimientos desde
¿a continuación se muestran todas las "jugadas" que diseñé hasta el momento, cada uno es una función que está escrita a continuación en el código, execuse los nombres, abit extraño? sí, algunos están escritos en Árabe
Si (selectedMove == 0) {switchoff();}
else if (selectedMove == 1) {switchoff();}
else if (selectedMove == 2) {switchoffbitaraddod();}
else if (selectedMove == 3) {crazydoor();}
else if (selectedMove == 4) {crazyslow();}
else if (selectedMove == 5) {m7anika7anika();}
else if (selectedMove == 6) {m3alla2();}
else if (selectedMove == 7) {switchoff();}
else if (selectedMove == 8) {matrix();}
else if (selectedMove == 9) {sneak();}
else if (selectedMove == 10) {zee7();}

Si (Testmove == 0) {}
selectedMove ++;         swith de la jugada si no en modo de prueba
}

}
}

Biblioteca de movimientos

movimiento básico
void switchoff()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

Movimiento de la mano
para (pos = 0; pos < 129; pos = 4)
{

handServo.write(pos);
Delay(15);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}

movimiento 3: abrir y esperar, luego mueva la mano y esperar, luego apague y ocultar
void switchoffbitaraddod()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(800);
Movimiento de la mano
para (pos = 0; pos < 100; pos = 4)
{
handServo.write(pos);
Delay(15);
}
Delay(1000);
para (pos = 100; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 5)
{
handServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);


}

}

movimiento 4: Abra la puerta luego cierre espera muchas veces, entonces rápidamente reoprn una nd apague y ocultar.

void crazydoor()
{

Puerta en movimiento
para (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
Delay(15);
}
Puerta en movimiento
para (pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 110; pos > = 80; pos-= 15)
{
doorServo.write(pos);
Delay(15);
}
Delay(700);
Puerta en movimiento
para (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(700);
puerta oculta
para (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
Delay(15);
}

---del interruptor de---/ /
Puerta en movimiento
para (pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos);
Delay(15);
}

Movimiento de la mano
para (pos = 0; pos < 129; pos = 3)
{
handServo.write(pos);
Delay(15);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 3)
{
handServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 15)
{
doorServo.write(pos);
Delay(15);
}

}

mover 5: Abra la puerta, luego mueva la mano lentamente hacia adelante y atrás para ocultar muy lentamente, luego rápidamente cierre puerta
void crazyslow()
{

Puerta en movimiento
para (pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos);
Delay(30);
}

Movimiento de la mano
para (pos = 0; pos < 129; pos = 1)
{
handServo.write(pos);
Delay(30);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 1)
{
handServo.write(pos);
Delay(30);
}

puerta oculta
para (pos = 155; pos > = 125; pos-= 1)
{
doorServo.write(pos);
Delay(30);
}
Delay(100);
para (pos = 125; pos > = 80; pos-= 4)
{
doorServo.write(pos);
Delay(15);
}

}

movimiento 6:

void m7anika7anika() {}

Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

Movimiento de la mano
para (pos = 0; pos < 70; pos = 1)
{
handServo.write(pos);
Delay(15);
}
Delay(800);


puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

handServo.write(40);
Delay(1000);

Movimiento de la mano
para (pos = 40; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}


para (pos = 120; pos > = 80; pos-= 1)
{
doorServo.write(pos);
Delay(15);
}



}

void m3alla2() {}
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

Movimiento de la mano
para (pos = 0; pos < 127; pos = 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 130; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(2000);

para (pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

para (pos = 155; pos > = 140; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
para (pos = 140; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(500);
esconder la mano
para (pos = 127; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}

}

matrix() vacío
{

Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}

Movimiento de la mano
para (pos = 0; pos < 80; pos = 4)
{
handServo.write(pos);
Delay(15);
}

para (pos = 80; pos < 129; pos = 1)
{
handServo.write(pos);
Delay(30);
}
Delay(300);

para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(10);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}

}

void sneak()
{
Puerta en movimiento
para (pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos);
Delay(30);
}
Delay(2000);

Movimiento de la mano
para (pos = 0; pos < 40; pos = 1)
{
handServo.write(pos);
Delay(30);
}

Delay(500);

para (pos = 130; pos < 155; pos = 4)
{
doorServo.write(pos);
Delay(15);
}
Delay(100);

para (pos = 40; pos < 90; pos = 4)
{
handServo.write(pos);
Delay(15);
}
Delay(500);
esconder la mano
para (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 70; pos < 90; pos = 4)
{

handServo.write(pos);
Delay(15);
}
Delay(100);
para (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
Delay(100);

para (pos = 70; pos < 129; pos = 4)
{

handServo.write(pos);
Delay(15);
}

para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}
puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}


void zee7()
{
Puerta en movimiento
para (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
Delay(15);
}
Delay(2000);
hacia adelante a velocidad media a la izquierda
digitalWrite (motorDirection, bajo); Establece la dirección correcta del canal B
digitalWrite (resistancia, LOW);      Soltar el freno para el canal B
analogWrite (motorThrottle, 100);    Gira el motor en canal B a toda velocidad
Delay(300);
digitalWrite (resistancia, HIGH); Eengage el freno para el canal B
Delay(2000);

hacia atrás a velocidad media a la derecha
digitalWrite (motorDirection, HIGH); Establece la izquierda en dirección de canal B
digitalWrite (resistancia, LOW);   Soltar el freno para el canal B
analogWrite (motorThrottle, 100);   Gira el motor en canal B en la mitad de velocidad
Delay(300);
digitalWrite (resistancia, HIGH); Eengage el freno para el canal B
Delay(1000);

Movimiento de la mano
para (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
Delay(15);
}

esconder la mano
para (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
Delay(15);
}

puerta oculta
para (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
Delay(15);
}
}

Artículos Relacionados

Otra máquina inútil - aka iUseless

Otra máquina inútil - aka iUseless

Tenía la caja de un iPhone de Apple disponible e hizo una versión de la máquina inútil con él. Pienso darle a mi hijo que trabaja en Apple.Básicamente he seguido el método mostrado en este Instructable:.He seguido las instrucciones que sólo requieren
Máquina inútil de energía solar

Máquina inútil de energía solar

En este instructable, vamos a hacer una máquina de energía solar, medio ambiente, controlada por arduino, inútil!Cada vez que le da la vuelta el interruptor, la máquina será voltear hacia atrás y así continúa el ciclo. La máquina inútil fue inventada
Construir una máquina de CNC Foamcore

Construir una máquina de CNC Foamcore

construir una máquina CNC de bajo costo en su cocina, por debajo de $120, utilizando herramientas que se puede obtener en el arte local y ferreterías.Este proyecto pretende disminuir la planta de construcción de la máquina CNC. Utiliza cartón pluma -
Máquina inútil avanzada

Máquina inútil avanzada

Hola todos hoy me gustaría presentar mi máquina inútil inusual. Espero que todo el mundo se enteró máquina inútil, pero construí una versión avanzada con siete interruptores de palanca.El marido de mi prima surgió la idea de hacer esta caja. Como se
Cómo construir una máquina de Arcade!

Cómo construir una máquina de Arcade!

Por fin he vuelto, y estoy aquí para mostrarle cómo hacer una máquina de Arcade para su propio disfrute personal. Realmente no es demasiado difícil ni demasiado caro (en comparación con la cantidad real arcade máquinas costo), por lo que este hace pa
Máquina inútil, la aplicación

Máquina inútil, la aplicación

Este tutorial es muy divertido, es una máquina inútil, pero esta vez en la aplicación para teléfonos android.Creo que es un proyecto simple para así disfrutar de la primera aplicación de tiempoUtilizo el inventor del Mit y mi celular, quizás en el fu
Cómo construir una máquina de Arcade en 4 minutos

Cómo construir una máquina de Arcade en 4 minutos

El video de arriba muestra todos los pasos descritos en este instructable así que por favor ver el video antes de leer más.Bueno, en realidad, es sólo el video que dura 4 minutos, pero la construcción tomó cerca de 200 horas. Pero si va a hacerlo, no
Máquina inútil - planes de información y Hardware fuentes

Máquina inútil - planes de información y Hardware fuentes

Horas de diversión y lograr nada con este fascinante de residuosy juguete adictivo! La máquina inútil rápidamente se convierte en el centro de atención en cualquier reunión.Esta pequeña joya está segura de obtener una risa, una mirada burlona y mucho
Máquina inútil de la máscara de calabaza

Máquina inútil de la máscara de calabaza

Es inútil máquina lista para la fiesta de Halloween. Máquina tradicionalmente inútil son obstinados y persistentes. Esta máquina es la misma, pero es más agresivo y trata de morder un intruso (le he advertido!).Paso 1: Diagrama de circuitosSu eléctri
Máquina inútil

Máquina inútil

"se enciende, apaga solo nuevamente. Realmente no hay punto en absoluto".Este Instructable le guiará a través de cómo hacer su propia máquina inútil!Esta máquina inútil fue creada como proyecto final para modelado y Control en la Universidad de
Máquina inútil de huevo de Pascua

Máquina inútil de huevo de Pascua

armé una máquina inútil del huevo de Pascua que incorpora la electrónica, el arte y el bricolaje en un solo paquete. Fue inspirado por el kit de la máquina inútil de Solarbotics . He encontrado este huevo grande llena de dulces que parecían que sería
Construir una máquina de lanzador USB naranja

Construir una máquina de lanzador USB naranja

este paso a paso le mostrará cómo construir una máquina de lanzador naranja controlada por cualquier ordenador mediante un cable USB normal.Se basa en los tabucos antiguo aunque es hecha de cañas y no tiene la eslinga. La electrónica es muy sencilla,
Construir una máquina selfie con una cámara IP en menos de 15 minutos!

Construir una máquina selfie con una cámara IP en menos de 15 minutos!

¿Estás listo para construir una máquina selfie en menos de 15 minutos, que envía a su dirección de correo electrónico una copia instantánea tomada desde una cámara IP? Esto es posibles gracias a TimeSquair.La imagen muestra una cámara del IP cerca de
Diseñar y construir un cargador USB portátil

Diseñar y construir un cargador USB portátil

En esta guía te mostrará cómo diseñar y construir un cargador USB portátil.Deja comienzo...Paso 1: materiales Lo que necesitarás:1) recinto proyecto: 3,34" L x 1,96" W x 0,83 "H.2) USB 0.9V-5V a 5V DC impulso elevador de tensión módulo de a