机械狗软件部分

配置库文件

ESPAsyncWebServer

U8G2

arduinojson

NTPClient

platformio.ini

配置以上四个库文件

编译成功后就会有

内置库导入

cpp 复制代码
#include <Arduino.h>
#include <Servo.h>
#include <Wire.h>
#include <FS.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <U8g2lib.h>
#include <ESPAsyncWebServer.h>
#include <ESP8266HTTPClient.h>
#include <NTPClient.h>
#include <ArduinoJson.h>
#include "image.cpp"

定义和初始化

定义变量

cpp 复制代码
//---按键
#define BUTTON_PIN 2 
#define BUTTON_PIN2 15
bool buttonPressed = false;                 //按键标志
bool buttonpressed2 = false;                //按键标志
unsigned long lastPressTime = 0;            //上次按键时间
const unsigned long debounceDelay = 50;     //消抖时间 ms
unsigned long lastPressTime2 = 0;           //上次按键时间
const unsigned long debounceDelay2 = 50;    //消抖时间 ms

//---ADC定义
//分压器比例(输入电压到ADC电压的比例)
const float voltageDividerRatio = 8.4; //分压比(8.4倍缩小)
//电压范围(电池电压)
const float minVoltage = 6.4; //电压为0%时
const float maxVoltage = 8.4; //电压为100%时
//采样次数
const int numSamples = 10;
float batteryVoltage = 0;  //计算电池电压
int batteryPercentage =0;

//---舵机
Servo servo1,servo2,servo3,servo4;
//舵机引脚
int engine1 =14; 
int engine2 =16;
int engine3 =12;
int engine4 =13;
int speed =300;

//---屏幕
U8G2_SSD1306_102X64_EA_OLEDS102_1_HW_I2C u8g2(U8G2_R0,U8X8_PIN_NONE,5,4); //SCL引脚5 SDA引脚4

//---WIFI账号密码
const char *ssid ="猪八戒";
const char *password="";

//---WebServer
AsyncWebServer server(80); //80端口 http默认端口就是80访问就不用加:端口
bool freestate =false; //自由模式的标签
bool actionstate =0;//用来判断执行到哪个动作 标签
bool emojiState =0; //表情标签
bool prevEmojiState =-1;//之前表情标签

//---NTP
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP,"ntp1.aliyun.com",8*3600,60000); //阿里云的服务器 8*3600ms时差 每隔60s刷新一次

//---API
const char *weatherAPI="http://api.seniverse.com/v3/weather/daily.json?key=";//新知天气的API
String temperature="";
String humidity="";
String weather="";
String useruid="";
String weatherapi="";
static bool initweather=false; 
const char *ssidFile="/ssid.json";

函数创建

cpp 复制代码
//ICACHE_RAM_ATTR是把函数强制存储到内存里面  
//handleButtonPress用来储存中断,放在ram里面响应速度更快
void ICACHE_RAM_ATTR handleButtonPress()
{

}

//监听路由
void handleWiFiConfig()
{

}
//加载WiFi配置
void loadWiFiConfig()
{

}
//捕捉天气
void fetchWeather()
{

}
//前进
void front()
{

}
//后退
void back()
{

}
//左转
void left()
{

}
//右转
void right()
{

}
//坐下
void sitdown()
{

}
//趴下
void lie()
{

}
//抬左手
void toplefthand()
{

}
//抬右手
void toprighthand()
{

}

void dosleep()
{

}
//ADC的电压测量
float getAverageAdcVoltage()
{
    return 0.1;
}
//电量计算
int mapBatteryPercentage(float voltage)
{
    return 1;
}

初始化

cpp 复制代码
void setup()
{
    Serial.begin(115200);//串口波特率
    u8g2.begin();        //屏幕初始化
    u8g2.setDisplayRotation(U8G2_R2);//屏幕的旋转角度 U8G2_R2表示180度
    servo1.attach(engine1,500,2500); //引脚D1,500us=0度,2500us=180度
    servo2.attach(engine2,500,2500); //引脚D2,500us=0度,2500us=180度
    servo3.attach(engine3,500,2500); //引脚D3,500us=0度,2500us=180度
    servo4.attach(engine4,500,2500); //引脚D4,500us=0度,2500us=180度
    servo1.write(90);                //旋转到90度
    servo2.write(90);                //旋转到90度
    servo3.write(90);                //旋转到90度
    servo4.write(90);                //旋转到90度
    SPIFFS.begin();                  //ffs文件系统初始化
    pinMode(BUTTON_PIN,INPUT_PULLUP);//GPIO2设置为输入并启用内部上拉电阻
    attachInterrupt(digitalPinToInterrupt(BUTTON_PIN),handleButtonPress,FALLING);//监听GPIO2 设置下降沿中断
    
    pinMode(BUTTON_PIN2,INPUT);////GPIO15设置为输入(无需内部上拉)
    attachInterrupt(digitalPinToInterrupt(BUTTON_PIN2),handleButtonPress,RISING);//监听GPIO15设置上升沿中断
    //设置wifi为热点模式
    WiFi.softAP(ssid,password);
    Serial.println("热点已启用");
    //访问的ip地址
    Serial.println("访问地址");
    Serial.print(WiFi.softAPIP());
    //加载Wifi配置
    loadWiFiConfig();

}

页面开发

前端开发

相关推荐
Devlab3 小时前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
zlinear数据采集卡8 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛139246256738 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun10 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界11 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
Rocktech_ruixun11 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
恒锐丰科技韩生12 小时前
率能 SS6625E|3.0~20V 单通道 H 桥直流电机驱动 SOP8 电子锁玩具机器人分享
嵌入式硬件·硬件工程
zlinear数据采集卡12 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Dr.kangder13 小时前
嵌入式面试总结(十八)——JTAG调试
嵌入式硬件·面试·职场和发展·架构·嵌入式
恒锐丰科技韩生14 小时前
率能 SS6226|2.4~7.2V 低压双通道双 H 桥电机驱动 SOP16 玩具小家电专用芯片
嵌入式硬件·硬件工程