Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- Servo servo1; //palma
- Servo servo2; //pulgar
- Servo servo3; //indice
- Servo servo4; //medio
- Servo servo5; //meñique y anular
- int tiempo;
- int lastSetting = 0;
- int botA = 0; //Boton para elegir la configuracion A
- int botB = 1; //Boton para elegir la configuracion B
- int botC = 2; //Boton para elegir la configuracion C
- int configA = LOW; //La configuracion A permite mover el servo a traves de pulsadores donde cada dedo tiene asignado 2 pulsadores uno para abrir y otro para cerrar (se defiene en estado "bajo" por defecto)
- int configB = LOW; //La configuracion B permite mover el servo a traves de coordenadas de posicion abriendo y cerrando la mano repetidamente (se defiene en estado "bajo" por defecto)
- int configC = LOW; //La configuracion C permite mover el servo a traves de coordenadas de posicion realizando un conteo secuencial del 1 al 5 en loop (se defiene en estado "bajo" por defecto)
- int izq1 = 5; //palma arriba
- int izq2 = 7; //pulgar arriba
- int izq3 = 9; //indice arriba
- int izq4 = 11; //medio arriba
- int izq5 = 13; //meñique y anular arriba
- int der1 = 6; //palma abajo
- int der2 = 8; //pulgar abajo
- int der3 = 10; //indice abajo
- int der4 = 12; //medio abajo
- int der5 = A0; //meñique y anular abajo
- int der_estado1; //palma estado inicial abierto completamente
- int izq_estado1; //palma estado final cerrado completamente
- int der_estado2; //pulgar estado inicial abierto completamente
- int izq_estado2; //pulgar estado final cerrado completamente
- int der_estado3; //indice estado inicial abierto completamente
- int izq_estado3; //indice estado final cerrado completamente
- int der_estado4; //medio estado inicial abierto completamente
- int izq_estado4; //medio estado final cerrado completamente
- int der_estado5; //meñique y anular estado inicial abierto completamente
- int izq_estado5; //meñique y anular estado final cerrado completamente
- int angulo = 100; //angulo inicial de la palma (parte de 100 y termina 0)
- int angulo2 = 0; //angulo inicial del pulgar (parte de 180 y termina 0)
- int angulo3 = 0; //angulo inicial del indice (parte de 0 y termina 180)
- int angulo4 = 0; //angulo inicial del medio (parte de 180 y termina 0)
- int angulo5 = 0; //angulo inicial de miñique y anular (parte de 0 y termina 180)
- void setup() {
- Serial.begin(9600);
- tiempo=millis();
- pinMode (izq1, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir la palma como entrada en alto por defecto
- pinMode (der1, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar la palma como entrada en alto por defecto
- pinMode (izq2, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el pulgar como entrada en alto por defecto
- pinMode (der2, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el pulgar como entrada en alto por defecto
- pinMode (izq3, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el indice como entrada en alto por defecto
- pinMode (der3, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el indice como entrada en alto por defecto
- pinMode (izq4, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el medio como entrada en alto por defecto
- pinMode (der4, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el medio como entrada en alto por defecto
- pinMode (izq5, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el meñique y anular como entrada en alto por defecto
- pinMode (der5, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el meñique y anular como entrada en alto por defecto
- pinMode (botA, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config A como entrada en alto por defecto
- pinMode (botB, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config B como entrada en alto por defecto
- pinMode (botC, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config C como entrada en alto por defecto
- pinMode (A3, OUTPUT); //se define el pin analogico 3 como una salida
- pinMode (A4, OUTPUT); //se define el pin analogico 4 como una salida
- pinMode (A5, OUTPUT); //se define el pin analogico 5 como una salida
- servo1.attach(4); //palma
- servo2.attach(5); //pulgar
- servo3.attach(6); //indice
- servo4.attach(7); //medio
- servo5.attach(8); //anular y meñique
- servo1.write(angulo); //asigna el grado de inclinacion del servo encargado de mover la palma
- servo2.write(angulo2); //asigna el grado de inclinacion del servo encargado de mover el pulgar
- servo3.write(angulo3); //asigna el grado de inclinacion del servo encargado de mover el indice
- servo4.write(angulo4); //asigna el grado de inclinacion del servo encargado de mover el medio
- servo5.write(angulo5); //asigna el grado de inclinacion del servo encargado de mover el meñique y anular
- }
- void settingOne(){
- if (millis() - tiempo > 10) {
- if (configA == HIGH) {
- if (configA == HIGH) {
- if(der_estado1 == HIGH)
- {
- angulo++;
- if (angulo >= 90)
- {
- angulo = 90;
- }
- }
- if(izq_estado1 == HIGH)
- {
- angulo--;
- if (angulo <= 0)
- {
- angulo = 0;
- }
- }
- servo1.write(angulo);
- if(der_estado2 == HIGH)
- {
- angulo2++;
- if (angulo >= 180)
- {
- angulo2 = 180;
- }
- }
- if(izq_estado2 == HIGH)
- {
- angulo2--;
- if (angulo2 <= 0)
- {
- angulo2 = 0;
- }
- }
- servo2.write(angulo2);
- if(der_estado3 == HIGH)
- {
- angulo3++;
- if (angulo3 >= 180)
- {
- angulo3 = 180;
- }
- }
- if(izq_estado3 == HIGH)
- {
- angulo3--;
- if (angulo3 <= 0)
- {
- angulo3 = 0;
- }
- }
- servo3.write(angulo3);
- if(der_estado4 == HIGH)
- {
- angulo4++;
- if (angulo4 >= 180)
- {
- angulo4 = 180;
- }
- }
- if(izq_estado4 == HIGH){
- angulo4--;
- if (angulo4 <= 0){
- angulo4 = 0;
- }
- }
- servo4.write(angulo4);
- if(der_estado5 == HIGH){
- angulo5++;
- if (angulo5 >= 180){
- angulo5 = 180;
- }
- }
- if(izq_estado5 == HIGH){
- angulo5--;
- if (angulo5 <= 0){
- angulo5 = 0;
- }
- }
- servo5.write(angulo5);
- }
- }
- }
- }
- void settingTwo(){
- if (millis() - tiempo > 10){
- if (configB == HIGH) {
- if (configB == HIGH) {
- servo1.write(0);
- delay(1000);
- servo1.write(90);
- delay(1000);
- servo2.write(0);
- delay(2000);
- servo2.write(120);
- delay(2000);
- servo3.write(0);
- delay(1000);
- servo3.write(120);
- delay(1000);
- servo4.write(0);
- delay(2000);
- servo4.write(120);
- delay(2000);
- servo5.write(0);
- delay(1000);
- servo5.write(120);
- delay(1000);
- }
- }
- }
- }
- void settingThree(){
- if (millis() - tiempo > 10) {
- if (configC == HIGH) {
- if (configC == HIGH) {
- //1//
- servo1.write(0); //palma
- servo2.write(0); //pulgar
- servo3.write(180); //indice
- servo4.write(0); //medio
- servo5.write(180); //meñique y anular
- delay(3000);
- //2//
- servo1.write(0); //palma
- servo2.write(0); //pulgar
- servo3.write(180); //indice
- servo4.write(180); //medio
- servo5.write(180); //meñique y anular
- delay(3000);
- //3//
- servo1.write(100); //palma
- servo2.write(180); //pulgar
- servo3.write(180); //indice
- servo4.write(180); //medio
- servo5.write(180); //meñique y anular
- delay(3000);
- //4//
- servo1.write(0); //palma
- servo2.write(0); //pulgar
- servo3.write(180); //indice
- servo4.write(180); //medio
- servo5.write(0); //meñique y anular
- delay(3000);
- //5//
- servo1.write(100); //palma
- servo2.write(180); //pulgar
- servo3.write(180); //indice
- servo4.write(180); //medio
- servo5.write(0); //meñique y anular
- delay(3000);
- }
- }
- }
- }
- void loop() {
- izq_estado1 = digitalRead(izq1); //lee el estado en el que se encuentra el pulsador encargado de abrir la palma (estado alto o bajo)
- der_estado1 = digitalRead(der1); //lee el estado en el que se encuentra el pulsador encargado de cerrar la palma (estado alto o bajo)
- izq_estado2 = digitalRead(izq2); //lee el estado en el que se encuentra el pulsador encargado de abrir el pulgar (estado alto o bajo)
- der_estado2 = digitalRead(der2); //lee el estado en el que se encuentra el pulsador encargado de cerrar el pulgar (estado alto o bajo)
- izq_estado3 = digitalRead(izq3); //lee el estado en el que se encuentra el pulsador encargado de abrir el indice (estado alto o bajo)
- der_estado3 = digitalRead(der3); //lee el estado en el que se encuentra el pulsador encargado de cerrar el indice (estado alto o bajo)
- izq_estado4 = digitalRead(izq4); //lee el estado en el que se encuentra el pulsador encargado de abrir el medio (estado alto o bajo)
- der_estado4 = digitalRead(der4); //lee el estado en el que se encuentra el pulsador encargado de cerrar el medio (estado alto o bajo)
- izq_estado5 = digitalRead(izq5); //lee el estado en el que se encuentra el pulsador encargado de abrir el meñique y anular (estado alto o bajo)
- der_estado5 = digitalRead(der5); //lee el estado en el que se encuentra el pulsador encargado de cerrar el meñique y anular (estado alto o bajo)
- configA = digitalRead(botA); //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config A
- configB = digitalRead(botB); //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config B
- configC = digitalRead(botC); //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config C
- if (configA == HIGH || lastSetting == 1){
- settingOne();
- lastSetting = 1;
- } else if (configB == HIGH || lastSetting == 2){
- settingTwo();
- lastSetting = 2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement