Problema con invio dati al Servo

Salve a tutti,
nel mio progetto stò cercando di far muovere diversi servo scrivendo dal computer dal pannello Serial dell'IDE di Arduino.
Lo scopo è quello di creare un'escavatore. Scrivendo delle lettere muovo i Servo che sono collegati al braccio.
Il problema è che quando scrivo la lettera H (e quindi aumento il valore che invio al Servo) funziona, quando invece scrivo la lettera J (e quindi diminuisco il valore che invio al Servo) non funziona.
Dove sbaglio?

#include <Stepper.h>
#include <Servo.h>

#define STEPS 100

Servo braccio1;
Servo braccio2;
Servo morsa;
Servo giroruota;

Stepper avanzamento(STEPS, 22,23,24,25);

char comunica;

int pos1;
int pos2;
int posmorsa;
int posruota;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  braccio1.attach(12);
  braccio2.attach(11);
  morsa.attach(10);
  giroruota.attach(9);
  braccio1.write(3);
  braccio2.write(0);
  morsa.write(0);
  giroruota.write(0);
  pos1 = 2;
}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available())
  {
    comunica = Serial.read();
    if (comunica == 'H')
    {
      pos1 = pos1 + 1;
      braccio1.write(pos1);
    }
    if (comunica == 'J')
    {
      pos1 = pos1 - 5;
      braccio2.write(pos1);
    }
    Serial.write(pos1);
  }
  delay(100);
}

Dove sbaglio?

Ti ri-invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Forse devi spiegare come sono collegate le cose. Io almeno, non ho capito.
Parli del codice e dici invio al servo al singolare, ma del codice si vede che hai 4 servo e con H e J spedisci i valori a braccio1 e braccio2.

Giusto!
Che sbadato che sono, nel codice ho inserito il secondo servo che ancora non è collegato.

Vado subito a presentarmi. Il regolamento lo avevo già letto.

Secondo me se usi switch() il codice è più leggibile:

switch (comunica)
{ case 'H':
      pos1 = pos1 + 1;
      braccio1.write(pos1);
      break;
  case 'J':
      pos1 = pos1 - 1;
      braccio1.write(pos1);
      break;
}

nid69ita:
Secondo me se usi switch() il codice è più leggibile:
...

Anche se anche la soluzione con if dovrebbe funzionare.

Prova di inviare al terminale con
Serial.write(comunica);
la lettera trasmessa cosí Ti rendi conto cosa arriva.

Secondo me stai usando in modo inapropriato la funzione "Serial.write(pos1);" il valore pos1 verrá non scritto come numero ma interpretato come ascii e stampato il relativo carattere. È meglio usare Serial.print();

Ciao Uwe