一、设计背景
“没有……”,从小这首歌就经常在我们耳边回荡,爸爸妈妈告诉我,我们今天的幸福生活是我们的先烈用鲜血换来的,作为新一代的少先队员,中华民族的炎黄子孙,我们是建设祖国的接班人。为纪念建党100周年,我设计制作了“智慧笔筒”,以此传承红船精神,献礼建党百年。
二、功能原理
通过老师的指导,我利用3D软件建模后打印出实物模型,再使用开源硬件和Mind+编写简单的程序实现笔筒的智慧功能。
1.当我们在写作业时,头离书本太近时,超声波传感器就会检测到,然后亮红灯提醒我们,连续达到三次太近时,还会增加声音提醒。
2.当我们做作业达到30分钟后,我们笔筒上的红船模型就会开动。提醒我们要休息一会了,从而保护好视力。
最后希望通过我制作的作品,让更多的同学关注科学,学习科学技术,把我们的祖国建设的更加强大。
三、结构设计
四、制作过程
材料清单
- DFRduino UNO X1
- 超声波传感器 X1
- 9G舵机 X1
- 蜂鸣器 X1
- LED发光二极管 X1
- 连接线 X1
步骤1 使用3D软件建模
笔筒主体
红船模型
超声波装饰框
步骤2 使用3D打印机打印模型
步骤3 丙烯颜料美化装饰
步骤4 硬件连接及组装
步骤5 使用Mind+软件编写程序
五、作品图片
代码
六、编程代码
代码
/*!
* MindPlus
* uno
*
*/
#include <DFRobot_Servo.h>
#include <DFRobot_URM10.h>
#include <DFRobot_Libraries.h>
// 动态变量
volatile float mind_n_my_float_variable, mind_n_jishi1, mind_n_jishi2;
// 创建对象
Servo servo_11;
DFRobot_URM10 urm10;
DFRobot_Tone DFTone;
// 主程序开始
void setup() {
servo_11.attach(11);
mind_n_my_float_variable = 0;
servo_11.angle(abs(90));
mind_n_jishi1 = millis();
}
void loop() {
mind_n_jishi2 = millis();
if (((urm10.getDistanceCM(2, 3))<=26)) {
digitalWrite(13, HIGH);
delay(1000);
mind_n_my_float_variable += 1;
if ((mind_n_my_float_variable==3)) {
DFTone.play(12, 262, 1000);
delay(1000);
mind_n_my_float_variable = 0;
}
}
else {
digitalWrite(13, LOW);
}
if (((mind_n_jishi2 - mind_n_jishi1)>1800000)) {
for (int index = 0; index < 3; index++) {
servo_11.angle(abs(85));
delay(1000);
servo_11.angle(abs(95));
delay(1000);
}
mind_n_jishi1 = mind_n_jishi2;
}
}
七、功能演示
糖醋花生2022.07.02
有呀 在这里,给你复制好了 /*! * MindPlus * uno * */ #include <DFRobot_Servo.h> #include <DFRobot_URM10.h> #include <DFRobot_Libraries.h> // 动态变量 volatile float mind_n_my_float_variable, mind_n_jishi1, mind_n_jishi2; // 创建对象 Servo servo_11; DFRobot_URM10 urm10; DFRobot_Tone DFTone; // 主程序开始 void setup() { servo_11.attach(11); mind_n_my_float_variable = 0; servo_11.angle(abs(90)); mind_n_jishi1 = millis(); } void loop() { mind_n_jishi2 = millis(); if (((urm10.getDistanceCM(2, 3))<=26)) { digitalWrite(13, HIGH); delay(1000); mind_n_my_float_variable += 1; if ((mind_n_my_float_variable==3)) { DFTone.play(12, 262, 1000); delay(1000); mind_n_my_float_variable = 0; } } else { digitalWrite(13, LOW); } if (((mind_n_jishi2 - mind_n_jishi1)>1800000)) { for (int index = 0; index < 3; index++) { servo_11.angle(abs(85)); delay(1000); servo_11.angle(abs(95)); delay(1000); } mind_n_jishi1 = mind_n_jishi2; } }
rzqWxyp6eBpn2022.02.13
有源代码嘛?