3.3. Código Final
#include <Servo.h>
Servo servo1, servo2, servo3, servo4, servo5;
// ------Estos valores se pueden cambiar dependiendo de los diferentes componentes utilizados para un rendimiento correcto.
int reading; // Se usa para almacenar el valor leído por analogRead.
int mapVal; // Se utiliza para asignar los valores leídos por analogRead al rango del servo que mueve cada dedo.
int delay1 = 100; // Se usa para establecer un retraso para las lecturas.
int minServo = 35; // Valor mínimo para el movimiento del servo.
int maxServo = 180; // Valor máximo para el movimiento del servo.
int minSFlex = 100; // Valor mínimo para el sensor flexible pequeño.
int maxSFlex = 320; // Valor máximo para el sensor flexible pequeño.
int minBFlex = 220; // Valor mínimo para el sensor de flexión grande.
int maxBFlex = 520; // Valor máximo para el sensor de flexión grande.
void setup() {
// Conectar cada servo a una salida digital de Arduino (PWM)
servo1.attach(6); // Pulgar
servo2.attach(10); // Dedo índice
servo3.attach(9); // Dedo corazón
servo4.attach(11); // Dedo anular
servo5.attach(5); // Dedo meñique
}
void loop() {
// ---------- Thumb Finger
reading = analogRead(0); // Lee la entrada analógica del sensor flexible y el divisor de voltaje
mapVal = map(reading, minSFlex, maxSFlex, minServo, maxServo); //Asigna el valor leído del flex dentro de los valores del servo
if (mapVal < minServo) mapVal = minServo; // En caso de que el valor asignado sea menor que nuestro servoMin configurado en servoMin
if (mapVal > maxServo) mapVal = maxServo; // En caso de que el valor asignado sea mayor que nuestro servoMax configurado en servoMax
servo1.write(mapVal); // Establecer el servo al valor asignado
delay(delay1); // Establece un retraso entre las lecturas para una operación correcta
// Los demás igual
// ---------- Index Finger
reading = analogRead(3);
mapVal = map(reading, minSFlex, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo2.write(mapVal);
delay(delay1);
// ---------- Middle Finger
reading = analogRead(2);
mapVal = map(reading, minBFlex, maxBFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo3.write(mapVal);
delay(delay1);
// ---------- Ring Finger
reading = analogRead(5);
mapVal = map(reading, minSFlex + 80, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo4.write(mapVal);
delay(delay1);
// ---------- Little Finger
reading = analogRead(1);
mapVal = map(reading, minSFlex + 80, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo5.write(mapVal);
delay(delay1);
}
Servo servo1, servo2, servo3, servo4, servo5;
// ------Estos valores se pueden cambiar dependiendo de los diferentes componentes utilizados para un rendimiento correcto.
int reading; // Se usa para almacenar el valor leído por analogRead.
int mapVal; // Se utiliza para asignar los valores leídos por analogRead al rango del servo que mueve cada dedo.
int delay1 = 100; // Se usa para establecer un retraso para las lecturas.
int minServo = 35; // Valor mínimo para el movimiento del servo.
int maxServo = 180; // Valor máximo para el movimiento del servo.
int minSFlex = 100; // Valor mínimo para el sensor flexible pequeño.
int maxSFlex = 320; // Valor máximo para el sensor flexible pequeño.
int minBFlex = 220; // Valor mínimo para el sensor de flexión grande.
int maxBFlex = 520; // Valor máximo para el sensor de flexión grande.
void setup() {
// Conectar cada servo a una salida digital de Arduino (PWM)
servo1.attach(6); // Pulgar
servo2.attach(10); // Dedo índice
servo3.attach(9); // Dedo corazón
servo4.attach(11); // Dedo anular
servo5.attach(5); // Dedo meñique
}
void loop() {
// ---------- Thumb Finger
reading = analogRead(0); // Lee la entrada analógica del sensor flexible y el divisor de voltaje
mapVal = map(reading, minSFlex, maxSFlex, minServo, maxServo); //Asigna el valor leído del flex dentro de los valores del servo
if (mapVal < minServo) mapVal = minServo; // En caso de que el valor asignado sea menor que nuestro servoMin configurado en servoMin
if (mapVal > maxServo) mapVal = maxServo; // En caso de que el valor asignado sea mayor que nuestro servoMax configurado en servoMax
servo1.write(mapVal); // Establecer el servo al valor asignado
delay(delay1); // Establece un retraso entre las lecturas para una operación correcta
// Los demás igual
// ---------- Index Finger
reading = analogRead(3);
mapVal = map(reading, minSFlex, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo2.write(mapVal);
delay(delay1);
// ---------- Middle Finger
reading = analogRead(2);
mapVal = map(reading, minBFlex, maxBFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo3.write(mapVal);
delay(delay1);
// ---------- Ring Finger
reading = analogRead(5);
mapVal = map(reading, minSFlex + 80, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo4.write(mapVal);
delay(delay1);
// ---------- Little Finger
reading = analogRead(1);
mapVal = map(reading, minSFlex + 80, maxSFlex, minServo, maxServo);
if (mapVal < minServo) mapVal = minServo;
if (mapVal > maxServo) mapVal = maxServo;
servo5.write(mapVal);
delay(delay1);
}
Comentarios
Publicar un comentario