# Compilation error: ‘ledcSetup’ and 'ledcAttachPin' was not declared in this scope please help me

**URL:** <https://forum.sunfounder.com/t/compilation-error-ledcsetup-and-ledcattachpin-was-not-declared-in-this-scope-please-help-me/2976>\
**Category:** General Discussion\
**Created:** [April 3, 2025, 3:24pm UTC](https://forum.sunfounder.com/t/compilation-error-ledcsetup-and-ledcattachpin-was-not-declared-in-this-scope-please-help-me/2976 "2025-04-03T15:24:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dona122](https://avatars.discourse-cdn.com/v4/letter/d/f14d63/32.png) [@Dona122](https://forum.sunfounder.com/u/Dona122)\
**Post date:** [April 3, 2025, 3:24pm UTC](https://forum.sunfounder.com/t/compilation-error-ledcsetup-and-ledcattachpin-was-not-declared-in-this-scope-please-help-me/2976/1 "2025-04-03T15:24:28Z")

</div>

I’m working through the ESP32-38 pin wide. I was building a gyroscope controlled robot car.  
this is my code -

#include \<esp\_now.h\>  
#include \<WiFi.h\>

#define FORWARD 1  
#define BACKWARD 2  
#define LEFT 3  
#define RIGHT 4  
#define FORWARD\_LEFT 5  
#define FORWARD\_RIGHT 6  
#define BACKWARD\_LEFT 7  
#define BACKWARD\_RIGHT 8  
#define TURN\_LEFT 9  
#define TURN\_RIGHT 10  
#define STOP 0

#define BACK\_RIGHT\_MOTOR 0  
#define BACK\_LEFT\_MOTOR 1  
#define FRONT\_RIGHT\_MOTOR 2  
#define FRONT\_LEFT\_MOTOR 3

struct MOTOR\_PINS  
{  
int pinIN1;  
int pinIN2;  
int pinEn;  
int pwmSpeedChannel;  
};

std::vector\<MOTOR\_PINS\> motorPins =  
{  
{16, 17, 22, 4}, //BACK\_RIGHT\_MOTOR  
{18, 19, 23, 5}, //BACK\_LEFT\_MOTOR  
{26, 27, 14, 6}, //FRONT\_RIGHT\_MOTOR  
{33, 25, 32, 7}, //FRONT\_LEFT\_MOTOR  
};

#define MAX\_MOTOR\_SPEED 200

const int PWMFreq = 1000; /\* 1 KHz \*/  
const int PWMResolution = 8;

#define SIGNAL\_TIMEOUT 1000 // This is signal timeout in milli seconds. We will reset the data if no signal  
unsigned long lastRecvTime = 0;

struct PacketData  
{  
byte xAxisValue;  
byte yAxisValue;  
byte zAxisValue;  
};  
PacketData receiverData;

// callback function that will be executed when data is received  
void OnDataRecv(const uint8\_t \* mac, const uint8\_t \*incomingData, int len)  
{  
if (len == 0)  
{  
return;  
}  
memcpy(&receiverData, incomingData, sizeof(receiverData));  
String inputData ;  
inputData = inputData + "values " + receiverData.xAxisValue + " " + receiverData.yAxisValue + " " + receiverData.zAxisValue;  
Serial.println(inputData);

if ( receiverData.xAxisValue \< 75 && receiverData.yAxisValue \< 75)  
{  
processCarMovement(FORWARD\_LEFT);  
}  
else if ( receiverData.xAxisValue \> 175 && receiverData.yAxisValue \< 75)  
{  
processCarMovement(FORWARD\_RIGHT);  
}  
else if ( receiverData.xAxisValue \< 75 && receiverData.yAxisValue \> 175)  
{  
processCarMovement(BACKWARD\_LEFT);  
}  
else if ( receiverData.xAxisValue \> 175 && receiverData.yAxisValue \> 175)  
{  
processCarMovement(BACKWARD\_RIGHT);  
}  
else if (receiverData.zAxisValue \> 175)  
{  
processCarMovement(TURN\_RIGHT);  
}  
else if (receiverData.zAxisValue \< 75)  
{  
processCarMovement(TURN\_LEFT);  
}  
else if (receiverData.yAxisValue \< 75)  
{  
processCarMovement(FORWARD);  
}  
else if (receiverData.yAxisValue \> 175)  
{  
processCarMovement(BACKWARD);  
}  
else if (receiverData.xAxisValue \> 175)  
{  
processCarMovement(RIGHT);  
}  
else if (receiverData.xAxisValue \< 75)  
{  
processCarMovement(LEFT);  
}  
else  
{  
processCarMovement(STOP);  
}

lastRecvTime = millis();  
}

void processCarMovement(int inputValue)  
{  
switch(inputValue)  
{  
case FORWARD:  
rotateMotor(FRONT\_RIGHT\_MOTOR, MAX\_MOTOR\_SPEED);  
rotateMotor(BACK\_RIGHT\_MOTOR, MAX\_MOTOR\_SPEED);  
rotateMotor(FRONT\_LEFT\_MOTOR, MAX\_MOTOR\_SPEED);  
rotateMotor(BACK\_LEFT\_MOTOR, MAX\_MOTOR\_SPEED);  
break;

```
case BACKWARD:
  rotateMotor(FRONT_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, -MAX_MOTOR_SPEED);   
  break;

case LEFT:
  rotateMotor(FRONT_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, MAX_MOTOR_SPEED);   
  break;

case RIGHT:
  rotateMotor(FRONT_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, -MAX_MOTOR_SPEED);  
  break;

case FORWARD_LEFT:
  rotateMotor(FRONT_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, STOP);
  rotateMotor(FRONT_LEFT_MOTOR, STOP);
  rotateMotor(BACK_LEFT_MOTOR, MAX_MOTOR_SPEED);  
  break;

case FORWARD_RIGHT:
  rotateMotor(FRONT_RIGHT_MOTOR, STOP);
  rotateMotor(BACK_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, STOP);  
  break;

case BACKWARD_LEFT:
  rotateMotor(FRONT_RIGHT_MOTOR, STOP);
  rotateMotor(BACK_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, STOP);   
  break;

case BACKWARD_RIGHT:
  rotateMotor(FRONT_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, STOP);
  rotateMotor(FRONT_LEFT_MOTOR, STOP);
  rotateMotor(BACK_LEFT_MOTOR, -MAX_MOTOR_SPEED);   
  break;

case TURN_LEFT:
  rotateMotor(FRONT_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, -MAX_MOTOR_SPEED);  
  break;

case TURN_RIGHT:
  rotateMotor(FRONT_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(BACK_RIGHT_MOTOR, -MAX_MOTOR_SPEED);
  rotateMotor(FRONT_LEFT_MOTOR, MAX_MOTOR_SPEED);
  rotateMotor(BACK_LEFT_MOTOR, MAX_MOTOR_SPEED);   
  break;

case STOP:
  rotateMotor(FRONT_RIGHT_MOTOR, STOP);
  rotateMotor(BACK_RIGHT_MOTOR, STOP);
  rotateMotor(FRONT_LEFT_MOTOR, STOP);
  rotateMotor(BACK_LEFT_MOTOR, STOP);    
  break;

default:
  rotateMotor(FRONT_RIGHT_MOTOR, STOP);
  rotateMotor(BACK_RIGHT_MOTOR, STOP);
  rotateMotor(FRONT_LEFT_MOTOR, STOP);
  rotateMotor(BACK_LEFT_MOTOR, STOP);    
  break;

```

}  
}

void rotateMotor(int motorNumber, int motorSpeed)  
{  
if (motorSpeed \< 0)  
{  
digitalWrite(motorPins[motorNumber].pinIN1, LOW);  
digitalWrite(motorPins[motorNumber].pinIN2, HIGH);  
}  
else if (motorSpeed \> 0)  
{  
digitalWrite(motorPins[motorNumber].pinIN1, HIGH);  
digitalWrite(motorPins[motorNumber].pinIN2, LOW);  
}  
else  
{  
digitalWrite(motorPins[motorNumber].pinIN1, LOW);  
digitalWrite(motorPins[motorNumber].pinIN2, LOW);  
}

ledcWrite(motorPins[motorNumber].pwmSpeedChannel, abs(motorSpeed));  
}

void setUpPinModes()  
{  
for (int i = 0; i \< motorPins.size(); i++)  
{  
pinMode(motorPins[i].pinIN1, OUTPUT);  
pinMode(motorPins[i].pinIN2, OUTPUT);  
//Set up PWM for motor speed  
ledcSetup(motorPins[i].pwmSpeedChannel, PWMFreq, PWMResolution);  
ledcAttachPin(motorPins[i].pinEn, motorPins[i].pwmSpeedChannel);  
rotateMotor(i, STOP);  
}  
}

void setup()  
{  
setUpPinModes();

Serial.begin(115200);  
WiFi.mode(WIFI\_STA);

// Init ESP-NOW  
if (esp\_now\_init() != ESP\_OK)  
{  
Serial.println(“Error initializing ESP-NOW”);  
return;  
}

esp\_now\_register\_recv\_cb(OnDataRecv);  
}

void loop()  
{  
//Check Signal lost.  
unsigned long now = millis();  
if ( now - lastRecvTime \> SIGNAL\_TIMEOUT )  
{  
processCarMovement(STOP);  
}  
}

keep showing error of ‘ledcSetup’ and ‘ledcAttachPin’  
please tell me how to solve it…

---

<div class="post-metadata">

**Author:** ![Spf650](https://avatars.discourse-cdn.com/v4/letter/s/f05b48/32.png) [@Spf650](https://forum.sunfounder.com/u/Spf650)\
**Post date:** [April 3, 2025, 4:48pm UTC](https://forum.sunfounder.com/t/compilation-error-ledcsetup-and-ledcattachpin-was-not-declared-in-this-scope-please-help-me/2976/2 "2025-04-03T16:48:04Z")

</div>

This was reported some time ago by another user. Im not sure if Sunfounder fixed it or not.

This was the original suggestion if it helps?

> [@Please Help - Compilation error: 'ledcSetup' was not declared in this scope](https://forum.sunfounder.com/t/please-help-compilation-error-ledcsetup-was-not-declared-in-this-scope/1382):
>
> I’m working through the ESP32 starter kit and it TUTs this is only the 2nd TUT 2.2 fading LED and i can not get past this. I’ve followed all the steps repeatedly and this keeps happening. C:\Users\tymed\OneDrive\Documents\ESP32\esp32-starter-kit-main\c\codes\2.2\_fading\_led\2.2\_fading\_led.ino: In function ‘void setup()’: C:\Users\tymed\OneDrive\Documents\ESP32\esp32-starter-kit-main\c\codes\2.2\_fading\_led\2.2\_fading\_led.ino:6:3: error: ‘ledcSetup’ was not declared in this scope 6 | ledcSet…

I assume by now it is fixed, but just in case!

---

<div class="post-metadata">

**Author:** ![Dona122](https://avatars.discourse-cdn.com/v4/letter/d/f14d63/32.png) [@Dona122](https://forum.sunfounder.com/u/Dona122)\
**Post date:** [April 3, 2025, 8:40pm UTC](https://forum.sunfounder.com/t/compilation-error-ledcsetup-and-ledcattachpin-was-not-declared-in-this-scope-please-help-me/2976/3 "2025-04-03T20:40:13Z")

</div>

Okay, I’ll see if esp32 2.0.14 installs if I follow that.
