带有自动遮阳装置 V2 的公交车站的建筑模型
组件和用品
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| | × | 6 | |
| | × | 3 | |
| | × | 1 | |
| | × | 27 | |
| | × | 2 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
关于这个项目
这是之前项目的升级(V 1.0)
与 V1.0 相比的主要变化是:
- 遮阳板的重量,这就是我们将SG99微舵机改成MG995的原因
- 我们添加了一个外部电源,以便 MG995 可以工作
- 我们尝试了两种不同的机制来扩展/收缩遮阳板。被丢弃的那个,显示在第二个视频中。我们在最后使用的一个显示在第三个中。视频。
- 修复了一种遮阳状态下的小逻辑错误(感谢 Gurneet1928)
您可以在以下链接中找到 V1.0:模型版本 1.0
视频:
电路制作
建筑模型制作
代码
代码C/C++
#include VarSpeedServo 伺服;int easternLight =0;intwesternLight =0;intrainSensed =0;int sunshadePosition =0;intrainThreshold =512;int sunshadeExpanded =120;int sunshadeContracted =60;intambientLighting =0;int turnOnLightsOn =150;int ledIntensity =0;int ledPower =0;intservoSpeed =20;bool 调试 =false; // 设置为 TRUE 以启用调试到串行 Consolevoid setup(){ pinMode(A4, OUTPUT); // 公交车站的内部照明 pinMode(A5, OUTPUT); // 路灯 pinMode(A1, INPUT); // 西灯 pinMode(A2, INPUT); // 东方之光 pinMode(A3, INPUT); // 雨量传感器模拟 pinMode(2, INPUT); // 雨量传感器数字伺服.attach(A0); //伺服servo.write(sunshadeContracted,servoSpeed,true);如果(调试){ Serial.begin(9600); Serial.println("*** 调试开始***"); Serial.println("-------------------------"); }}void oya_mydebug(String text, int value =NULL){ // 我添加了 'oya_' 作为避免崩溃的一种方式,任何可能的调试 // 外部库可能具有的功能。 Oya 是我公司 OfficeYA 名称的缩写 // if (debugging){ Serial.print(text); if (value){ Serial.print(" ="); Serial.println(值); } else { Serial.println(" "); } }}void expand_collapse(inteasternLight, intwesternLight){ if (easternLight <=westLight) { // 日出了 oya_mydebug("It's sunglasses");如果(sunshadePosition!=sunshadeExpanded){伺服.写(sunshadeExpanded,servoSpeed,真); oya_mydebug("遮阳罩展开"); } } if (easternLight> westLight) { // 下山了 oya_mydebug("Sun is goind down");如果(sunshadePosition !=sunshadeContracted){ 伺服。写(sunshadeContracted,servoSpeed,真); oya_mydebug("遮阳板收缩"); } }}void loop(){ // 获取传感器值easternLight =analogRead(A2); WesternLight =模拟读取(A1); rainSensed =模拟读取(A3); sunshadePosition =伺服.read();环境光 =((东光 + 西光) / 2); // 平均东西方亮度 oya_mydebug("easternLight",easternLight); oya_mydebug("westernLight", westLight); oya_mydebug("rainSensed",rainSensed); oya_mydebug("sunshadePosition", sunshadePosition); oya_mydebug("ambientLighting",ambientLighting); // 判断是否下雨? if (rainSensed
示意图