






KS0258
Nuevo
Escudo controlador de 16 servomotores para ARDUINO. Marca Keyestudio.
Este escudo o placa de expansión es diseñado por KEYESTUDIO con materiales y procesos de alta calidad e incorpora el PCA9685PW (CRM367 - TUD1645) como base. este escudo (Shield) de expansión es ideal para proyectos de robótica en los que se requiere gran cantidad de servomotores en movimiento simultáneamente y de una manera sincronizada, por ejemplo, robots humanoides, robots bípedos o cuadrúpedos, así como de tipo araña.
Cuando realizamos experimentos con robots, es necesario utilizar varios puertos PWM para controlar el servo motor, sin embargo, el Arduino UNO R3 común solo tiene 6 puertos PWM, por lo que no es suficiente. Esto le permite utilizar esta tarjeta de expansión, que se ensambla directamente en la placa Arduino UNO R3 y puede controlar hasta 16 servos. Utiliza la entrada I2C, solo ocupa A4 y A5 de la placa Arduino UNO R3. La placa de expansión contiene orificios de doble cara de PCB, que permiten adicionarle componentes a través del uso de soldadura para construir circuitos de prototipos más complejos.
/*************************************************** This is an example for our Adafruit 16-channel PWM & Servo driver PWM test - this will drive 16 PWMs in a 'wave' Pick one up today in the adafruit shop! ------> http://www.adafruit.com/products/815 These displays use I2C to communicate, 2 pins are required to interface. For Arduino UNOs, thats SCL -> Analog 5, SDA -> Analog 4 Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include <Wire.h> #include <Adafruit_PWMServoDriver.h> // called this way, it uses the default address 0x40 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // you can also call it with a different address you want //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41); void setup() { Serial.begin(9600); Serial.println("16 channel PWM test!"); // if you want to really speed stuff up, you can go into 'fast 400khz I2C' mode // some i2c devices dont like this so much so if you're sharing the bus, watch // out for this! pwm.begin(); pwm.setPWMFreq(1600); // This is the maximum PWM frequency // save I2C bitrate uint8_t twbrbackup = TWBR; // must be changed after calling Wire.begin() (inside pwm.begin()) TWBR = 12; // upgrade to 400KHz! } void loop() { // Drive each PWM in a 'wave' for (uint16_t i=0; i<4096; i += 8) { for (uint8_t pwmnum=0; pwmnum < 16; pwmnum++) { pwm.setPWM(pwmnum, 0, (i + (4096/16)*pwmnum) % 4096 ); } } }
Una vez conectado podrá controlar de manera simultánea hasta 16 servomotores.