PWMServoBoard library "Multiple definitions "

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
Sor_Jay
 
Posts: 10
Joined: Tue Aug 31, 2021 11:35 pm

PWMServoBoard library "Multiple definitions "

Post by Sor_Jay »

Hello Adafruit, thank you for everything you do - I love it! I need help with a quick problem:

I'm using a library call teensy4_i2c instead of the usual Wire library, and it requried me to switch the include to that library. I made a new folder (calle dib_changedtoT4I2c) and copied the library into it, then changed the include path in my project to be this new version. The teensy4 library should be fully compatible and replace wire in every way, so it shouldn't be an issue. However, here I am haha.

in Adafruit_PWMServoDriver.cpp:

Code: Select all

#include "Adafruit_PWMServoDriver.h"
#include "i2c_driver_wire.h"
in Adafruit_PWMServoDriver.h

Code: Select all

#include "Arduino.h"
#include "i2c_driver_wire.h" 
Those are the only changes I've made, yet I get this error:

Code: Select all

Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'
what should I do? Why is it like this?

I'm trying to run a motor(through a speed controller) and two servos at the same time from the servoboard. My code is attached below.

ps. do you have any example code that would show a way to easily control independently and at the same time the servos and throttle? Or any reccomendations on easy ways to do this? I am a very new programmer (high-school)

my code:

Code: Select all

#include "Arduino.h"
#include <i2c_driver.h>
#include <Adafruit_PWMServoDriver.cpp>


Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN  1000 // This is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  2000 // This is the 'maximum' pulse length count (out of 4096)
#define SERVO_FREQ 50 // Analog servos run at ~50 Hz updates

const byte scPin = 15;

void throttle(int percentSpeed);

void setup() {
  Serial.begin(9600);
  pwm.begin();
  pwm.setOscillatorFrequency(27000000);
  pwm.setPWMFreq(SERVO_FREQ);  // Analog servos run at ~50 Hz updates

  delay(10);
}

void loop() {
  
  Serial.println("Speed up!");
  
  for(int i = 0; i < 100; i++){
    throttle(i);
    delay(500);
  }
  
    Serial.println("Slow down, reverse!");
  for(int i = 100; i > -100; i--){
    throttle(i);
    delay(500);
  }
  
    Serial.println("back to 0");
  for(int i = -100; i > 0; i++){
    throttle(i);
    delay(500);
  }

  delay(1000);
}


void startSC(){
  throttle(0);
  delay(10);
  throttle(100);
  delay(10);
  throttle(-100);
  delay(10);
  throttle(0);
  delay(10);
}

void throttle(int percentSpeed){
  int mapped= map(percentSpeed, -100, 100, 1000, 2000);
  pwm.setPWM(scPin, 0, mapped);
  Serial.println("Throttle");
  Serial.print("  -mapped: ");
  Serial.println(mapped);
  Serial.print("  -pS: ");
  Serial.println(percentSpeed);
}


/*
void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= SERVO_FREQ;   // Analog servos run at ~60 Hz updates
  Serial.print(pulselength); Serial.println(" us per period"); 
  pulselength /= 4096;  // 12 bits of resolution
  Serial.print(pulselength); Serial.println(" us per bit"); 
  pulse *= 1000000;  // convert input seconds to us
  pulse /= pulselength;
  Serial.println(pulse);
  pwm.setPWM(n, 0, pulse);
}
*/

full error code:

Code: Select all

[LD]  .vsteensy/build/throttle2.elf 
Memory region         Used Size  Region Size  %age Used
            ITCM:       14764 B       512 KB      2.82%
            DTCM:       14080 B       512 KB      2.69%
             RAM:       12384 B       512 KB      2.36%
           FLASH:         28 KB      1984 KB      1.41.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
