Advertisement
Maderdash

REFRESHING CODE

Aug 16th, 2022
1,688
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 10.47 KB | None | 0 0
  1. #include <Servo.h>
  2.  
  3. Servo servo1;  //palma
  4. Servo servo2; //pulgar
  5. Servo servo3; //indice
  6. Servo servo4; //medio
  7. Servo servo5; //meñique y anular
  8.  
  9.  int tiempo;
  10.  int lastSetting = 0;
  11.  
  12.  int botA = 0;     //Boton para elegir la configuracion A
  13.  int botB = 1;     //Boton para elegir la configuracion B
  14.  int botC = 2;     //Boton para elegir la configuracion C
  15.  
  16. 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)
  17. 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)
  18. 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)
  19.  
  20. int izq1 = 5;      //palma arriba
  21. int izq2 = 7;      //pulgar arriba
  22. int izq3 = 9;      //indice arriba
  23. int izq4 = 11;     //medio arriba
  24. int izq5 = 13;     //meñique y anular arriba
  25.  
  26. int der1 = 6;      //palma abajo      
  27. int der2 = 8;      //pulgar abajo      
  28. int der3 = 10;     //indice abajo      
  29. int der4 = 12;     //medio abajo      
  30. int der5 = A0;     //meñique y anular abajo      
  31.  
  32. int der_estado1;     //palma estado inicial abierto completamente    
  33. int izq_estado1;     //palma estado final cerrado completamente
  34.  
  35. int der_estado2;     //pulgar estado inicial abierto completamente  
  36. int izq_estado2;     //pulgar estado final cerrado completamente
  37.  
  38. int der_estado3;     //indice estado inicial abierto completamente
  39. int izq_estado3;     //indice estado final cerrado completamente
  40.  
  41. int der_estado4;     //medio estado inicial abierto completamente
  42. int izq_estado4;     //medio estado final cerrado completamente
  43.  
  44. int der_estado5;     //meñique y anular estado inicial abierto completamente
  45. int izq_estado5;     //meñique y anular estado final cerrado completamente
  46.  
  47.  
  48. int angulo = 100;         //angulo inicial de la palma (parte de 100 y termina 0)
  49. int angulo2 = 0;    //angulo inicial del pulgar (parte de 180 y termina 0)
  50. int angulo3 = 0;    //angulo inicial del indice (parte de 0 y termina 180)
  51. int angulo4 = 0;    //angulo inicial del medio (parte de 180 y termina 0)
  52. int angulo5 = 0;    //angulo inicial de miñique y anular (parte de 0 y termina 180)
  53.  
  54. void setup() {
  55.   Serial.begin(9600);
  56.  
  57.   tiempo=millis();
  58.  
  59.   pinMode (izq1, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir la palma como entrada en alto por defecto
  60.   pinMode (der1, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar la palma como entrada en alto por defecto
  61.  
  62.   pinMode (izq2, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el pulgar como entrada en alto por defecto
  63.   pinMode (der2, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el pulgar como entrada en alto por defecto
  64.  
  65.   pinMode (izq3, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el indice como entrada en alto por defecto
  66.   pinMode (der3, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el indice como entrada en alto por defecto
  67.  
  68.   pinMode (izq4, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el medio como entrada en alto por defecto
  69.   pinMode (der4, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el medio como entrada en alto por defecto
  70.  
  71.   pinMode (izq5, INPUT_PULLUP); //con input_pullup se define pulsador encargado de abrir el meñique y anular como entrada en alto por defecto
  72.   pinMode (der5, INPUT_PULLUP); //con input_pullup se define pulsador encargado de cerrar el meñique y anular como entrada en alto por defecto
  73.  
  74.   pinMode (botA, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config A como entrada en alto por defecto
  75.   pinMode (botB, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config B como entrada en alto por defecto
  76.   pinMode (botC, INPUT_PULLUP); //con input_pullup se define pulsador encargado de seleccionar la config C como entrada en alto por defecto
  77.  
  78.   pinMode (A3, OUTPUT); //se define el pin analogico 3 como una salida
  79.   pinMode (A4, OUTPUT); //se define el pin analogico 4 como una salida
  80.   pinMode (A5, OUTPUT); //se define el pin analogico 5 como una salida
  81.  
  82.  
  83.   servo1.attach(4);  //palma
  84.   servo2.attach(5);  //pulgar
  85.   servo3.attach(6); //indice
  86.   servo4.attach(7); //medio
  87.   servo5.attach(8);  //anular y meñique
  88.  
  89.   servo1.write(angulo);   //asigna el grado de inclinacion del servo encargado de mover la palma
  90.   servo2.write(angulo2); //asigna el grado de inclinacion del servo encargado de mover el pulgar
  91.   servo3.write(angulo3); //asigna el grado de inclinacion del servo encargado de mover el indice
  92.   servo4.write(angulo4); //asigna el grado de inclinacion del servo encargado de mover el medio
  93.   servo5.write(angulo5); //asigna el grado de inclinacion del servo encargado de mover el meñique y anular
  94.  
  95. }
  96.  
  97. void settingOne(){
  98.  
  99.     if (millis() - tiempo > 10) {
  100.     if (configA == HIGH) {
  101.  
  102.       if (configA ==   HIGH) {
  103.  
  104.         if(der_estado1 == HIGH)
  105.         {
  106.  
  107.         angulo++;
  108.         if (angulo >= 90)
  109.         {
  110.         angulo = 90;
  111.         }
  112.         }
  113.  
  114.         if(izq_estado1 == HIGH)
  115.         {
  116.  
  117.         angulo--;
  118.         if (angulo <= 0)
  119.         {
  120.         angulo = 0;
  121.         }
  122.         }
  123.  
  124.         servo1.write(angulo);
  125.  
  126.  
  127.         if(der_estado2 == HIGH)
  128.         {
  129.  
  130.         angulo2++;
  131.         if (angulo >= 180)
  132.         {
  133.         angulo2 = 180;
  134.         }
  135.         }
  136.  
  137.         if(izq_estado2 == HIGH)
  138.         {
  139.  
  140.         angulo2--;
  141.         if (angulo2 <= 0)
  142.         {
  143.         angulo2 = 0;
  144.         }
  145.         }
  146.  
  147.         servo2.write(angulo2);
  148.  
  149.  
  150.         if(der_estado3 == HIGH)
  151.         {
  152.  
  153.         angulo3++;
  154.         if (angulo3 >= 180)
  155.         {
  156.         angulo3 = 180;
  157.         }
  158.         }
  159.  
  160.         if(izq_estado3 == HIGH)
  161.         {
  162.  
  163.         angulo3--;
  164.         if (angulo3 <= 0)
  165.         {
  166.         angulo3 = 0;
  167.         }
  168.         }
  169.  
  170.         servo3.write(angulo3);
  171.  
  172.  
  173.         if(der_estado4 == HIGH)
  174.         {
  175.  
  176.         angulo4++;
  177.         if (angulo4 >= 180)
  178.         {
  179.         angulo4 = 180;
  180.         }
  181.         }
  182.  
  183.         if(izq_estado4 == HIGH){
  184.           angulo4--;
  185.           if (angulo4 <= 0){
  186.             angulo4 = 0;
  187.           }
  188.         }
  189.  
  190.         servo4.write(angulo4);
  191.  
  192.  
  193.         if(der_estado5 == HIGH){
  194.  
  195.           angulo5++;
  196.           if (angulo5 >= 180){
  197.             angulo5 = 180;
  198.             }
  199.           }
  200.  
  201.         if(izq_estado5 == HIGH){
  202.  
  203.           angulo5--;
  204.           if (angulo5 <= 0){
  205.             angulo5 = 0;
  206.             }
  207.           }
  208.  
  209.         servo5.write(angulo5);
  210.  
  211.         }
  212.       }
  213.   }
  214.  
  215. }
  216.  
  217. void settingTwo(){
  218.   if (millis() - tiempo > 10){
  219. if (configB == HIGH) {
  220.  
  221.   if (configB == HIGH) {
  222.  
  223.   servo1.write(0);
  224.   delay(1000);
  225.   servo1.write(90);
  226.   delay(1000);
  227.  
  228.   servo2.write(0);
  229.   delay(2000);  
  230.   servo2.write(120);
  231.   delay(2000);
  232.  
  233.   servo3.write(0);
  234.   delay(1000);
  235.    servo3.write(120);
  236.   delay(1000);
  237.  
  238.   servo4.write(0);
  239.   delay(2000);
  240.   servo4.write(120);
  241.   delay(2000);
  242.  
  243.   servo5.write(0);
  244.   delay(1000);
  245.   servo5.write(120);
  246.   delay(1000);
  247.   }
  248.   }
  249.   }
  250.  
  251. }
  252. void settingThree(){
  253.   if (millis() - tiempo > 10) {
  254. if (configC == HIGH) {
  255.  
  256.  
  257. if (configC == HIGH) {
  258.  
  259.   //1//
  260.   servo1.write(0);    //palma
  261.   servo2.write(0);    //pulgar
  262.   servo3.write(180);  //indice
  263.   servo4.write(0);    //medio
  264.   servo5.write(180);  //meñique y anular
  265.   delay(3000);
  266.  
  267.     //2//
  268.   servo1.write(0);      //palma
  269.   servo2.write(0);      //pulgar
  270.   servo3.write(180);    //indice
  271.   servo4.write(180);    //medio
  272.   servo5.write(180);    //meñique y anular
  273.   delay(3000);
  274.  
  275.   //3//
  276.   servo1.write(100);    //palma
  277.   servo2.write(180);    //pulgar
  278.   servo3.write(180);  //indice
  279.   servo4.write(180);    //medio
  280.   servo5.write(180);  //meñique y anular
  281.   delay(3000);
  282.  
  283.   //4//
  284.   servo1.write(0);      //palma
  285.   servo2.write(0);      //pulgar
  286.   servo3.write(180);    //indice
  287.   servo4.write(180);    //medio
  288.   servo5.write(0);  //meñique y anular
  289.   delay(3000);
  290.  
  291.   //5//
  292.   servo1.write(100);    //palma
  293.   servo2.write(180);    //pulgar
  294.   servo3.write(180);  //indice
  295.   servo4.write(180);    //medio
  296.   servo5.write(0);    //meñique y anular
  297.   delay(3000);
  298.    }
  299.   }    
  300.  }
  301. }
  302.  
  303. void loop() {
  304.   izq_estado1 = digitalRead(izq1);  //lee el estado en el que se encuentra el pulsador encargado de abrir la palma (estado alto o bajo)
  305.   der_estado1 = digitalRead(der1);  //lee el estado en el que se encuentra el pulsador encargado de cerrar la palma (estado alto o bajo)
  306.  
  307.   izq_estado2 = digitalRead(izq2);  //lee el estado en el que se encuentra el pulsador encargado de abrir el pulgar (estado alto o bajo)
  308.   der_estado2 = digitalRead(der2);  //lee el estado en el que se encuentra el pulsador encargado de cerrar el pulgar (estado alto o bajo)
  309.  
  310.   izq_estado3 = digitalRead(izq3);  //lee el estado en el que se encuentra el pulsador encargado de abrir el indice (estado alto o bajo)
  311.   der_estado3 = digitalRead(der3);  //lee el estado en el que se encuentra el pulsador encargado de cerrar el indice (estado alto o bajo)
  312.  
  313.   izq_estado4 = digitalRead(izq4);  //lee el estado en el que se encuentra el pulsador encargado de abrir el medio (estado alto o bajo)
  314.   der_estado4 = digitalRead(der4);  //lee el estado en el que se encuentra el pulsador encargado de cerrar el medio (estado alto o bajo)
  315.  
  316.   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)
  317.   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)
  318.  
  319.   configA = digitalRead(botA);  //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config A
  320.   configB = digitalRead(botB);  //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config B
  321.   configC = digitalRead(botC);  //lee el estado en el que se encuentra el pulsador encargado de seleccionar la config C
  322.  
  323.  
  324.   if (configA == HIGH || lastSetting == 1){
  325.     settingOne();
  326.     lastSetting = 1;
  327.   } else if (configB == HIGH || lastSetting == 2){
  328.     settingTwo();
  329.     lastSetting = 2;
  330.   }
  331.  
  332.  
  333. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement