如何快速掌握Admin.NET:企业级权限开发框架终极指南
2025/12/17 19:43:00
for(byte i=0; i<total; i++)实现重复操作LED引脚对应: LED1 → Arduino 7 LED2 → Arduino 8 LED3 → Arduino 9 所有LED阴极(短脚)通过电阻接地const byte LEDs[] = {7, 8, 9}; // 定义LED引脚数组 const byte total = 3; // LED总数 byte index = 0; // 当前点亮位置 void setup() { for(byte i = 0; i < total; i++) { pinMode(LEDs[i], OUTPUT); // 初始化所有引脚为输出模式 } } void loop() { // 熄灭所有LED for (byte i = 0; i < total; i++) { digitalWrite(LEDs[i], LOW); } // 点亮当前LED digitalWrite(LEDs[index], HIGH); // 更新位置索引 index++; if (index == total) index = 0; // 循环复位 delay(500); // 延时500ms }const byte LEDs[] = {...}定义不可修改的引脚数组byte替代int节省内存(范围0-255)for循环遍历数组元素,i ii从0到t o t a l − 1 total-1total−1index = (index + 1) % total等效于代码中的循环计数LEDs[3]将导致随机错误pinMode未设置时引脚默认为输入状态bool direction = true; // 流动方向 if(direction) index++; else index--;int speed = analogRead(A0) / 4; // 0~1023映射到0~255 delay(speed);millis()替换delay()避免程序卡顿unsigned long previousMillis = 0; if(millis() - previousMillis > interval) { // 执行操作 previousMillis = millis(); }通过本项目深刻体会数组对硬件管理的优越性:
total值思考延伸:若将流水灯原理应用于智能停车场,可用LED阵列显示车位状态(红色-占用,绿色-空闲),并实现引导流向,这正是数据结构在实际物理世界中的映射。