Salve a tutti, sto realizzando un braccio robot 6 DOF con Arduino UNO e 1Sheeld per controllarlo tramite orientamento e sensore di prossimità per aprire/chiudere la pinza. Per il progetto ho utilizzato 4 Servo MG996R Tower Pro, 3 MG90S Tower Pro e un SG90 Tower Pro.
Il Robot è montato e pronto per la programmazione, e qui arrivano i problemi. Sono in possesso di un programma parziale per Arduino, reperibile nel web, nello sketch sono registrati solo 4 Servo ed io ne ho 8 da utilizzare, ma il problema non sta qui.
Una volta caricato lo sketch su arduino, collegato il mio iPhone a 1Sheeld+ (controllando che lo switch "Serial Port" sia in posizione corretta) e attivando i dovuti sensori nell'applicazione per smartphone, il braccio non vuole saperne di muoversi, seguendo i movimenti del mio telefono. Vi allego lo sketch, sperando che possiate darmi una mano..
Grazie in anticipo, Federico
#include <Servo.h>
#include <OneSheeld.h>
Servo myservo1;
Servo myservo2;
Servo myservo5;
Servo myservo6;
void setup()
{
OneSheeld.begin();
myservo1.attach(3);
myservo1.write(0);
myservo2.attach(5);
myservo2.write(0);
myservo5.attach(10);
myservo5.write(70);
myservo6.attach(11);
myservo6.write(10);
analogWrite(6, 200);
analogWrite(9, 200);
}
void loop() {
if (ProximitySensor.getValue() > 0)
myservo6.write(10);
else
myservo6.write(120);
if(OrientationSensor.getX() > 0 && OrientationSensor.getX() <= 180)
myservo1.write(map(abs(OrientationSensor.getX()),0,180,180,0));
if(OrientationSensor.getY() < -90 && OrientationSensor.getY() >= -180)
myservo2.write(map(abs(OrientationSensor.getY()),180,90,0,90));
if(OrientationSensor.getZ() > 0 && abs(OrientationSensor.getZ()) <= 60)
myservo5.write(map(OrientationSensor.getZ(),0,60,70,180));
if(OrientationSensor.getZ() < 0 && abs(OrientationSensor.getZ()) <= 60)
myservo5.write(map(abs(OrientationSensor.getZ()),0,60,70,0));
OneSheeld.processInput();
}