Come utilizzare la libreria di Adafruit Servo Controller


ciao tutti, il mio problema è che nn reisco capire come funziona la libreria della shield di adafruit per il controllo dei servo motori, in particolare non riesco capire il funzionamento della funzione: pwm.setpwm(n,x,y), la "n" ho capito che identifica il servo invece "x" e "y" non capisco cosa si riferiscono, nella libreria vengono identificate come on e off...  ho pensato che magari serve per fare girare il servo tipo da x=10° y=80° ma quando faccio le prove il servo si incricca e mi sembra che va oltre il suo limite, il servo in teoria gira da 0° 180° anche se dopo ho visto che non è proprio così... se utilizzo la servo-shield "cinese" utilizzando le istruzioni della libreria servo.h, il servo gira bene senza incriccarsi o altro..   =(
i servi che utilizzo sono tower pro 9g sg90.

questa è la libreria:

code: [select]
/***************************************************
  library our adafruit 16-channel pwm & servo driver

  pick 1 today in adafruit shop!
  ------> http://www.adafruit.com/products/815

  these displays use i2c communicate, 2 pins required to 
  interface. arduino unos, thats scl -> analog 5, sda -> analog 4

  adafruit invests time , resources providing open source code,
  please support adafruit , open-source hardware purchasing
  products adafruit!

  written limor fried/ladyada adafruit industries. 
  bsd license, text above must included in redistribution
****************************************************/

#ifndef _adafruit_pwmservodriver_h
#define _adafruit_pwmservodriver_h

#if arduino >= 100
#include "arduino.h"
#else
#include "wprogram.h"
#endif


#define pca9685_subadr1 0x2
#define pca9685_subadr2 0x3
#define pca9685_subadr3 0x4

#define pca9685_mode1 0x0
#define pca9685_prescale 0xfe

#define led0_on_l 0x6
#define led0_on_h 0x7
#define led0_off_l 0x8
#define led0_off_h 0x9

#define allled_on_l 0xfa
#define allled_on_h 0xfb
#define allled_off_l 0xfc
#define allled_off_h 0xfd


class adafruit_pwmservodriver {
public:
  adafruit_pwmservodriver(uint8_t addr = 0x40);
  void begin(void);
  void reset(void);
  void setpwmfreq(float freq);
  void setpwm(uint8_t num, uint16_t on, uint16_t off);

private:
  uint8_t _i2caddr;

  uint8_t read8(uint8_t addr);
  void write8(uint8_t addr, uint8_t d);
};

#endif

hai letto questo tutorial ?

ed il reference della libreria ?

guglielmo


Arduino Forum > International > Italiano > Software (Moderator: leo72) > Come utilizzare la libreria di Adafruit Servo Controller


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support