c:/progra~2/arduino/hardware/tools/arm/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char, I2CDriverWire&)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char, I2CDriverWire&)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::getPWM(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPWM(unsigned char, unsigned short, unsigned short)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPin(unsigned char, unsigned short, bool)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::getOscillatorFrequency()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setOscillatorFrequency(unsigned long)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::read8(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::readPrescale()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::writeMicroseconds(unsigned char, unsigned short)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::write8(unsigned char, unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::reset()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::sleep()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::wakeup()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setExtClk(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPWMFreq(float)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::begin(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setOutputMode(bool)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char, I2CDriverWire&)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver(unsigned char, I2CDriverWire&)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::getPWM(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPWM(unsigned char, unsigned short, unsigned short)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPin(unsigned char, unsigned short, bool)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::getOscillatorFrequency()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setOscillatorFrequency(unsigned long)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::read8(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::readPrescale()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::writeMicroseconds(unsigned char, unsigned short)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::write8(unsigned char, unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::reset()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::sleep()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::wakeup()'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setExtClk(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setPWMFreq(float)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::begin(unsigned char)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
.vsteensy/build/lib/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp.o: In function `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()':
C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::setOutputMode(bool)'
.vsteensy/build/src/main.cpp.o:C:\Dropbox\allSaves\robotics\1Arduinorecent\realvisualrover\lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: first defined here
collect2.exe: error: ld returned 1 exit status
%
make: *** [makefile:237: .vsteensy/build/throttle2.elf] Error 1
The terminal process "C:\Program Files\PowerShell\7\pwsh.exe -Command C:/arduinovisualteensy/visualteensy/VisualTeensy-master/VisualTeensy/make.exe uploadTy -j -Otarget" terminated with exit code: 1.
Last edited by adafruit_support_carter on Thu Jul 07, 2022 11:04 am, edited 2 times in total.
Reason: added [code] tags

User avatar
dastels
 
Posts: 15819
Joined: Tue Oct 20, 2015 3:22 pm

Re: PWMServoBoard library "Multiple definitions "

Post by dastels »

Start by taking the #include "Adafruit_PWMServoDriver.h" out of Adafruit_PWMServoDriver.cpp. It's pulled in via Adafruit_PWMServoDriver.h. And to a complete clean of the build.

Dave

User avatar
Sor_Jay
 
Posts: 10
Joined: Tue Aug 31, 2021 11:35 pm

Re: PWMServoBoard library "Multiple definitions "

Post by Sor_Jay »

Thank you for the responce,

I took the #include <Adafruit....driver.h> out of the cpp, but it just introduced a lot of errors in the code. It may be pulled in by .h, but I think in order to work It still has to have access to the .h, so that doesn't make sense to me.

I tried putting #pragma once on the .h file, but nothing changed. Still get the "lib_changedtoT4I2c\libraries/Adafruit-PWM-Servo-Driver-Library-master/Adafruit_PWMServoDriver.cpp:40: multiple definition of `Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()'"

#include "i2c_driver_wire.h"
#include <Adafruit_PWMServoDriver.h>

//#define ENABLE_DEBUG_OUTPUT

/*!
* @brief Instantiates a new PCA9685 PWM driver chip with the I2C address on a
* TwoWire interface
*/
Adafruit_PWMServoDriver::Adafruit_PWMServoDriver() //<--------------------THIS IS LINE 40
: _i2caddr(PCA9685_I2C_ADDRESS), _i2c(&Wire) {}

Do you have any other suggustions?

User avatar
dastels
 
Posts: 15819
Joined: Tue Oct 20, 2015 3:22 pm

Re: PWMServoBoard library "Multiple definitions "

Post by dastels »

It would seem that the includes you added are causing Adafruit_PWMServoDriver::Adafruit_PWMServoDriver()' to be defined twice. I.e. once in the include you added, and somewhere else already.

Dave

User avatar
Sor_Jay
 
Posts: 10
Joined: Tue Aug 31, 2021 11:35 pm

Re: PWMServoBoard library "Multiple definitions "

Post by Sor_Jay »

Okay, so I just tried doing the regular code with regular wire, no changes everything origional. I still get the same error. It's not about the wire library, but something about the paths or something. I checked my computer - the only places where I have the .h is in the library and in a different project in a lib folder.

User avatar
dastels
 
Posts: 15819
Joined: Tue Oct 20, 2015 3:22 pm

Re: PWMServoBoard library "Multiple definitions "

Post by dastels »

Have you turned on all the build output settings to see if you can get more information about what it's finding for that method.

Dave

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”