Go Down

Topic: far muovere un servo un grado alla volta ad ogni pressione (Read 1 time) previous topic - next topic

Ferro

Il codice è sempre quello che ho già postato però ho cambiato il ritardo e inserito la cosa che mi hai scritto tu.
Il servo viene alimentato da una batteria esterna da 9 V che viene portata con un regolatore a 5V, arduino è indifferente posso alimentarlo da il pc ma anche con una batteria esterna sempre da 9V( un'altra), ho già fatto codici con i servomotori e li so utilizzare perchè con altri codidi funzionano alla perfezione.
Il problema è proprio il codice che non riesco a scrivere correttamente molto probabilmente e non so come uscirne  :~ .
Io ho pensato di assegnare al valore di pos iniziale un servo.read() così che quando va a fare  pos = pos + 1; il pos nell'operazione sia il valore che legge dal servo, peccato non sappia come scrivere il programma  :smiley-roll:

lesto

coapisco che hai aggiunto solo quello che ho detto io, ma il punto è anche DOVE lo hai aggiunto :)

sicuro di aver collegato il GND della batteria all'arduino?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dario Gogliandolo

#12
Feb 07, 2013, 04:31 pm Last Edit: Feb 07, 2013, 04:40 pm by Dario Gogliandolo Reason: 1
Hai provato così?

Code: [Select]

#include <PS2X_lib.h>  //for v1.6
#include <Servo.h>
PS2X ps2x; // create PS2 Controller Class

Servo myservo;
Servo myservo2;
int error = 0;
int pos;


void setup(){
Serial.begin(57600);

//CHANGES for v1.6 HERE!!! **************PAY ATTENTION*************
 
 error = ps2x.config_gamepad(6,10,9,11, true, true);   //setup pins and settings:  GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error
 myservo.attach(2);
 
}
void loop() {
 
  ps2x.read_gamepad();          
    if( ps2x.ButtonPressed(PSB_BLUE) && pos>=0 && pos <=180){
      pos = pos + 1;
  myservo.write(pos);
  //delay(15);
while(ps2x.ButtonPressed(PSB_BLUE)){}
    }
      if( ps2x.ButtonPressed(PSB_PINK) && pos>=0 && pos <=180){
      pos = pos - 1;
  myservo.write(pos);
  //delay(15);
while(ps2x.ButtonPressed(PSB_PINK)){}
      }
}
 
Video demonstration of my Dashboard OBDII -> http://goo.gl/m8Pqp

lesto

che motivo ha il delay se poi fai while(ps2x.ButtonPressed(PSB_BLUE)){}?

non ti assicuri che val sia un valore valido, vedi qualche messaggio fa

IDENTARE IL CODICE! CTRL+T sull'ide, et voilà... (almeno prima di postare... poi come scrivete per i cavoli vostri sono cavoli vostri)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dario Gogliandolo


non ti assicuri che val sia un valore valido, vedi qualche messaggio fa


si me ne sono accorto dopo, l'ho corretto mentre scrivevi...


IDENTARE IL CODICE! CTRL+T sull'ide, et voilà... (almeno prima di postare... poi come scrivete per i cavoli vostri sono cavoli vostri)


l'ho modificato da qua stesso, senza passare dall'ide, in ogni caso non sapevo questa cosa... adesso che lo so starò più attento...  :smiley-sweat:
Video demonstration of my Dashboard OBDII -> http://goo.gl/m8Pqp

Go Up