Ciao a tutti, chi avrà letto la mia presentazione saprà che da poco ho incominciato a utilizzare Arduino, perciò mi scuso fin da subito per errori magari stupidi o linguaggio poco tecnico.
Detto brevemente, il mio progetto consiste nella costruzione di un braccio meccanico a 5 gradi di libertà, con 5 servomotori comandati da pc (2 con il mouse e tre da tastiera) tramite Processing e Arduino.
Con il controllo da mouse tutto ok, il problema è il controllo da tastiera, che funziona,sì, ma non come dovrebbe.
In pratica se premo 'a' il servo svolge una rotazione completa e se premo 'd' torna indietro di 180°.
Capite anche voi che per un braccio meccanico è necessario una rotazione controllabile a seconda del tempo di premuta del pulsante. Non so se mi sono spiegato.
Ho cercato su Internet e su questo sito, ma non ho trovato niente a proposito dell'interfacciamento processing/arduino per il controllo dei servi (in modo graduale) da tastiera.
Posto qui sotto i due codici (che ho compilato io, e si vede!!! scusate gli errori...), per comodità con solo un servo controllato da 'a' e 'd'. Credo che il problema sia nella sequenza di comandi per myservo.write in arduino....
Spero davvero possiate capire dove sto sbagliando, per me sarebbe davvero importante, grazie.
Il codice processing:
import processing.serial.*;
Serial myPort;
void setup(){
println(Serial.list());
myPort = new Serial(this, Serial.list()[0],
9600);}
void draw(){
if(keyPressed){
if(key=='a'){
myPort.write(97);
}
else{
if(key=='d'){
myPort.write(100);
}}}}
Arduino:
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup ()
{
myservo.attach(9);
Serial.begin(9600);
}
void loop(){
pos=Serial.read();
if (pos =='a'){
myservo.write (10);
}
if (pos =='d'){
myservo.write (170);
}
}