Go Down

Topic: far muovere un servo un grado alla volta ad ogni pressione (Read 2912 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 :)
Guida per principianti http://playground.arduino.cc/Italiano/newbie
Unoffical Telegram group https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

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! :)
"Se una cosa sembra troppo bella per essere vera, semplicemente... non è vera!"
Video demonstration of my DIY Dashboard OBDII

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