Problema con posiciones de servos
Publicado por Oscar (1 intervención) el 15/04/2018 20:57:50
Hola, estoy trabajando en un proyecto de feria de mi instituto. Es un robot humanoide de 17 servomotores, estoy utilizando Arduino UNO y el mudulo PCA9865.
El problema es el siguiente, cuando estoy programando todo va bien, las posiciones responden bien, pero el problema viene cuando ya dejó de trabajar con el robot y desconectó y lo guardo. Cuando vuelvo a conectar todo para continuar con la programación de la secuencia que quiero lograr, pues las posiciones no cogen el ángulo en qué estaba la otra vez, y vuelvo y subo el programa a Arduino y sigue con esa posición diferente, es como si el ángulo 50 cambiara y no es el mismo que el de la otra vez.
Con el robot lo que quiero lograr es una secuencia de movimientos para hacer una demostración de éste, ya sea que camine y salude, etc.
El código que utilizo es este.
Nota: es solo un ejemplo
Por favor necesito ayuda urgente me queda muy poco tiempo y todavía no he podido solucionar este problema, una persona me estuvo hablando que quizás con encode se soluciona, pero que él no sabía
El problema es el siguiente, cuando estoy programando todo va bien, las posiciones responden bien, pero el problema viene cuando ya dejó de trabajar con el robot y desconectó y lo guardo. Cuando vuelvo a conectar todo para continuar con la programación de la secuencia que quiero lograr, pues las posiciones no cogen el ángulo en qué estaba la otra vez, y vuelvo y subo el programa a Arduino y sigue con esa posición diferente, es como si el ángulo 50 cambiara y no es el mismo que el de la otra vez.
Con el robot lo que quiero lograr es una secuencia de movimientos para hacer una demostración de éste, ya sea que camine y salude, etc.
El código que utilizo es este.
Nota: es solo un ejemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver servos = Adafruit_PWMServoDriver(0x40);
unsigned int pos0=172; // ancho de pulso en cuentas para pocicion 0°
unsigned int pos180=565; // ancho de pulso en cuentas para la pocicion 180°
void setup() {
servos.begin();
servos.setPWMFreq(60); //Frecuecia PWM de 60Hz o T=16,66ms
}
void setServo(uint8_t n_servo, int angulo) {
int duty;
duty=map(angulo,0,180,pos0, pos180);
servos.setPWM(n_servo, 0, duty);
}
void loop() {
setServo(0,30);
setServo(2,90);
setServo(4,180);
setServo(6,120);
setServo(8,0);
setServo(10,30);
setServo(12,90);
setServo(14,170);
delay(1000);
setServo(1,30);
setServo(3,90);
setServo(5,180);
setServo(7,120);
setServo(9,30);
setServo(11,90);
setServo(13,180);
setServo(15,120);
delay(1000);
setServo(0,120);
setServo(2,180);
setServo(4,90);
setServo(6,60);
setServo(8,45);
setServo(10,160);
setServo(12,170);
setServo(14,30);
delay(1000);
setServo(1,120);
setServo(3,0);
setServo(5,90);
setServo(7,60);
setServo(9,120);
setServo(11,180);
setServo(13,0);
setServo(15,30);
delay(1000);
}
Por favor necesito ayuda urgente me queda muy poco tiempo y todavía no he podido solucionar este problema, una persona me estuvo hablando que quizás con encode se soluciona, pero que él no sabía
Valora esta pregunta


0