Étape 3: Le programme
Pour la main robotique
(Arduino) :
#include
Servo
ServoThumb, ServoIndex,
ServoMiddle, ServoAnnular, ServoPinky ;
startPackage octet ;
int pouce = 0 ;
int Index = 0 ;
int moyen = 0 ;
int annulaire = 0 ;
int Pinky = 0 ;
void setup()
{
Serial.Begin(9600) ;
ServoThumb.attach(9) ;
Delay(300) ;
ServoIndex.attach(8) ;
Delay(300) ;
ServoMiddle.attach(7) ;
Delay(300) ;
ServoAnnular.attach(6) ;
Delay(300) ;
ServoPinky.attach(5) ;
Delay(300) ;
Serial.println ("prêt à recevoir.") ;
}
void loop()
{
{if(Serial.available())}
startPackage = Serial.read() ;
Thumb = Serial.read() ;
Index = Serial.read() ;
Middle = Serial.read() ;
Annulaire = Serial.read() ;
Pinky = Serial.read() ;
Si (startPackage == ' <') {}
if(Thumb!=255)
ServoThumb.write(Thumb) ;
if(index!=255)
ServoIndex.write(Index) ;
if(Middle!=255)
ServoMiddle.write(Middle) ;
if(Annular!=255)
ServoAnnular.write(Annular) ;
if(Pinky!=255)
ServoPinky.write(Pinky) ;
}
}
Delay(30) ;
}
Pour les gants de capteur flex
(lilypad arduino) :
int ResThumb = A4 ; Variables de la forme de lecture analogique les capteurs flex connectés aux broches analogiques d’Arduino LilyPad
int ResIndex = A3 ;
int ResMiddle = A2 ;
int ResAnnular = A1 ;
int ResPinky = A0 ;
int OpenedThumb = 0 ; Variables des valeurs lorsque la main est complètement ouvert
int OpenedIndex = 0 ; Ceci est nécessaire pour un étalonnage continu
int OpenedMiddle = 0 ;
int OpenedAnnular = 0 ;
int OpenedPinky = 0 ;
int ClosedThumb ; Variables des valeurs lorsque la main est complètement fermée
int ClosedIndex ; Nous ne pouvons fixer à zéro depuis que la valeur minimale atteinte
int ClosedMiddle ; dans l’analogue lire jamais atteindre zéro. Nous allons affecter la valeur de
int ClosedAnnular ; un analogue de la première lecture, puis le programme dans la boucle sera
int ClosedPinky ; automatiquement des valeurs plus faibles assing
pouce int = 0 ; Variables des valeurs d’envoyer
int index = 0 ;
moyen d’int = 0 ;
annulaire int = 0 ;
pinky int = 0 ;
void setup()
{
Serial.Begin(9600) ; Activation de communication série, XBee série 1 sont préprogrammés à 9600 bauds/s
pinMode (entrée, ResThumb) ; Les variables du capteur sont définies comme entrée
pinMode (entrée, ResIndex) ;
pinMode (entrée, ResMiddle) ;
pinMode (entrée, ResAnnular) ;
pinMode (entrée, ResPinky) ;
ClosedThumb = analogRead(ResThumb) ;
ClosedIndex = analogRead(ResIndex) ;
ClosedMiddle = analogRead(ResMiddle) ;
ClosedAnnular = analogRead(ResAnnular) ;
ClosedPinky = analogRead(ResPinky) ;
}
void loop()
{
pouce = analogRead(ResThumb) ;
indice = analogRead(ResIndex) ;
moyenne = analogRead(ResMiddle) ;
annulaire = analogRead(ResAnnular) ;
Pinky = analogRead(ResPinky) ;
if(Thumb > OpenedThumb) / / étalonnage lecture et définition des valeurs maximales. Il a besoin de vous pour ouvrir complètement la main plusieurs fois
OpenedThumb = pouce ;
if(index > OpenedIndex)
OpenedIndex = index ;
if(Middle > OpenedMiddle)
OpenedMiddle = moyen ;
if(Annular > OpenedAnnular)
OpenedAnnular = annulaire ;
if(Pinky > OpenedPinky)
OpenedPinky = pinky ;
if(Thumb < ClosedThumb) / / étalonnage lecture et définition des valeurs minimales. Cela doit vous fermez complètement votre main quelques fois
ClosedThumb = pouce ;
if(index < ClosedIndex)
ClosedIndex = index ;
if(Middle < ClosedMiddle)
ClosedMiddle = moyen ;
if(Annular < ClosedAnnular)
ClosedAnnular = annulaire ;
if(Pinky < ClosedPinky)
ClosedPinky = pinky ;
pouce = carte (pouce, ClosedThumb, OpenedThumb, 0,180) ; L’analogique lire doit être réadapté en valeurs comprises entre 0 et 180 pour être utilisé par les servomoteurs.
indice = carte (index, ClosedIndex, OpenedIndex, 0,180) ; Les valeurs minimales et maximales de l’étalonnage sont utilisés pour définir correctement les lectures analogiques.
moyenne = carte (milieu, ClosedMiddle, OpenedMiddle, 0,180) ;
annulaire = map(annular,ClosedAnnular,OpenedAnnular,0,180) ;
Pinky = carte (pinky, ClosedPinky, OpenedPinky, 0,180) ;
Serial.Write("<") ; Ce personnage représente le début de l’ensemble des cinq valeurs
Serial.Write(Thumb) ; Les valeurs sont envoyées par l’intermédiaire de la broche Tx (la broche numérique 1)
Serial.Write(index) ;
Serial.Write(Middle) ;
Serial.Write(Annular) ;
Serial.Write(Pinky) ;
Delay(30) ;
}