Movimento di servo motori tramite tastiera

Salve, sono da poco approdato sul forum e da poco meno nel mondo Arduino.
Ho recentemente iniziato un progetto personale che consiste in un semplice braccio robotico a 5 gradi si libertà, ognuno dei quali mosso da un servo motore ( per la base e i primi due giunti, dei Servo MG996R, e per gli ultimi 2 dei Micro Servo SG 09).
La mia idea era quella di muovere ogni motore tramite i tasti della tastiera del laptop, in modo che, per esempio, finché il pulsante "A" è premuto, il Servo ruota in senso orario.
Ho provato a fare questo con la funzione Serial.read, solo che dal monitor seriale devo premere invio per ogni singola lettera che digito (mentre quello che sto cercando di fare è di controllarlo semplicemente premendo il tasto).

Spero che qualcuno sia in grado di aiutarmi, grazie in anticipo :D.
(Allego qui sotto in codice che ho scritto di un solo motore per comodità.)
Programmo da Mac OS un Arduino UNO rev3.

#include <Servo.h>

int pin_braccio = 13;

char val;
int angbraccio;

Servo servo_braccio;

void setup() {

  servo_braccio.attach(pin_braccio);
  Serial.begin(9600);

  servo_braccio.write(10);

}

void loop() {

  if (Serial.available()) {

    val = Serial.read();

    if (val == 'a') {
      angbraccio += 1;
      servo_braccio.write(angbraccio);
      delay(15);
      val = "";
    }
    if (val == 'd') {
      angbraccio -= 1;
      servo_braccio.write(angbraccio);
      delay(15);
      val = "";
    }
  }
}

Buonasera e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Mmmm ... dipende dal terminale seriale che usi ... ci sono quelli che appena premi un tasto lo inviano ed altri che attendono che tu premi l'invio ... però, normalmente, è cosa che si decide dalle impostazioni.

Nel monitor seriale del IDE di Arduino, ad esempio, in basso, c'è un campo in cui scegli come deve essrere l'invio ... quello a sinistra del campo dove selezioni la velocità ... puoi scegliere la prima voce, "No line ending" e dovrebbe inviare subito il tasto che premi.

Guglielmo

Ciao Guglielmo, ho provato a applicare il tuo consiglio ma anche inserendo la modalità "no line ending" devo premere invio per ogni comando.
Mi sapresti consigliare un terminale seriale che possa soddisfare le mie necessità valido per Mac OS ??
e nel caso, devo apportare delle modifiche al mio codice?

Grazie in anticipo
Rob

r000b:
Ciao Guglielmo, ho provato a applicare il tuo consiglio ma anche inserendo la modalità "no line ending" devo premere invio per ogni comando ...

Strano ... ricordavo diversamente ... peccato ... ::slight_smile:

In QUESTA pagina trovi Coolterm anche per mac (è multipiattaforma ed è gratuito). Ovviamente devi impostare correttamente i vari parametri per far si che invii, senza bisogno del INVIO e senza agiungere altre cose, il carattere che premi.

Lato Arduino NON c'è nulla da cambiare per usare un'altro emulatore seriale.

Guglielmo