前言:
最近正在学习arduino开发,0经验产品入门,期望后续能实现自己需求自己实现,由于本地markdown不方便编辑其他在线文档记录也不太清晰不方便自己持续更新,所以采取csdn编辑,如果能顺便帮助其他和我一样的小伙伴也算是意见好事。
目前失业在家想实现一个自动化种植水培菜园,目前正在学习如何使用单片机获取环境数据

本笔记重点记录内容是各种传感器模块的使用,由于是自用不能提现得过于详尽各位看到的老哥如果觉得有优化建议欢迎评论指正。
开发板引脚示意图
放引脚图担心卖我板子的商家跑路了后面找不到了
ESP32-S3-N16R8 入手价26

ESP32-WROOM-32 引脚 入手价 15

8266引脚入手价 12.4

arduino uno 改进版 入手价 17.5


宏定义
#define 宏名称+针脚号
用法
#define LED 5
注意事项:宏定义区别主要在于宏定义程序执行时是在预处理时执行不需要占用内存空间,变量则是在编译时执行,需要占用内存空间
宏定义不需要类型申明,变量需要类型申明
常用函数:
- pinMode函数 (针脚模式)
值:INPUT输入模式、OUTPUT输出模式、INPUT_PULLU上拉电阻使之一直保持高电平
用法:
pinMode(引脚, INPUT);
- digitalWrite函数(数字信号写入)
值:HIGH高电平、LOW低电平
用法:
pinMode(引脚, OUTPUT);
digitalWrite(引脚, LOW);
注意事项:该函数必须是输出模式才生效
- digitalRead函数 (读取数字信号)
值:引脚
用法:
pinMode(引脚,INPUT);
int value = digitalRead(引脚);
注意事项:针脚模式必须设置为输入模式
- analogWrite函数(模拟信号输出)
值:引脚、脉宽信号值(0~255)
用法:
pinMode(引脚, OUTPUT);
analogWrite(引脚, 230);
注意事项:输出信号为PWM,模式必须为输出模式
- anologRead函数(模拟信号读取)
值:引脚
用法:
pinMode(引脚, INPUT);
int value = analogRead(引脚);
注意事项:模式必须设置为输入模式,返回值在0~1023之间
- delay函数(延迟)
值:数值单位(毫秒)
用法:
delay(10000);
注意事项:该函数属于阻塞延迟函数,延迟期间单片机无法执行其他指令,数值单位为毫秒
- delayMicroseconds函数
值:数值单位(微秒)
用法:
delayMicroseconds(100);
- Serial.begin(波特率设置)
值:数值
用法
Serial.begin(115200);
注意事项:波特率默认为9600
- Serial.println(打印串口监视)
值:串口变量
用法:
变量名.anologRead (引脚);
Serial.println(变量名);
注意事项:读取打印之前需要设置读取参数
继电器
描述
继电器就是一个可编程控制的开关,我们可以通过往信号线上输出高电平或者低电平来控制继电器的开合。输出高电平是,继电器常开端口关闭,常闭端口打开,输出低电平是常开端口打开,常闭端口关闭。
继电器的工作原理
继电器是一种电气控制装置,通常用于控制大功率电路的开关。其工作原理基于电磁感应和机械运动两个方面。
当继电器的输入电路(也称为控制电路)通电时,通过它的线圈会产生一个磁场。这个磁场可以吸引或释放继电器中的移动元件,如触点或臂ature。这个移动元件的运动状态将决定继电器的输出电路(也称为负载电路)是否断开或闭合。
举个例子,当一个继电器用于控制一个灯泡的电路时,输入电路将连接到一个开关或其他控制设备。在没有通电的情况下,继电器的输出电路将处于断开状态,灯泡不会发光。当输入电路通电时,继电器的线圈将产生一个磁场,使得移动元件移动并使输出电路连接,从而让电流流经灯泡并使其发光。
继电器的工作原理在电气控制系统中得到广泛应用,例如在自动化控制、电力系统保护、通信系统中等。

控制端
IN1:信号线
VCC:直流供电正极
GND:直流供电负极
开关端口
公共:无论常开模式还是常闭模式都需要连接的端口;
常开:控制端不通电的情况下,常开端口与公共端口是断开状态,通电后变成闭合状态;
常闭:控制段不通电的情况下,常闭端口与公共端口是闭合状态,通电后变成端口状态;
使用loop函数delay方法延时代码示例:

#define PUMP 4 //定义引脚
void setup() {
pinMode (PUMP,OUTPUT); //设置为输出模式
}
void loop() {
digitalWrite(PUMP,HIGH);//默认高电平开启
delay(3000);//维持时间
digitalWrite(PUMP,LOW);//保持低电平
delay(10000);//维持时间
使用中断函数定义延时

#define RELAY_PIN 15
// 初始化硬件定时器对象
hw_timer_t *timer = NULL;
void timer_interrupt() {
digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));}
void setup() {
// 配置 D15 为 GPIO 输出
pinMode(RELAY_PIN, OUTPUT);
// 初始化定时器
timer = timerBegin(0, 80, true);
// 配置定时器
timerAttachInterrupt(timer, timer_interrupt, true);
// 设置定时器模式
timerAlarmWrite(timer, 500000, true);
// 启动定时器
timerAlarmEnable(timer);
}
void loop() {
}



8714

被折叠的 条评论
为什么被折叠?



