Stap 3: Het programma
Voor de robotic hand
(Arduino):
#include
Servo
ServoThumb, ServoIndex,
ServoMiddle, ServoAnnular, ServoPinky;
byte startpakket;
int duim = 0;
int Index = 0;
int midden = 0;
int ringvormige = 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 ("klaar om te ontvangen.");
}
void loop
{
if(Serial.available()) {}
Startpakket = Serial.read();
Duim = Serial.read();
Index = Serial.read();
Midden = Serial.read();
Ringvormige = Serial.read();
Pinky = Serial.read();
Als (startpakket == ' <') {}
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);
}
Voor de flex sensor handschoenen
(lilypad arduino):
int ResThumb = A4; Variabelen van het analoge Lees formulier de flex-sensoren aangesloten op de analoge pinnen van Arduino LilyPad
int ResIndex = A3;
int ResMiddle = A2;
int ResAnnular = a1 worden verkregen;
int ResPinky = A0;
int OpenedThumb = 0; Variabelen van de waarden wanneer de hand wordt volledig geopend
int OpenedIndex = 0; Dit is nodig voor een continue kalibratie
int OpenedMiddle = 0;
int OpenedAnnular = 0;
int OpenedPinky = 0;
int ClosedThumb; Variabelen van de waarden wanneer de hand is volledig gesloten
int ClosedIndex; We instellen het op nul sinds dat de minimumwaarde bereikt niet
int ClosedMiddle; in de analoge Lees nooit bereikt nul. We zullen het toewijzen van de waarde van
int ClosedAnnular; een eerste analoge leest, zal het programma in de lus
int ClosedPinky; automatisch assing lagere waarden
int duim = 0; Variabelen van de waarden om te verzenden
int index = 0;
int midden = 0;
int ringvormige = 0;
int pinky = 0;
VOID Setup
{
Serial.begin(9600); Activeren van seriële communicatie, zijn XBee Series 1 voorgeprogrammeerde 9600 baud/s
pinMode (ResThumb, INPUT); De variabelen van de sensor worden ingesteld als input
pinMode (ResIndex, INPUT);
pinMode (ResMiddle, INPUT);
pinMode (ResAnnular, INPUT);
pinMode (ResPinky, INPUT);
ClosedThumb = analogRead(ResThumb);
ClosedIndex = analogRead(ResIndex);
ClosedMiddle = analogRead(ResMiddle);
ClosedAnnular = analogRead(ResAnnular);
ClosedPinky = analogRead(ResPinky);
}
void loop
{
duim = analogRead(ResThumb);
index = analogRead(ResIndex);
Midden = analogRead(ResMiddle);
ringvormige = analogRead(ResAnnular);
Pinky = analogRead(ResPinky);
if(Thumb > OpenedThumb) / / kalibratie lezen en instellen van de maximale waarden. Dit moet u uw hand een paar keer volledig te openen
OpenedThumb = duim;
if(index > OpenedIndex)
OpenedIndex = index;
if(Middle > OpenedMiddle)
OpenedMiddle = midden;
if(annular > OpenedAnnular)
OpenedAnnular = ringvormige;
if(Pinky > OpenedPinky)
OpenedPinky = pinky;
if(Thumb < ClosedThumb) / / kalibratie controle en de instelling van de minimumwaarden. Dit moet u volledig sluit je hand een paar keer
ClosedThumb = duim;
if(index < ClosedIndex)
ClosedIndex = index;
if(Middle < ClosedMiddle)
ClosedMiddle = midden;
if(annular < ClosedAnnular)
ClosedAnnular = ringvormige;
if(Pinky < ClosedPinky)
ClosedPinky = pinky;
duim = kaart (duim, ClosedThumb, OpenedThumb, 0,180); De analoge gelezen moet worden herwerkt in waarden tussen 0 en 180 taalgebruikin de servomotoren.
index = kaart (index, ClosedIndex, OpenedIndex, 0,180); De minimale en maximale waarden van de kalibraties worden gebruikt voor het correct ingesteld de analoge leest.
midden = kaart (midden, ClosedMiddle, OpenedMiddle, 0,180);
ringvormige = map(annular,ClosedAnnular,OpenedAnnular,0,180);
Pinky = kaart (pinky, ClosedPinky, OpenedPinky, 0,180);
Serial.write("<"); Dit karakter vertegenwoordigen het begin van het pakket van de vijf waarden
Serial.write(Thumb); De waarden worden verzonden via de Tx-pin (de digitale pin 1)
Serial.write(index);
Serial.write(Middle);
Serial.write(annular);
Serial.write(Pinky);
delay(30);
}