解决arduino编程错误提示,项目工程过大

  • Post author:
  • Post category:其他




解决arduino编程错误提示,项目工程过大


又是一个困扰好多天的难题,找了好多资料也没有解决,我们做得是WiFi调通蓝牙,整体的代码思路都没有问题,可就是卡在项目工程过大无法进行,眼看着代码在那却编译无法通过真的很难受啊,一开始想着是库文件占用内存过多,于是开始删减库文件函数,可库文件有很多,而且有的2700多行,从属关系也很多,牵一发而动全身,真的很难修改,没办法,就去找了学长问,整了三个小时,才找到解决办法,其实只需要几步就可以解决,可是没有经验的人遇到的根本都不知道怎么办,所以,写这篇博客既是记录这个问题,也让大家不懂得少走点弯路。


其实很简单的,错误的截图是这样的


在这里插入图片描述


我们在安装arduino时开发板信息一般使用得都是BPI-BIT,它没有分区管理功能,初始的内存不足以容纳程序,所以,我们就需要重新选择开发板进行分区

管理





在这里插入图片描述

如上图,开发板信息选择esp32 Dev Module,然后重新进行分区,这样即可解决项目工程过大的问题。

存一下蓝牙调通wifi的源代码,有兴趣的可以试试。

#include <BLEDevice.h>
#include <BLE2902.h>
#include <WiFi.h>

BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
uint8_t txValue = 0;
long lastMsg = 0;//存放时间的变量 
String rxload="Black";
int temp1 = 1;

#define SERVICE_UUID           "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"   // UART service UUID  UUID码,蓝牙的唯一通用识别码
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

const char* ssid = "123456";
const char* password = "66666666";


class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };
    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};
 
class MyCallbacks: public BLECharacteristicCallbacks
  {
    void onWrite(BLECharacteristic *pCharacteristic)
      {
      std::string rxValue = pCharacteristic->getValue(); 
      if (rxValue.length() > 0)
        {
        rxload="";
        for (int i = 0; i < rxValue.length(); i++)
         {
          rxload +=(char)rxValue[i];
          Serial.print(rxValue[i]);
         }
         Serial.println();
         
         if(temp1 == 1)
          {
          std::string rxValue1;
          Serial.print("Waiting for wifi Id..");
          
          char *copy = new char[strlen(rxValue.c_str())];//开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址 
          strcpy(copy,rxValue.c_str());//给新开辟的空间赋入值
          ssid = copy;
          temp1++;
         }
         else
          {
           Serial.print("Waiting for wifi password..");
          char* copy1 = new char[strlen(rxValue.c_str())];
          strcpy(copy1,rxValue.c_str());
          password = copy1;
          temp1 = 1;
          WiFi.begin(ssid, password); 
          long start = millis();
          int flag = 0;
          while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.println("Connectingto WiFi..");
            if(millis() - start > 10000){
              flag = 1;
              Serial.print("File to connected WiFi\n");
              break;
            }
        }
        if(flag == 0)
          {
          Serial.println("Connected to the WiFi network");                
          }

         }    
      }
    }
};
 
void setupBLE(String BLEName){
  const char *ble_name = BLEName.c_str();     //返回当前字符串的首地址
  BLEDevice::init(ble_name);  //创建一个蓝牙设备,名称为ble_name
  BLEServer *pServer = BLEDevice::createServer(); //创建服务
  pServer->setCallbacks(new MyServerCallbacks());
  BLEService *pService = pServer->createService(SERVICE_UUID);    //???
  
  pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX,BLECharacteristic::PROPERTY_NOTIFY);
  
  pCharacteristic->addDescriptor(new BLE2902());  //添加描述
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX,BLECharacteristic::PROPERTY_WRITE);
  pCharacteristic->setCallbacks(new MyCallbacks());
  
  pService->start();
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}
 
void setup() {
  Serial.begin(9600);
  //Serial.println("Waiting a client connection to notify...");
  setupBLE("EEESP");//设置蓝牙名称
  //Serial.println("Waiting a client connection to notify...");
}
 
void loop()
{
 /* long now = millis();//记录当前时间
    if (now - lastMsg > 1000) 
    {
        //每隔1秒发一次信号
        if (deviceConnected && rxload.length()>0) {
          String str=rxload;
          const char *newValue=str.c_str();
          pCharacteristic->setValue(newValue);
          pCharacteristic->notify("!noty");
        }
        
        lastMsg = now;//刷新上一次发送数据的时间
    }
 */
 
}



版权声明:本文为weixin_42251474原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。