Arduino IDE工程代码多文件编程和中文设置
一、esp8266模块信息


二、中英文切换
点击文件( File )–选择首选项( Preference )—选择语言( Language )—选择中文–点击确定( OK )


三、多文件编程
在Arduino编程中,将代码分割成多个文件是一种很好的做法,特别是项目变得越来越大和复杂时。这样做可以提高代码的可读性和可维护性。Arduino IDE原生支持C++,因此你可以使用C++的特性,如头文件(.h文件)和源文件(.cpp或.ino文件),来组织程序代码。
将Arduino代码分割成多个文件步骤如下:
创建头文件(.h文件):头文件通常包含类的声明、函数原型或常量定义。在Arduino项目中,可以将公共的函数声明或类定义放在头文件中。
例如,创建一个名为myFunctions.h的头文件:
// myFunctions.h
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H void setupLED();
void blinkLED(); #endif //MYFUNCTIONS_H
或者
#ifndef MYFUNCTIONS_H
#define MYFUNCTIONS_H class LedFun
{public:void setupLED(); void blinkLED(int num); //private://char num;
};
#endif //MYFUNCTIONS_H
创建源文件(.cpp或.ino文件):源文件包含函数的实现。在Arduino项目中,你可以将函数的实现放在源文件中。注意,Arduino IDE主要使用.ino文件作为源文件,但你也可以使用.cpp文件,并在IDE中手动设置编译选项。
例如,创建一个名为myFunctions.cpp的源文件:
// myFunctions.cpp
#include "myFunctions.h"
#include <Arduino.h> void setupLED() { // LED设置代码 Serial.println("set led");
} void blinkLED() { // LED闪烁代码
}
或者
#include "myFunctions.h"
#include <Arduino.h> void LedFun::setupLED()
{Serial.println("set led");
}void LedFun::blinkLED(int num)
{Serial.println(num,DEC);
}
在主文件中包含头文件:在主Arduino文件(通常是.ino文件)中,包含创建的头文件。这样就可以在主文件中调用在头文件中声明的函数了。
例如,主.ino文件中:
// main.ino
#include "myFunctions.h" void setup() { setupLED();
} void loop() { blinkLED();
}
或者
#include "myFunctions.h" LedFun myLedFun;void setup() {// put your setup code here, to run once:myLedFun.setupLED();
}void loop() {myLedFun.blinkLED(1);
}
在Arduino IDE中编译和上传,将所有文件放在同一个文件夹中,并在Arduino IDE中打开主.ino文件。然后编译和上传代码到Arduino开发板。
四、测试
工程文件夹下,新建文件,重命名为 ledFun.cpp 和 ledFun.h ,工程会自动加载。


测试代码:
ledFun.h 文件代码如下:
#ifndef LEDFUN_H
#define LEDFUN_H#include "Arduino.h"class LedFun
{public:void setLedOn();void blinkLed(int num);// private:// char num;
};#endif
ledFun.cpp 文件代码如下:
//#include "Print.h"
//#include "HardwareSerial.h"
#include "ledFun.h"void LedFun::setLedOn()
{Serial.println("set led on");
}void LedFun::blinkLed(int num)
{Serial.println(num,DEC);}
主函数文件代码如下:
#include "ledFun.h"const int BAUD_RATE = 115200;LedFun myLedFun;void setup() {// put your setup code here, to run once:Serial.begin(BAUD_RATE);//初始化串口通信delay(1000);//等待监视器连接Serial.println();myLedFun.setLedOn();
}void loop() {static int i=0;i++;myLedFun.blinkLed(i);delay(3000);}
测试结果


