Go Down

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

lesto

cambierei in
Code: [Select]

if( ps2x.ButtonPressed(PSB_BLUE) pos <=180){
       pos = pos + 1;


e

Code: [Select]

if( ps2x.ButtonPressed(PSB_PINK) && pos>=0){
       pos = pos - 1;


così se per qualch assurdo caso pos diventa un valore invalido, giochicchiare con i tasti prima o poi lo risporta ad un valore valido :)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dario Gogliandolo


cambierei in
Code: [Select]

if( ps2x.ButtonPressed(PSB_BLUE) pos <=180){
      pos = pos + 1;


e

Code: [Select]

if( ps2x.ButtonPressed(PSB_PINK) && pos>=0){
      pos = pos - 1;


così se per qualch assurdo caso pos diventa un valore invalido, giochicchiare con i tasti prima o poi lo risporta ad un valore valido :)


si così è ancora meglio! :)
Video demonstration of my DIY Dashboard OBDII -> http://goo.gl/m8Pqp

PaoloP

Potresti aggiungere il valore iniziale di pos in
Code: [Select]

int pos = 90;

e nel setup dopo l'attachinterrupt inserire
Code: [Select]
myservo.write(pos);
delay(1000);


In questo modo all'accensione il servo si mette a 90°.  :smiley-eek:
Poi con i pulsanti lo muovi da una parte o dall'altra.

Se all'accensione non si muove, l'errore è nei collegamenti.

Ferro

Grandissimi è venuto!!! Grazie mille!!! Siete dei grandi!!!posto il programma corretto.

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 = 90;


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(3);
 
}
void loop() {
 
  ps2x.read_gamepad();
     
    if( ps2x.Button(PSB_BLUE) && pos <= 180){
      pos = pos + 10;
  myservo.write(pos);
  delay(100);
    }
      if( ps2x.Button(PSB_PINK) && pos >= 0){
      pos = pos - 10;
  myservo.write(pos);
  delay(100);
      }
      delay(15);
}


Bisognava dare un valore iniziale a pos per poter fare l'operazione iniziale  :D .

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy