Go Down

Topic: far muovere un servo un grado alla volta ad ogni pressione (Read 1 time) 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 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.
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

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