Pages: [1]   Go Down
Author Topic: problema codice controllo servo  (Read 407 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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?
Logged

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10447
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il multimentro non vede la sporcizia che arriva dai pulsanti, ovvero una serie velocissima di 1 e 0
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10447
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: