愤怒的煮蛋计时器

dooooit_4000007
转载
发布时间: 2025-06-20 16:41:38 | 阅读数 0收藏数 0评论数 0
封面
这个项目是一个计时器,它会从皱眉变成微笑,直到设定的时间结束,然后胜利地旋转手臂,并“拉”出糖果作为奖励。我一直喜欢用计时器和奖励来让自己专注于学习,而且比起真正的激励内容,我更受一些傻事的激励,因此我决定制作一个相当简单但有趣的装置来帮助自己保持专注。

准备工作:

材料:

所需工具和耗材 - 3D 打印机访问 - 可以个人拥有或从实验室订购

-砂纸和丙烯酸涂料(可选)

- 强力胶、热胶、E6000 或其他强力粘合剂

-钻头

-3 个小螺丝 - 确切尺寸并不重要,看看哪些螺丝能牢固地安装在 3D 打印的上壳上

-1 Arduino 微控制器

-用于将 Arduino 连接到计算机的电缆 - 如果您的开发板有 microUSB 端口,则 Android 充电器可以很好地工作

-1 个按钮

-2台SG90 9G伺服电机

-迷你面包板(越小越好)

-跳线

步进电机

-ULN2003 电机驱动模块

- 分配小糖果(Nerds 或 Pop Rocks 是理想的选择,迷你 M&M 也可以,任何更大的糖果都可能堵塞伺服器)

-薄塑料或纸板

- 两个 LED(任意颜色)和 220 欧姆电阻(可选,用于测试电路)


1

3D打印文件

打印每个文件的一份副本。

拆卸部件上的支撑时要小心,因为很容易将支撑臂从顶部折断。如果发生这种情况,可以用胶水将它们粘回去。如果支撑臂拆卸得不够整齐,你可能需要钻掉这三个孔。

需要在中壳和底壳部分添加几个孔,可以通过钻孔或修改锉刀来实现——三个用于连接底座和上壳部分的螺丝孔、一个用于安装按钮的孔以及底座边缘上的一个用于连接线缆的凹槽。螺丝孔的直径应大致与上壳壁的厚度相同,并垂直或略微向上倾斜至上壳的一半。按钮孔的大小和具体位置并不重要——它只需要足够大,以便用竹签或其他细长物体插入以按下按钮,并且位于鸡蛋背面的中间位置即可。底部凹槽的直径应与线缆的直径相同或更大。为了获得哑光、更像鸡蛋的质感,您可能需要对部件进行打磨。眼睛和嘴巴的细节也可以在上部喷漆。

STL
F370UN1JPCY6HE9.stl
101.94KB
STL
F4X0XJSJPCY6HES.stl
18.34KB
STL
FIRLXY6JPCY6HEY.stl
288.17KB
STL
F2HI33KJPCY6HF5.stl
16.20KB
STL
F9HYAOJJPCY6HFM.stl
16.20KB
STL
FFW7HWQJPCY6HFS.stl
184.95KB
2

电路组装和测试

重要提示 - 图表中存在重大错误,LED 的电源线应连接到引脚 A4 和 A5,而不是电源轨。

上面的 Fritzing 图显示了面包板的布局。如果您知道如何正确焊接此电路,当然可以,但对于低应力应用来说,这并非必需,尽管这样做可以节省空间。LED、电阻以及连接它们到引脚和地的电线仅用于测试电路,可以移除以节省空间。

引脚 5-微笑旋转伺服

引脚 4-分配器挡板伺服装置

引脚 10 11 12 13- 步进电机连接

引脚 6- 按钮正极线

引脚 A4 和 A5-LED 正极线

可以根据需要移动面包板上电源和接地连接的位置,只要有一根电线将 5V 引脚连接到正极(红色)导轨,将 GRN 引脚连接到负极(蓝色)导轨,并且每个组件都与地和电源连接即可。

由于程序问题,图中的电线都是相同的颜色,而颜色在功能上并不重要,通常使用红线表示正极,蓝线或黑线表示地线,以避免混淆。

将包含的代码上传到你的Arduino

servo.h 库是 Arduino 默认库。stepperAK.h 库已包含在上方下载,请将这些文件放入 Arduino 的“libraries”文件夹中。

为了进行测试,默认时间间隔为 18 秒。您可以轻松地在代码中更改此设置,只需将该数字换成您想要的时间(以秒为单位)。电路组装完成后,建议对其进行测试。按下按钮启动和重置计时器几次,让其到达终点,以确保步进电机和笑脸和分配器伺服器正常工作。推荐的伺服模型有时会有缺陷,并且行为不稳定,设置为完整的 180 度或 0 度,如果您有这样的伺服器,请将其用于嘴巴,这种运动不是问题,并且可以在重置前添加计时器旋转时的疯狂外观,就像我的一样。如果您将这样的伺服器用于分配器,它可能会卡在底座内部并损坏底座或伺服器。

计时器启动后,微笑伺服器应旋转 180 度,直至时间耗尽。此时步进电机将旋转两次,分配器伺服器将上下翻转一次。如果重置计时器,微笑伺服器应返回初始位置。注意循环结束时伺服器的方向,以便找到完整的微笑位置和关闭分配器的位置,这对于组装至关重要。如果您添加了测试 LED,则一个 LED 会在计时器启动时亮起,另一个会在计时器重置时亮起。

