Ordinato entro le 14:00 nei giorni lavorativi = spedito in giornata 30 giorni per il recesso Garanzia di 1 anno
← Torna alla panoramica

Schema di collegamento ed esempio di codice

Ecco come collegare il Driver servo PWM a 16 canali 12-Bit I2C a un Arduino UNO o ESP32, con uno sketch di esempio che puoi caricare subito.

Demo driver PWM per servo PCA9685 a 16 canali

Questo esempio comunica con il driver PWM a 12 bit PCA9685 a 16 canali tramite I2C. L'Arduino inizializza la board a 50 Hz e fa oscillare il segnale PWM su Channel 0 avanti e indietro, perfetto per testare servo standard o il fading dei LED. Apri il Serial Monitor a 115200 baud per vedere i valori di impulso attuali.

Schema di collegamento: Driver servo PWM a 16 canali 12-Bit I2C su un Arduino UNO
Schema di collegamento · Clicca per ingrandire
Tabella di collegamento: Driver servo PWM a 16 canali 12-Bit I2C su un Arduino UNO
Tabella di collegamento · Clicca per ingrandire
PCA9685_16_Channel_PWM_Servo_Driver_Demo.ino · compilato e testato
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : PCA9685 16-Channel PWM Servo Driver Demo
 *  Board     : Arduino UNO (arduino:avr:uno)
 *  Parts     : 16 Channel 12-Bit PWM Servo Driver I2C
 *  Libraries : Adafruit PWM Servo Driver Library 3.0.3
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

// Pulse length bounds for standard 50Hz servos
const uint16_t SERVOMIN = 150; // ~0.75 ms pulse (0 degrees)
const uint16_t SERVOMAX = 600; // ~2.25 ms pulse (180 degrees)

void setup() {
  Serial.begin(115200);
  Serial.println(F("PCA9685 16-Channel Servo Driver Demo"));

  pwm.begin();
  pwm.setOscillatorFrequency(27000000);
  pwm.setPWMFreq(50); // 50 Hz PWM for hobby servos
  delay(10);
}

void loop() {
  Serial.println(F("Moving to 0 degrees..."));
  for (uint16_t pulse = SERVOMIN; pulse < SERVOMAX; pulse += 5) {
    pwm.setPWM(0, 0, pulse);
    delay(20);
  }

  delay(500);

  Serial.println(F("Moving to 180 degrees..."));
  for (uint16_t pulse = SERVOMAX; pulse > SERVOMIN; pulse -= 5) {
    pwm.setPWM(0, 0, pulse);
    delay(20);
  }

  delay(500);
}

Librerie necessarie: Adafruit PWM Servo Driver Library 3.0.3

Wiring diagram and example code generated by Codey.online — https://www.codey.online

Demo driver PWM per servo PCA9685 a 16 canali

Questo progetto controlla un servomotore usando il driver PWM a 12 bit e 16 canali PCA9685 tramite I2C. Poiché il PCA9685 e i servo მუშაობano a 5V, un convertitore di livello logico bidirezionale a 4 canali protegge i pin I2C a 3.3V dell'ESP32 (GPIO 21 e GPIO 22). Lo sketch inizializza il PCA9685 e fa oscillare continuamente il servo su Channel 0 avanti e indietro.

Schema di collegamento: Driver servo PWM a 16 canali 12-Bit I2C su un ESP32 DevKit V1
Schema di collegamento · Clicca per ingrandire
Tabella di collegamento: Driver servo PWM a 16 canali 12-Bit I2C su un ESP32 DevKit V1
Tabella di collegamento · Clicca per ingrandire
PCA9685_16_Channel_PWM_Servo_Driver_Demo.ino · compilato e testato
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : PCA9685 16-Channel PWM Servo Driver Demo
 *  Board     : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
 *  Parts     : 16 Channel 12-Bit PWM Servo Driver I2C
 *  Libraries : Adafruit PWM Servo Driver Library 3.0.3
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// Default I2C address is 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);

// 12-bit pulse lengths (out of 4096) for standard 50Hz servos
#define SERVOMIN  150 // Minimum pulse length (~0.75 ms / 0 degrees)
#define SERVOMAX  600 // Maximum pulse length (~2.25 ms / 180 degrees)
#define SERVO_FREQ 50 // Standard analog servo frequency (50 Hz)

const uint8_t servoChannel = 0;

void setup() {
  Serial.begin(115200);
  Serial.println("PCA9685 Servo Driver Demo");

  // Initialize I2C on ESP32 pins (SDA=GPIO 21, SCL=GPIO 22)
  Wire.begin(21, 22);

  pwm.begin();
  pwm.setOscillatorFrequency(27000000);
  pwm.setPWMFreq(SERVO_FREQ);

  delay(10);
  Serial.println("Ready! Sweeping servo on Channel 0...");
}

void loop() {
  // Sweep from 0 to 180 degrees
  for (uint16_t pulselen = SERVOMIN; pulselen <= SERVOMAX; pulselen += 5) {
    pwm.setPWM(servoChannel, 0, pulselen);
    delay(15);
  }
  delay(500);

  // Sweep back from 180 to 0 degrees
  for (uint16_t pulselen = SERVOMAX; pulselen >= SERVOMIN; pulselen -= 5) {
    pwm.setPWM(servoChannel, 0, pulselen);
    delay(15);
  }
  delay(500);
}

Librerie necessarie: Adafruit PWM Servo Driver Library 3.0.3

Wiring diagram and example code generated by Codey.online — https://www.codey.online

Visti di recente

Ricevitore Bluetooth wireless M38 con amplificatore 2x5W

Ricevitore Bluetooth wireless M38 con amplificatore 2x5W

€ 2,25
Breadboard, 2390 Fori - ZY-206, 4 morsetti

Breadboard, 2390 Fori - ZY-206, 4 morsetti

€ 21,30
Modulo sensore di vibrazione KY-002

Modulo sensore di vibrazione KY-002

€ 1,10
CS32  | Blue Pill | 72Mhz | 64KB | clone STM32

CS32 | Blue Pill | 72Mhz | 64KB | clone STM32

€ 4,15
Vedi