项目简介
本项目是一个基于Arduino的日夜灯光模拟系统,可模拟日间和夜间的时间变化,自动控制灯光的开关和亮度变化。适用于模型场景(如铁路模型)中的灯光控制,能模拟太阳光照变化,让场景更逼真。
项目的主要特性和功能
- 自动灯光控制:依据模拟时间自动控制灯光开关,支持多组灯光任务。
- 太阳光照模拟:逐步调整LED亮度,模拟太阳一天中的光照变化,支持自定义光照时间表。
- 多设备同步:借助RS485通信协议,实现多个Arduino设备的时间同步,保证模拟时间一致。
- 灵活的时间设置:用户可自定义模拟时间的步进速度,快速模拟一天的时间变化。
安装使用步骤
假设用户已下载本项目的源码文件,以下是具体操作步骤:
1. 安装库:将解压后的库文件放入Arduino IDE的libraries
文件夹中。
2. 引入库:在Arduino程序中引入库文件:
cpp
#include <Lumiere_JourNuit.h>
3. 配置灯光任务:定义灯光任务表,指定每个任务的开关时间和对应的引脚:
cpp
const struct parametres_activite liste_activites [] = {
{HM( 5, 0), 4, HIGH},
{HM( 6, 30), 4, LOW},
{HM(20, 10), 4, HIGH},
{HM(23, 12), 4, LOW}
};
const size_t nb_activites = sizeof (liste_activites) / sizeof (struct parametres_activite);
4. 配置太阳光照:定义太阳光照时间表,指定每个时间点的亮度百分比:
cpp
const struct parametres_soleil liste_parametres_soleil [] = {
{HM( 0, 0), 0},
{HM( 7, 0), 0},
{HM( 8, 0), 15},
{HM( 9, 0), 85},
{HM(13, 0), 100},
{HM(17, 0), 85},
{HM(18, 0), 15},
{HM(19, 0), 0}
};
const size_t nb_horaires_soleil = sizeof (liste_parametres_soleil) / sizeof (struct parametres_soleil);
5. 初始化对象:创建LumiereJourNuit
对象并初始化:
cpp
LumiereJourNuit lumiere_jour_nuit (liste_activites, nb_activites, liste_parametres_soleil, nb_horaires_soleil, pin_soleil);
lumiere_jour_nuit.begin(delai_boucle);
6. 编写主循环:在loop()
函数中调用loop()
和next()
方法:
cpp
void loop() {
lumiere_jour_nuit.loop();
lumiere_jour_nuit.next();
}
7. 编译上传:编译并上传程序到Arduino设备。
注意事项
- 引脚选择:确保LED引脚正确连接,太阳光照模拟需要使用支持PWM功能的引脚。
- 时间步进:通过调整
delai_boucle
参数,可控制模拟时间的步进速度。 - 多设备同步:若使用RS485通信同步时间,要确保所有设备正确连接,并配置好通信引脚。
示例
项目包含多个示例代码,涉及简单的灯光控制、太阳光照模拟以及多设备时间同步等功能。每个示例都附有详细说明和电路图,便于用户参考使用。
版权信息
本项目遵循LGPL 2.1或更高版本的开源协议。在分发或修改项目时,请保留作者名字和许可证信息。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】