Arduino, Internet das Coisas e Computação vestível

[Voltar]

[Avançar]

5.6. Hand robot InMoov


Hand robot InMoov

Projeto de uma mão robótica biônica que utiliza Arduino Uno R3, Servo motores e Sensor de força resistivo para dirigir e controlar cada dedo separadamente. Ele foi desenvolvido em 2012 pelo escultor e designer francês Gael Langevin. Saiba mais em: O modelo para impressão 3D é disponibilizado em: https://www.thingiverse.com/thing:17773/files. A "Hand robot InMoov" é um subprojeto do "Robot InMoov", primeiro robô em tamanho real impresso em 3D de código aberto. Ele pode ser replicável em qualquer impressora 3D com uma área de 12 x 12 x 12 cm. Foi criado como uma plataforma de desenvolvimento para Universidades, Laboratórios e Hobistas. Saiba mais sobre "Hand robot InMoov" em: http://inmoov.fr/

// Projeto: Hand robot InMoov - movimenta um dedo da mão

 #include "Servo.h" 
 
 const int Pino_Servo1 = 5; 
 const int Pino_Resistivo1 = A0; 
 
 int Leitura_Resistivo1;  
 int Posicao_Servo1; 
 Servo Meu_Servo1; 
 
 void setup () { 
       Serial.begin (57600); 
       Meu_Servo1.write (30);  			// Mão fechada. 
       Posicao_Servo1 = 30; 
       Meu_Servo1.attach (Pino_Servo1); 
 } 
 
 void loop () { 
       Leitura_Resistivo1 = analogRead (Pino_Resistivo1); 
       Serial.print ("Analog reading = "); 
       Serial.print (Leitura_Resistivo1); 					// Leitura bruta
       
  // --------- limites estabelecidos da leitura -------- // 
       
       if (Leitura_Resistivo1 < 25) { 
       	    Serial.println (" - Sem pressao"); 
       } else if (Leitura_Resistivo1 < 30) { 
       		    Serial.println (" - Toque leve"); 
       } else if (Leitura_Resistivo1 < 50) { 
      		    Serial.println (" - Aperto leve"); 
       } else if (Leitura_Resistivo1 < 110) { 
       		    Serial.println (" - Aperto médio"); 
       } else if (Leitura_Resistivo1 < 200) { 
       		    Serial.println (" - Aperto forte"); 
       } 
       delay (1000); 
       
       AbreMao (Posicao_Servo1, 1); 
       delay (3000); 
     
       FechaMao (Posicao_Servo1, 1); 
       delay (3000); 
     
 } 
 
 void AbreMao (int posicao, int servo) { 
 
     for (; posicao < 130;  posicao ++) { 
          Meu_Servo1.write (posicao);    
          if (analogRead (Pino_Resistivo1) > 30) {  
              break; 
          }      
     } 
 } 
 
 void FechaMao () { 
 
     Meu_Servo1.write (30);  			 
     posicao = 30; 
}

 
     
 

 

[Voltar]

[Avançar]