Go Down

Topic: problema codice controllo servo (Read 450 times) previous topic - next topic

leocorno

Salve sto costruendo un modellino di braccio robotico mosso da 5 servomotori, controllato da 2 joystick analogici e due pulsanti.
i due pulsanti dovrebbero rispettivamente aprire e chiudere la pinza ma i risultati non sono quelli sperati. questo è il codice:
Code: [Select]

#include <Servo.h>

Servo rota;
Servo spalla;
Servo gomito;
Servo polso;
Servo mano;

int posrota = 90;
int posspalla = 40;
int posgomito = 60;
int pospolso = 90;
int posmano = 90;
int sxver = 0;
int sxori = 0;
int dxver = 0;
int dxori = 0;
int apri = 0;
int chiudi = 0;


void setup()
{
  rota.attach(3);
  spalla.attach(5);
  gomito.attach(6);
  polso.attach(9);
  mano.attach(10);
}


void loop()
{
  sxver = analogRead(0);
  sxori = analogRead(1);   
  dxver = analogRead(2);
  dxori = analogRead(3);
  apri = digitalRead(7);
  chiudi = digitalRead(8);
 
  if ((sxver>800)&&(posspalla<180)) posspalla++;
  if ((sxori>800)&&(posrota<180)) posrota++;
  if ((dxver>800)&&(posgomito<120)) posgomito++;
  if ((dxori>800)&&(pospolso<180)) pospolso++;
  if ((sxver<200)&&(posspalla>50)) posspalla--;
  if ((sxori<200)&&(posrota>0)) posrota--;
  if ((dxver<200)&&(posgomito>0)) posgomito--;
  if ((dxori<200)&&(pospolso>0)) pospolso--;
  if ((apri==1)&&(posmano<150)) posmano++;
  if ((chiudi==1)&&(posmano>0)) posmano--;
 
  rota.write(posrota);
  spalla.write(posspalla);
  gomito.write(posgomito);
  polso.write(pospolso);
  mano.write(posmano); 
  delay(15);                       

}


il servo che da problemi è "mano", controllato con i joystick funziona correttamente ma con i pulsanti (controllato il corretto funzionamento con multimetro), si muove di poco ad ogni rilascio del pulsante anzichè muoversi finchè rimane premuto..
qualcuno mi sa aiutare?

lesto

il multimentro non vede la sporcizia che arriva dai pulsanti, ovvero una serie velocissima di 1 e 0
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leocorno

questo non spiega comunque il comportamento.. in quanto ad ogni 1 dovrebbe girare..

lesto

ops, scusa, ho interpretato male il codice.

il codice sembra corretto, quindi il problema potrebbe essere il cablaggio, in primis mi viene in mente che manca la pull down, specialmente se i pin digitali che usi sono vicini
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leocorno

ho risolto, avevo sbagliato la posizione di una resistenza di un terzo pulsante che rompeva un po' le scatole.

Go Up