MENU版本二main.cppdemodemo.hdemo.cpptesttest.htest.cpp版本一不够详细单文件头文件(分文件)源码版本二main.cpp// src\main.cpp#includeArduino.h#includedemo.h#includetest.hDemo demo;Test test;voidsetup(){Demo demo;Test test;demo.begin();test.begin();}voidloop(){demo.loop();test.loop();}demodemo.h// include\demo.h#ifndefDEMO_H#defineDEMO_HclassDemo{public:// 构造函数声明Demo();// 初始化函数voidinit();// 初始化开始函数voidbegin();// 循环函数voidloop();private:// 私有成员int_demo;};#endifdemo.cpp// src\demo.cpp#includedemo.h#includeArduino.hint_demo0;// 构造函数和类成员函数的实现Demo::Demo(){// 对象创建时自动执行Serial.println(构造函数demo);// 初始化成员变量_demo0;}voidDemo::init(){Serial.println(初始化demo);}voidDemo::begin(){Serial.println(初始化开始demo);Demo::init();}voidDemo::loop(){// Serial.println(心跳循环demo);}testtest.h// include\test.h#pragmaoncenamespacetestModule{voidinit();}classTest{public:Test();voidbegin();voidloop();private:int_test;};test.cpp// src\test.cpp#includetest.h#includeArduino.hint_test0;namespacetestModule{voidinit(){Serial.println(初始化test);}voidinitA(){Serial.println(初始化test);}}// namespace testModule// 构造函数和类成员函数的实现Test::Test(){// 对象创建时自动执行Serial.println(构造函数test);// 初始化成员变量_test0;}voidTest::begin(){Serial.println(初始化开始test);testModule::init();}voidTest::loop(){// Serial.println(心跳循环test);}版本一不够详细单文件#includeWiFi.h#includeWebServer.h#includeArduinoJson.hconstchar*ssidjifu;constchar*pass2022xinchan!#;constintDT1010;constintDT300300;constintDT500500;constintDT10001000;constintpin44;constintpin55;constintpin1313;intpinList[5]{23,22,21,19,18};intlensizeof(pinList)/sizeof(pinList[0]);boolisLTSfalse;boolisRTSfalse;boolisDFLfalse;boolisTLEDfalse;boolisFLEDfalse;boolisBLEDfalse;WebServerserver(8068);// 封装呼吸灯voidfnEncapsulaBreathingLight(){for(inti0;i256;i){analogWrite(pin13,i);delay(DT10);}for(inti255;i0;i--){analogWrite(pin13,i);delay(DT10);}}// 左转灯voidleftTurnSignal(){fnEncapsulaIndicatorLight(pin4,1);}// 右转灯voidrightTurnSignal(){fnEncapsulaIndicatorLight(1,pin5);}// 双闪灯voiddoubleFlashingLights(){fnEncapsulaIndicatorLight(pin4,pin5);}// api开关灯voidfnApiSwitch(){String isSwitchserver.arg(isSwitch);if(isSwitchtrue){digitalWrite(pin13,HIGH);sendResponse(200,success,灯已开启,,,isSwitch);}elseif(isSwitchfalse){digitalWrite(pin13,LOW);sendResponse(200,success,灯已关闭,,,isSwitch);}else{sendResponse(500,failure,失败,,,isSwitch);}}// 主函数voidsetup(){Serial.begin(9600);runInit();server.on(/api/apiSwitch,HTTP_GET,fnApiSwitch);server.on(/api/apiTwinkle,HTTP_GET,fnApiTwinkle);server.on(/api/apiBreathing,HTTP_GET,fnApiBreathing);server.on(/api/apiFlowing,HTTP_GET,fnApiFlowing);server.on(/api/apiIndicatorLight,HTTP_GET,fnApiIndicatorLight);fnEncapsulaFlashingLight(1);server.begin();}// 循环函数voidloop(){server.handleClient();if(isTLED)fnEncapsulaTwinkleLight();if(isBLED)fnEncapsulaBreathingLight();if(isFLED)fnEncapsulaFlashingLight(2);if(isLTS)leftTurnSignal();if(isRTS)rightTurnSignal();if(isDFL)doubleFlashingLights();}头文件(分文件)main.ino(主文件、入口文件)#includeWiFi.h#includeWebServer.h#includeArduinoJson.h#includeled.h#includeindicatorLight.hconstchar*ssidjifu;constchar*pass2022xinchan!#;WebServerserver(8068);// server流水灯voidserverFlowing(){Response resfnApiFlowing(server.arg(isFlowing));sendResponse(res.code,res.status,res.message,res.originId,res.newId,res.other);}// server指示灯voidserverApiIndicatorLight(){Response resfnApiIndicatorLight(server.arg(originId),server.arg(newId));sendResponse(res.code,res.status,res.message,res.originId,res.newId,res.other);}// 初始化WiFi服务voidrunInit(){WiFi.mode(WIFI_STA);WiFi.begin(ssid,pass);while(WiFi.status()!WL_CONNECTED){delay(DT500);Serial.print(Loading in progress...);}pinMode(pin4,OUTPUT);pinMode(pin5,OUTPUT);pinMode(pin13,OUTPUT);for(inti0;iPLLen;i)pinMode(pinList[i],OUTPUT);Serial.print(\nWiFiIP: );Serial.println(WiFi.localIP());}voidsetup(){Serial.begin(9600);runInit();server.on(/api/apiSwitch,HTTP_GET,serverApiSwitch);server.on(/api/apiTwinkle,HTTP_GET,serverApiTwinkle);server.on(/api/apiBreathing,HTTP_GET,serverApiBreathing);server.on(/api/apiFlowing,HTTP_GET,serverFlowing);server.on(/api/apiIndicatorLight,HTTP_GET,serverApiIndicatorLight);server.begin();}voidloop(){server.handleClient();myLoopA();myLoopB();}led.h和led.cppled.h#ifndefLED_H#defineLED_H#includeencaSend.hResponsefnApiSwitch(String isBool);ResponsefnApiTwinkle(String isBool);ResponsefnApiBreathing(String isBool);ResponsefnApiFlowing(String isBool);voidmyLoopB();#endifled.cpp#includeArduino.h#includeled.hboolisTfalse;boolisBfalse;boolisFfalse;// 封装闪烁灯voidencaTwinkleLight(){digitalWrite(pin13,HIGH);delay(DT1000);digitalWrite(pin13,LOW);delay(DT1000);}// 封装呼吸灯voidencaBreathingLight(){for(inti0;i256;i){analogWrite(pin13,i);delay(DT10);}for(inti255;i0;i--){analogWrite(pin13,i);delay(DT10);}}// 封装流水灯voidencaFlowingLight(inttype){if(type1){for(inti0;iPLLen;i){digitalWrite(pinList[i],HIGH);digitalWrite(pinList[(i0)?(i-1):(PLLen-1)],LOW);delay(DT300);}}else{for(inti0;iPLLen;i)digitalWrite(pinList[i],LOW);}}voidmyLoopB(){if(isT)encaTwinkleLight();if(isB)encaBreathingLight();if(isF)encaFlowingLight(1);}indicatorLight.h和indicatorLight.cppindicatorLight.h#ifndefINDICATOR_LIGHT_H#defineINDICATOR_LIGHT_H#includeencaSend.hResponsefnApiIndicatorLight(String originId,String newId);voidmyLoopA();#endifindicatorLight.cpp#includeArduino.h#includeindicatorLight.hboolisLfalse;boolisRfalse;boolisDfalse;// 封装灯亮灭voidencaLightOnOff(boolisPinA,boolisPinB){if(isPinA)digitalWrite(pin4,HIGH);if(isPinB)digitalWrite(pin5,HIGH);delay(DT500);if(isPinA)digitalWrite(pin4,LOW);if(isPinB)digitalWrite(pin5,LOW);delay(DT500);}voidmyLoopA(){if(isL)leftTurnSignal();if(isR)rightTurnSignal();if(isD)doubleFlashingLights();}encaSend.h和encaSend.cppencaSend.h#ifndefENCA_SEND_H#defineENCA_SEND_Hconstintpin44;constintpin55;constintpin1313;constintpinList[5]{23,22,21,19,18};constintPLLensizeof(pinList)/sizeof(pinList[0]);constintDT1010;constintDT300300;constintDT500500;constintDT10001000;structResponse{intcode;constchar*status;constchar*message;String originId;String newId;String other;};ResponseencaRetuPara(intcode,constchar*status,constchar*message,constStringidA,constStringidB,constStringother);#endifencaSend.cpp#includeArduino.h#includeencaSend.h// 封装返回参数ResponseencaRetuPara(intcode,constchar*status,constchar*message,constStringidA,constStringidB,constStringother){Response res;res.codecode;res.statusstatus;res.messagemessage;res.originIdidA;res.newIdidB;res.otherother;returnres;}源码私聊获取源码关注智码帮微信公众号。