/*
Stepper.h - - Stepper library for Wiring/Arduino - Version 0.5
Original library (0.1) by Tom Igoe.
Two-wire modifications (0.2) by Sebastian Gassner
Combination version (0.3) by Tom Igoe and David Mellis
Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley
Add Half Step mode (0.5) by D Traynor
********Adapted for Arduino Kit geared stepper motor (28BYJ-48) by Rudy Schlaf 2/2014*********
********Test for other motors!****************************************************************
Drives a unipolar or bipolar stepper motor using 2 wires or 4 wires
When wiring multiple stepper motors to a microcontroller,
you quickly run out of output pins, with each motor requiring 4 connections.
By making use of the fact that at any time two of the four motor
coils are the inverse of the other two, the number of
control connections can be reduced from 4 to 2.
A slightly modified circuit around a Darlington transistor array or an L293 H-bridge
connects to only 2 microcontroler pins, inverts the signals received,
and delivers the 4 (2 plus 2 inverted ones) output signals required
for driving a stepper motor.
The sequence of for fullstep control signals for 4 control wires is as follows:
# Modified from the original 1010, 0110, 0101, 1001 - since the 28BYJ-48 motor would not reverse
Step C0 C1 C2 C3
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
# Added this 8 step sequence for halfstep control for 4 control wires as follows: (not tested for 28BYJ-48)
Step C0 C1 C2 C3
1 1 0 0 1
2 1 0 0 0
3 1 1 0 0
4 0 1 0 0
5 0 1 1 0
6 0 0 1 0
7 0 0 1 1
8 0 0 0 1
The sequence of controls signals for 2 control wires is as follows
(columns C1 and C2 from above):
Step C0 C1 (not tested for 28BYJ-48)
1 0 1
2 1 1
3 1 0
4 0 0
The circuits can be found at
http://www.arduino.cc/en/Tutorial/Stepper
*/

// ensure this library description is only included once
#ifndef StepperAK_h
#define StepperAK_h

// library interface description
class Stepper {
public:
// constructors:
// Additional parameter for the modulo count
Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2);
Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4);
// speed setter method:
void setSpeed(long whatSpeed);
// mover method:
void step(int number_of_steps);
int version(void);
private:
void stepMotor(int this_step);
int direction; // Direction of rotation
int speed; // Speed in RPMs
unsigned long step_delay; // delay between steps, in ms, based on speed
int number_of_steps; // total number of steps this motor can take
int pin_count; // whether you're driving the motor with 2 or 4 pins
int step_number; // which step the motor is on
// motor pin numbers:
int motor_pin_1;
int motor_pin_2;
int motor_pin_3;
int motor_pin_4;
// Used to indicate the number of steps in each sequence
int mod_count;
long last_step_time; // time stamp in ms of when the last step was taken
};

#endif
CPP
F6E7EC1JPCY6JAF.cpp
6.92KB
INO
FZ3FQSFJPCY6JCQ.ino
2.20KB
3

组装

您可能需要拆下电机并将其粘到位,然后参考图以正确将其放回原位。

将一小块塑料方块粘在上部外壳组件的开口端,步进电机就安装在这里。确保留出足够大的孔或缝隙,以便电线穿过。如果机壳内部有足够的空间容纳步进电机,也可以直接粘在里面,只要电机的旋转部分突出顶部即可。将另一小块塑料方块或纸板粘在臂部分的底部,然后将其粘在步进电机的旋转部分上,尽量使其居中。然后将步进电机粘在外壳顶部或附近的塑料方块上,确保臂正确对齐。

取下笑脸伺服器上的所有尖端,并将其粘到上半身内侧,使其旋转头穿过孔对齐。切掉其中一个头部的指针,使其成为一个圆环,并测试其是否能自由旋转。如果您使用提供的代码,循环结束时它将处于完整的笑脸(180度)位置。将笑脸片粘到伺服电机的尖端,使其朝向正确。

将一个单端指针连接到分配器舵机上,然后如图所示在上面粘上一小块塑料片,确保它能够完全旋转,同时基本覆盖底部的孔。用分配器舵机测试你的代码,找到它的初始位置,确保它不会卡住,然后将舵机粘好,使其在初始位置盖住孔。

将组件装入小巧的外壳与其说是一门科学,不如说是一门艺术。您可以尝试不同的布局,找到最合适的方案。在我的实验中,将 Arduino 和面包板平放并垂直放置,连接线朝下,效果最佳。移除测试 LED 可以节省空间。将机身倒置放入电子元件,借助重力,安装起来会更容易一些。确保按钮离孔足够近,以便您可以使用细长的工具(例如竹签或小螺丝刀头)够到它。将所有东西都装好后,再次测试电路,确保没有东西掉落,并且分配器伺服器能够自由移动。

此时,你需要把糖果放入身体底部。现在将小螺丝拧入相应的孔中,以固定身体的中部和底部。如果需要,你可以稍后拧下这些螺丝进行维修或更换糖果。

最后,眼钉应该能够整齐地嵌入相应的孔中,如果不够,可能需要稍微钻孔。用胶水将它们粘好,并根据需要对称或不对称地放置

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载