本帖最后由 SimpleChen 于 2024-10-7 12:11 编辑
所需器材:(将文字拷贝至创客商城即可找到,文末附有网页)
- DFRduino UNO R3(含USB线|传感器扩展板)*1
- Gravity: 数字食人鱼红色LED发光模块(Arduino兼容)*2
- Gravity: 数字食人鱼黄色LED发光模块(Arduino兼容)*2
- Gravity: 数字食人鱼绿色LED发光模块(Arduino兼容)*2
- Gravity: 数字大按钮模块 黄色*1
- Gravity: 数字蜂鸣器模块(Arduino兼容)*1
接线图:(为了使图片更加简洁,本图舍去了VCC和GND线的连接,并且本图中所有连线相交处均不连接,接线图在文末)
上传模式ArduinoC代码:(Mind+程序在文末)
- /*!
- * MindPlus
- * uno
- *
- */
-
- // 动态变量
- volatile float mind_n_switchValue;
- // 函数声明
- void DF_alarm();
-
-
- // 主程序开始
- void setup() {
-
- }
- void loop() {
- mind_n_switchValue = digitalRead(2);
- if ((mind_n_switchValue==1)) {
- digitalWrite(6, HIGH);
- digitalWrite(5, LOW);
- digitalWrite(4, LOW);
- digitalWrite(11, LOW);
- digitalWrite(9, HIGH);
- }
- else {
- digitalWrite(6, LOW);
- digitalWrite(5, HIGH);
- delay(1000);
- digitalWrite(5, LOW);
- digitalWrite(4, HIGH);
- digitalWrite(9, LOW);
- digitalWrite(11, HIGH);
- delay(5000);
- for (int index = 0; index < 10; index++) {
- digitalWrite(11, HIGH);
- DF_alarm();
- digitalWrite(11, LOW);
- DF_alarm();
- }
- }
- }
-
-
- // 自定义函数
- void DF_alarm() {
- for (int index = 0; index < 50; index++) {
- digitalWrite(12, HIGH);
- delay(1);
- digitalWrite(12, LOW);
- delay(1);
- }
- }
复制代码
Python模式代码:(Mind+程序在文末)- # -*- coding: UTF-8 -*-
-
- # MindPlus
- # Python
- import time
- from pinpong.board import Pin
- from pinpong.board import Board
-
- # 自定义函数
- def alarm():
- for i in range(1, 50, 1):
- buzzerPin.write_digital(1)
- time.sleep(0.001)
- buzzerPin.write_digital(0)
- time.sleep(0.001)
-
-
- Board("uno").begin()
- global greenLedPin1
- greenLedPin1 = 6
- global yellowLedPin1
- yellowLedPin1 = 5
- global redLedPin1
- redLedPin1 = 4
- global greenLedPin2
- greenLedPin2 = 11
- global redLedPin2
- redLedPin2 = 9
- global switchPin
- switchPin = 2
- global buzzerPin
- buzzerPin = 12
- global switchValue
- switchValue = 0
- greenLedPin1 = Pin(greenLedPin1, Pin.OUT)
- yellowLedPin1 = Pin(yellowLedPin1, Pin.OUT)
- redLedPin1 = Pin(redLedPin1, Pin.OUT)
- greenLedPin2 = Pin(greenLedPin2, Pin.OUT)
- redLedPin2 = Pin(redLedPin2, Pin.OUT)
- buzzerPin = Pin(buzzerPin, Pin.OUT)
- switchPin = Pin(switchPin, Pin.IN)
-
- while True:
- switchValue = switchPin.read_digital()
- if (switchValue == 1):
- greenLedPin1.write_digital(1)
- yellowLedPin1.write_digital(0)
- redLedPin1.write_digital(0)
- greenLedPin2.write_digital(0)
- redLedPin2.write_digital(1)
- else:
- greenLedPin1.write_digital(0)
- yellowLedPin1.write_digital(1)
- time.sleep(1)
- yellowLedPin1.write_digital(0)
- redLedPin1.write_digital(1)
- redLedPin2.write_digital(0)
- greenLedPin2.write_digital(1)
- time.sleep(5)
- for i in range(1, 10, 1):
- greenLedPin2.write_digital(1)
- alarm()
- greenLedPin2.write_digital(0)
- alarm()
复制代码
运行效果:
上传程序后,主路的绿色LED灯和人行道的红色LED灯亮,当按键按下后,主路绿灯灭,黄灯亮,延时一段时间后,主路红灯亮,人行道红灯灭,绿灯亮,再延时一段时间,人行道绿灯闪烁,蜂鸣器发声,然后恢复到主路通行状态绿灯亮。
|