Ecco un esempio di codice Arduino per controllare una semplice mano robotica con 5 dita, utilizzando un Arduino e alcuni servomotori. Questo codice permette di controllare manualmente la posizione delle dita della mano.
Nota: Assicurati di avere installato la libreria “Servo” nell’IDE di Arduino prima di caricare questo codice.
#include <Servo.h>
// Definizione dei pin dei servomotori
const int thumbPin = 9;
const int indexPin = 10;
const int middlePin = 11;
const int ringPin = 12;
const int pinkyPin = 13;
// Creazione degli oggetti Servo per controllare i servomotori
Servo thumbServo;
Servo indexServo;
Servo middleServo;
Servo ringServo;
Servo pinkyServo;
// Variabili per memorizzare l'angolo di ciascuna dita
int thumbAngle = 90;
int indexAngle = 90;
int middleAngle = 90;
int ringAngle = 90;
int pinkyAngle = 90;
void setup() {
// Attiva la comunicazione seriale per il debug (opzionale)
Serial.begin(9600);
// Collega gli oggetti Servo ai pin corrispondenti
thumbServo.attach(thumbPin);
indexServo.attach(indexPin);
middleServo.attach(middlePin);
ringServo.attach(ringPin);
pinkyServo.attach(pinkyPin);
// Posiziona tutte le dita nella posizione di riposo
thumbServo.write(thumbAngle);
indexServo.write(indexAngle);
middleServo.write(middleAngle);
ringServo.write(ringAngle);
pinkyServo.write(pinkyAngle);
}
void loop() {
// Leggi l'input seriale per controllare le dita
if (Serial.available() > 0) {
char command = Serial.read();
switch (command) {
case 'T': // Pollice
thumbAngle = readServoAngle();
thumbServo.write(thumbAngle);
break;
case 'I': // Indice
indexAngle = readServoAngle();
indexServo.write(indexAngle);
break;
case 'M': // Medio
middleAngle = readServoAngle();
middleServo.write(middleAngle);
break;
case 'R': // Anulare
ringAngle = readServoAngle();
ringServo.write(ringAngle);
break;
case 'P': // Mignolo
pinkyAngle = readServoAngle();
pinkyServo.write(pinkyAngle);
break;
}
}
}
// Funzione per leggere l'angolo desiderato dalla seriale
int readServoAngle() {
int angle = Serial.parseInt();
// Assicurati che l'angolo sia compreso tra 0 e 180 gradi
angle = constrain(angle, 0, 180);
return angle;
}
Questo codice consente di controllare la posizione delle dita della mano robotica inviando comandi attraverso la comunicazione seriale. Puoi inviare comandi tramite il Monitor Seriale dell’IDE di Arduino. Ad esempio, inviando “T90” puoi posizionare il pollice a 90 gradi. Inviando “I120” puoi posizionare l’indice a 120 gradi. E così via.
Assicurati di collegare correttamente i servomotori ai pin specificati nel codice e di alimentarli in modo adeguato, tenendo presente che alcuni servomotori possono richiedere un’alimentazione esterna.