Optimizing code


#include <ESP32Servo.h>
#include <WiFi.h>
#include <BleKeyboard.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
BleKeyboard Blekeys;
Servo myservo;  // Create a servo object
int startPos = 180;  // Starting position for the servo
int endPos = 40;    // Target position for the servo movement

void setup() {
  Serial.begin(115200); // Initialize serial communication
  myservo.attach(2);  // Attach the servo to pin 2
  Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  Blekeys.begin();
}
void loop() {
  Blynk.run();
}
void Power() {
    for (int pos = startPos; pos >= endPos; pos -= 1) {
    myservo.write(pos);            
              
    delay(15);                       
  }
  for (int pos = endPos; pos <= startPos; pos += 1) {
    myservo.write(pos);
    delay(15);
}
}

void off(){
  Blekeys.println("hii");
}

i found that most of the bulk is coming from that ble library as when i complie it with the library it takes up 118% compared to 58% without the library

i deleted it

A library that takes 50% of esp32 memory????
My guess is that you should look for another library...

You didn't ask to rewrite, just optimize)

#include <ESP32Servo.h>
#include <WiFi.h>
#include <BleKeyboard.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

#define MY_SERIAL_SPD 115200
#define SERVO_WRITE_TIMEOUT 15
#define SERVO_PIN 2 //or const uint8_t servoPin = 2;
#define DEFAULT_PORT 80

BleKeyboard Blekeys;
Servo myservo;  

// The natural word size of the AVR's RAM datapaths is 8 bits, 
// so a "byte" type (8 bits) will be fetched into a CPU register more quickly than an "int" type (16 bits),
// and an "int" will require more program memory to hold the extra instructions to fetch and manipulate it.
// uint8_t variables are in 0-255 range
const uint8_t startPos = 180;  
// Also if you are not planning to change "borders" dynamically- make it constant,
// so programmer wont change stuff that isn't meant to be changed accidentally
// Also you can #denine START_POSITION 180
const uint8_t endPos = 40;    // Target position for the servo movement

void setup() {
  Serial.begin(MY_SERIAL_SPD);
  myservo.attach(SERVO_PIN);
  Blynk.begin(auth, ssid, pass, "blynk.cloud", DEFAULT_PORT);
  Blekeys.begin();
}

void loop() {// its not a mistake, but definitely not a good habit to write without spaces
  Blynk.run();
}

void Power() {
  // and try to match {} tabs
  for (uint8_t pos = startPos; pos >= endPos; pos -= 1) {
    myservo.write(pos);            
    delay(SERVO_WRITE_TIMEOUT); //DO NOT USE DELAYS. That is the first thing that i teach my students.
    // Write define or make structure for such configurations.                      
  }
  
  for (uint8_t pos = endPos; pos <= startPos; pos += 1) {
    myservo.write(pos);
    delay(SERVO_WRITE_TIMEOUT);  //Use software timers instead (google about millis() function) 
  }
}

void off(){
  Blekeys.println("hii"); // i dont know what that function does exatly ,
  //but I believe that it is a good idea to keep such strings in FLASH memory
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.