相关文章:
Arduino IDE工程代码多文件编程和中文设置
一、esp8266模块信息 二、中英文切换 点击文件( File )–选择首选项( Preference )—选择语言( Language )—选择中文–点击确定( OK ) 三、多文件编程 在Arduino编程中,将代码分割成多个文件是一种很好的做法,特别是项目变得越来越大和复杂时。这样…...
【微服务】Eureka(服务注册,服务发现)
文章目录 1.基本介绍1.学前说明2.当前架构分析1.示意图2.问题分析 3.引出Eureka1.项目架构分析2.上图解读 2.创建单机版的Eureka1.创建 e-commerce-eureka-server-9001 子模块2.检查父子pom.xml1.子 pom.xml2.父 pom.xml 3.pom.xml 引入依赖4.application.yml 配置eureka服务5.…...
windows上ssh设置代理,直接访问公司内网
ssh设置代理一般来说很简单,对于无密码或者可以支持密钥登录的,都比较无脑 难的地方在于使用用户名密码认证来使用一个http的代理或者socks5的代理,密码如何设置?特殊字符如何处理? 直接上答案,.ssh/conf…...
C++ union用法
在C中,union是一种特殊的数据类型,可以在同一个内存位置存储不同的数据类型。它的用法如下: 1. 声明union类型:使用关键字union加上union名称来声明一个union类型。 c union UnionName { dataType1 member1; dataType2 …...
JavaSE_运算符 案例分析
/*符号在字符串中的操作: 表示连接,会将其他内容和字符串连接在一起,形成一个字符串目标:理解符号在字符串中的作用会将其他内容和字符串连接在一起,形成一个字符串*/ public class Operator03 {public static void main(String[] args) {System.out.println("5 5 "…...
15、Spring Cloud Alibaba Sentinel实现熔断与限流
注:本篇文章主要参考周阳老师讲解的cloud进行整理的! 1、Sentinel 1.1、官网 https://sentinelguard.io/zh-cn/ 等价对标 Spring Cloud Circuit Breaker 1.2、是什么 https://github.com/alibaba/Sentinel/wiki 1.3、去哪下 https://github.com/alibab…...
Linux logout命令教程:如何安全地退出Linux会话(附实例详解和注意事项)
Linux logout命令介绍 logout命令用于退出当前的登录Shell。这个命令可以被普通用户用来结束他们自己的会话。 Linux logout命令适用的Linux版本 logout命令在所有主流的Linux发行版中都是可用的,包括但不限于Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、R…...
数据结构——顺序表(C语言版)
顺序表是数据结构中最基本的一种线性表,它以一段连续的存储空间来存储数据元素,元素之间的顺序由它们在内存中的位置来决定。在C语言中,我们通常使用数组来实现顺序表。 目录 顺序表的结构定义 顺序表的基本操作 应用实例 顺序表的结构定义…...
Knative 助力 XTransfer 加速应用云原生 Serverless 化
作者:元毅 公司介绍 XTransfer 是一站式外贸企业跨境金融和风控服务公司,致力于帮助中小微企业大幅降低全球展业的门槛和成本,提升全球竞争力。公司连续7年专注 B2B 外贸金融服务,已成为中国 B2B 外贸金融第一平台,目…...
服务器离线配置vscode连接,conda虚拟环境
记录一下服务器离线配置问题,以备不时之需。 服务器离线配置 vscode连接参考:vscode-server离线安装-CSDN博客 服务器离线配置conda虚拟环境:Conda 环境离线迁移(服务器断网情况下搭建虚拟环境envs) - 知乎 上次两个…...
各种需要使用的方法-->vue/微信小程序/layui
各种需要使用的方法-->vue/微信小程序/layui 1、vue里样式不起作用的方法,可以通过deep穿透的方式2、 js获取本周、上周、本月、上月日期3、ArrayBuffer Blob 格式转换ArrayBuffer与Blob的区别ArrayBuffer转BlobBlob转ArrayBuffer需要借助fileReader对象 4、使用…...
360奇酷刷机 360刷机助手 QGDP360手机QGDP刷机
360奇酷刷机 360刷机助手 QGDP破解版360手机QGDP刷机 360手机刷机资源下载链接:360rom.github.io 参考:360手机-360刷机360刷机包twrp、root 360奇酷刷机:360高通驱动安装 360手机刷机驱动;手机内置,可通过USB文件传输…...
2299. 强密码检验器 II
文章目录 题意思路代码 题意 题目链接 判断是否合法密码 思路 if 代码 class Solution { public:bool strongPasswordCheckerII(string password) {if (password.size() < 8)return false;int visit 0;for (size_t i 0; i < password.size(); i){char &ch pa…...
跟着cherno手搓游戏引擎【29】Batch简单合批
思路: CPU和GPU都开辟同样大小的一大块内存(为了存储顶点信息) 索引在程序运行时生成对应规则后绑定到索引缓冲中 动态生成顶点信息(现在改成Drawquad只是确定图形顶点的位置) 然后在Endscene,将CPU的动…...
粘包/半包及解决方案
一、粘包/半包介绍 1:粘包 粘包(Packet Concatenation)通常发生在基于流式传输协议(如 TCP)的通信中,因为 TCP 是面向流的传输协议,它不保证数据包的边界,而是将数据视为连续的字节…...
2024华为软件精英挑战赛记录
前言 本次主要是记录自己第一次参加华为软件挑战赛的经历。第一次参加比赛还是缺少经验,训练赛中拿到赛区的20多名,最后在正式赛中被反超了,只拿了40多名,实在是感到可惜。 题目:本次题目是一个智慧港口的问题。10个机…...
数据可视化艺术:Matplotlib与Seaborn实战
目录 1.Matplotlib基础绘图与定制化 1.1. 基础绘图 1.2. 定制化 2.Seaborn高级图表类型与样式设定 2.1. 高级图表类型 2.2. 样式设定 3.实战:绘制多维度数据可视化报告 4.总结 1. 前言 在数据科学领域,数据可视化扮演着至关重要的角色。通过图形化…...
python初级第一次作业
一、 dayint(input("enter today day")) fdayint(input("enter num of day since today")) c((fday%7)day)%7 if c0:print("sunday") elif c1:print("monday") elif c2:print("tuesday") elif c3:print("wendnsday&quo…...
Spring Boot整合Camunda打造高效工作流程
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚 👉点击这里,就可以查看我的主页啦!👇&#x…...
2.8、下拉刷新与上拉加载
页面的下拉刷新与上拉加载功能在移动应用中十分常见,例如,新闻页面的内容刷新和加载。这两种操作的原理都是通过响应用户的触摸事件,在顶部或者底部显示一个刷新或加载视图,完成后再将此视图隐藏。 实现思路 以下拉刷新为例,其实现主要分成三步: 监听手指按下事件,记录…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
