arduino 学习(4)
存储和无线通信(红外)
- 断电也能保存数据 —— EEPROM 类库的使用
EEPROM (Electrically Erasable Programmable Read-Only Memory)电可擦可编程只读寄存器- 类库成员函数
write()
read() - 写入操作
EEPROM只有100000次的擦写寿命,避免频繁擦写。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#include <EEPROM.h>
int addr = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int val = analogRead(0) / 4;
Serial.println(val);
EEPROM.write(addr, val);
addr = addr + 1;
if (addr == 512)
addr = 0;
delay(500);
} - 读取操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include <EEPROM.h>
int address = 0;
byte value;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
value = EEPROM.read(address);
Serial.print(address);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
address = address + 1;
if (address == 512)
address =0;
delay(500);
} - 擦除操作
即为写0 - 存储各类型数据到EEPROM
上面是把一个byte型数据存入,如果是其他类型则可以使用共用体类型结构 union。
写入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29#include <EEPROM.h>
int addr = 0;
union data {
float a;
byte b[4];
};
data c;
int led = 13;
void setup() {
// put your setup code here, to run once:
c.a = 98.132;
for (int i = 0; i < 4; i++) {
EEPROM.write(i, c.b[i]);
}
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
- 类库成员函数
读取
1 |
|
保存大量数据 —— SD卡类库的使用
SD (Secure Digital Memory Card)- 格式化SD卡
- SD卡类库成员函数
- SD卡 读/写模块
将传感器的数据记录/读出
- 创建文件
- 删除文件
6 .写文件 - 读文件
无线通信 —— 红外遥控
Arduino可使用的防线通信方式众多,ZigBee、WiFi和蓝牙等。
串口透传模块
SPI接口的无线模块,Arduino Wifi扩展板一体化红外接收头
接收红外信号并还原发射端的波形信号,通常一体化的都是在38kHz左右。红外遥控器
NEC编码
红外发光二极管
IRremote库
类库成员函数
红外接收
IRremote一直在更新,现在已经比较复杂了。
这是其中的SimpleReceiver.ino 文件
1 |
|
可以看到读出一些红外值。
6. 红外发射
1 |
|
7. 遥控家电设备
需要接受家电红外的RAW数据,并且使用红外发射器发射出去。
tips:
- 记录一下学习过程中没有的硬件
- SPI的数字电位器 AD5206 没有
- 多个串口通信需要多个Arduino
- LM35温度传感器好像坏掉了
- SD卡模块
- DGT11温湿度检测模块
- 光敏模块 目前只有一根光敏电阻
arduino 学习(4)
https://leiz-eng.github.io/2023/08/09/arduino-4/