littlebot
Published on 2025-04-11 / 3 Visits
0

【源码】基于Arduino的日夜灯光模拟系统

项目简介

本项目是一个基于Arduino的日夜灯光模拟系统,可模拟日间和夜间的时间变化,自动控制灯光的开关和亮度变化。适用于模型场景(如铁路模型)中的灯光控制,能模拟太阳光照变化,让场景更逼真。

项目的主要特性和功能

  1. 自动灯光控制:依据模拟时间自动控制灯光开关,支持多组灯光任务。
  2. 太阳光照模拟:逐步调整LED亮度,模拟太阳一天中的光照变化,支持自定义光照时间表。
  3. 多设备同步:借助RS485通信协议,实现多个Arduino设备的时间同步,保证模拟时间一致。
  4. 灵活的时间设置:用户可自定义模拟时间的步进速度,快速模拟一天的时间变化。

安装使用步骤

假设用户已下载本项目的源码文件,以下是具体操作步骤: 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设备。

注意事项

  1. 引脚选择:确保LED引脚正确连接,太阳光照模拟需要使用支持PWM功能的引脚。
  2. 时间步进:通过调整delai_boucle参数,可控制模拟时间的步进速度。
  3. 多设备同步:若使用RS485通信同步时间,要确保所有设备正确连接,并配置好通信引脚。

示例

项目包含多个示例代码,涉及简单的灯光控制、太阳光照模拟以及多设备时间同步等功能。每个示例都附有详细说明和电路图,便于用户参考使用。

版权信息

本项目遵循LGPL 2.1或更高版本的开源协议。在分发或修改项目时,请保留作者名字和许可证信息。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】