Braço Robotico Arduino + Controle PS2
O vídeo acima demonstra como afeta o ruído de diferentes fontes de tensão nos servos, para reduzir estes efeitos eu utilizei capacitores cerâmicos na portas de saída dos servos. Mas se temos uma alimentação insuficiente o ruído e tremedeira dos servo motores continua apresentando.
Acima podemos visualizar alguns detalhes do projeto foram utilizados 02 controladores analógicos do controle de um ps2 e adaptados na estrutura do braço robótico, estou usando um arduino mini pro que acoplado sem solda utilizado barramento macho e femea. O acrílico utilizado de base é retirado de um monitor dell antigo e o led de alto brilho se encontra com silicone no acrílico.
>Codigo
Vou deixar o codigo abaixo, vou estar verificando mais tarde se o mesmo é a ultima versão
include Servo.h>
Servo servo[4];
//code used for attaching upto 4 servos
byte angle[4] = {40, 120, 90, 90}; // inicializa servos posicion, (7)
//braço largo, (6) braço curto
byte potPin[4] = {A0, A1, A2, A3}; // input pins to attach your potentiometers
byte servoPin[4] = {7, 6, 10, 9}; // input pins to attach servos
void setup() {
//Serial.begin(9600);
//Serial.println("Starting DiggerCode.ino");
for (byte n = 0; n < 4; n++) { // atribui los nomes aos servos
servo[n].attach(servoPin[n]);
}
}
void loop() {
readPotentiometers();
moveServos();
delay(10);
}
void readPotentiometers() {
int potVal;
for (byte n = 0; n < 4; n++) {
potVal = analogRead(potPin[n]); // faz leituras dos potenciometros.
if (potVal < 200) { // dead zone for the joystick I used is 200 to 550.
angle[n] += 1; // Si la leitura do potenciometro es menor a
// 200, el suma "1", angle[n] + 1,
if (angle[n] > 170) {
angle[n] = 170;
}
}
if (potVal > 550) { // deadzone upper value
angle[n] -= 1;
if (angle[n] < 10) {
angle[n] = 10;
}
}
}
}
void moveServos() {
for (byte n = 0; n < 4; n++) {
servo[n].write(angle[n]);
}
}