亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

智能公交站台建筑模型:自动遮阳棚系统

组件与物料

组件 说明 数量
Arduino Nano R3 体积小,易隐藏于建筑模型内 1
MG995 大扭矩舵机 驱动较重遮阳棚,替代 SG90 1
光敏电阻 一只朝东、一只朝西,检测光照方向 2
雨滴传感器 检测降雨 1
高亮白光 LED 站台照明与路灯模拟 6
220Ω 电阻 LED 限流 3
面包板 原型搭建 1
公对公杜邦线 连接元件 27
螺丝端子 外部供电接入 2
9V 电池扣 逻辑电源 2
9V 电池 逻辑电源 1
4×AA 电池盒 舵机大电流供电 1

项目简介

这是 V1.0 版本的升级:原版链接

主要改进:

视频资料

核心代码

The Code (C/C++)

#include <VarSpeedServo.h>
VarSpeedServo servo;

int easternLight = 0;      // 东侧光照
int westernLight = 0;      // 西侧光照
int rainSensed = 0;        // 雨滴检测
int sunshadePosition = 0;  // 遮阳棚当前位置
int rainThreshold = 512;   // 雨滴阈值
int sunshadeExpanded = 120;   // 展开角度
int sunshadeContracted = 60;  // 收缩角度
int ambientLighting = 0;   // 环境光平均值
int turnOnLightsOn = 150;  // 开灯阈值
int ledIntensity = 0;
int ledPower = 0;
int servoSpeed = 20;       // 舵机转动速度
bool debugging = false;    // 调试模式

void setup() {
  pinMode(A4, OUTPUT); // 站台内部照明
  pinMode(A5, OUTPUT); // 路灯
  pinMode(A1, INPUT);  // 西侧光敏
  pinMode(A2, INPUT);  // 东侧光敏
  pinMode(A3, INPUT);  // 雨滴传感器模拟量
  pinMode(2, INPUT);   // 雨滴传感器数字量
  servo.attach(A0);
  servo.write(sunshadeContracted, servoSpeed, true); // 初始收缩
  if (debugging) {
    Serial.begin(9600);
    Serial.println("*** DEBUGGING STARTED ***");
    Serial.println("-------------------------");
  }
}

void oya_mydebug(String text, int value = NULL) {
  if (debugging) {
    Serial.print(text);
    if (value) { Serial.print(" = "); Serial.println(value); }
    else { Serial.println(" "); }
  }
}

void expand_collapse(int easternLight, int westernLight) {
  if (easternLight <= westernLight) { // 日出:东侧光强或持平
    oya_mydebug("It's sunrise");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  }
  if (easternLight > westernLight) { // 日落:西侧光强
    oya_mydebug("Sun is going down");
    if (sunshadePosition != sunshadeContracted) {
      servo.write(sunshadeContracted, servoSpeed, true);
      oya_mydebug("Sunshade contracted");
    }
  }
}

void loop() {
  // 读取传感器
  easternLight = analogRead(A2);
  westernLight = analogRead(A1);
  rainSensed = analogRead(A3);
  sunshadePosition = servo.read();
  ambientLighting = (easternLight + westernLight) / 2;
  
  oya_mydebug("easternLight", easternLight);
  oya_mydebug("westernLight", westernLight);
  oya_mydebug("rainSensed", rainSensed);
  oya_mydebug("sunshadePosition", sunshadePosition);
  oya_mydebug("ambientLighting", ambientLighting);
  
  // 降雨判断:模拟值越小雨越大
  if (rainSensed < rainThreshold) {
    oya_mydebug("It's raining...");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  } else {
    oya_mydebug("It is not raining...");
    if (ambientLighting <= turnOnLightsOn) { // 天黑开灯
      oya_mydebug("It's getting dark, turning on the lights");
      ledPower = (turnOnLightsOn - ambientLighting) * 4;
      oya_mydebug("ledPower", ledPower);
      analogWrite(A5, ledPower);
      analogWrite(A4, ledPower);
      expand_collapse(easternLight, westernLight);
    } else { // 白天关灯
      oya_mydebug("A lot of sunshine, turn off lights");
      analogWrite(A5, 0);
      analogWrite(A4, 0);
      expand_collapse(easternLight, westernLight);
    }
  }
  
  if (debugging) {
    Serial.println("********************");
    Serial.println(" ");
    delay(5000);
  } else {
    delay(100);
  }
}

原理图

智能公交站台建筑模型:自动遮阳棚系统

制造工艺

  1. 莱昂内尔模型火车:历史、制造与未来
  2. 基于 Google Coral Edge TPU 的垃圾分类机器人
  3. Arduino自动列车控制器 – 可编程调度/加减速/双向运行
  4. 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
  5. Arduino 自动浇水系统:定时 + 土壤湿度双模式,轻松养护盆栽
  6. Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
  7. 伺服压力机核心解析:动力、精度与效率的完美平衡
  8. 伺服电机深度解析:工作原理、分类与核心价值
  9. 齿轮箱与伺服电机完美搭配:精准运动控制的黄金法则
  10. ECS G86带主轴停止镗削循环
  11. SPRINT 20线性车床:高精度零件的快速自动化车削
  12. 智能耗材服务:机器制造商未来五年营收20%增长的新引擎