Circuito.io 为圣帕特里克节提供的 Chug Meter
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
|
关于这个项目
构思
让我们一劳永逸地解决 - 谁是他们中跑得最快的人?
圣帕特里克节到了,这给了我们一个在工作中喝啤酒的好借口!为了这个节日,我们为您提供:The Chug 仪表 .现在我们可以一劳永逸地解决了——谁是他们中最快的笨蛋?
*肆无忌惮地喝酒*
首先,我们建议您之后开始饮用 你做柜台。这似乎很明显,但我们只是在这里确定。
如何组装电路
我们在这里对你很轻松。电路很简单:
- FSR (力敏电阻)
- 按钮
- 压电扬声器
- 7段显示
魔术链接 会将您重定向到 circuito.io,您将在其中找到预选的组件。
修改
与往常一样,您可以更换电子设备。这里只是几个例子:
- 用液晶屏代替7段
- 用 IR 二极管代替 FSR
- 在电路中添加一个 RGB LED
基本上是疯狂的 - 这是圣帕特里克节!
点击生成后 查看回复的 3 个部分:BoM , 分步接线指南 和代码 .请仔细按照说明进行操作,如果您需要任何帮助,请在下方评论告诉我们。
后续步骤
一切就绪并运行后,您需要:
- 用本教程中随附的代码替换您在 circuito.io 回复中获得的示例代码 .复制代码并将其粘贴到固件 来自 circuito.io 的示例代码的选项卡。这样,所有的组件库都将保持原样,只有主要功能会发生变化。
- 粘贴 FSR (力敏电阻)啤酒杯垫下。一旦力被释放(=品脱被提升),计数器开始运行。当一品脱被放回杯垫上时 - 计时器停止,您可以使用按钮将其重置。
- 3D 打印 7 段式外壳。
- 开始喝酒。
快乐圣帕特里克节!负责任地喝酒!
代码
- Chug Meter 代码
Chug Meter 代码Arduino
将您从 circuito.io 获得的代码中的设置和循环功能替换为以下代码int start_flag =0;bool glassState =0;long finalTime, time0;int timer;/* 此代码设置你的电路工作。每次您的电路通电时,它首先运行。 */void setup() { // 用于调试的设置串行 // 使用串行监视器查看打印的消息 Serial.begin(9600); Serial.println("开始"); pushButton.init(); s7s.clearDisplay(); // 清除显示,重置光标 s7s.setBrightness(255); // 高亮度 s7s.setDecimals(0b00010000); // 设置冒号和撇号,参考 .cpp 文件 s7s.writeInt(0);}/* 这段代码是你电路的主要逻辑。它定义了您选择的组件之间的交互。设置后,它一遍又一遍地运行,在一个永恒的循环中。 */void loop() { // 读取 FSR 电阻值。也尝试 fsr.getResistance() // 有关更多信息,请参阅 Sparkfun 网站 - www.sparkfun.com/products/9375 // 注意,FSR 计算的默认 Vcc 和外部电阻值为 5V 和 3300Okm,如果您不是 //在电路中使用这些默认值转到 FSR.cpp 并更改 FSR 构造函数中的默认值 float fsrForce =fsr.getForce(); //Serial.print(F(" Force:"));串行打印(fsrForce); Serial.println(F(" [g]")); //读取按钮状态。 //如果按钮未被按下,函数将返回低(0)。如果它被推动功能将返回高(1)。 //如果 debounce 不能正常工作,请尝试更改 Button.h 中的“debounceDelay”变量 //也尝试 pushButton.onPress()、.onRelease() 和 .onChange() 以进行 debounce。 bool pushButtonVal =pushButton.onPress(); //Serial.print(F("Val:")); Serial.println(pushButtonVal); //使用按钮重置时间 if (pushButtonVal ==1) { start_flag =0;玻璃状态 =0; //启动定时器 s7s.writeInt(0);时间 0 =毫秒(); } //设置时间状态 if (start_flag ==0) { //如果放置玻璃 if (fsrForce> 50) { glassState =1; //启动定时器 s7s.writeInt(0);时间 0 =毫秒(); } //如果玻璃被捡起 else if (fsrForce <50 &&glassState) { finalTime =millis() - time0;开始标志 =1; } } //玻璃被捡起,运行计时器 else if (start_flag ==1) { //当你喝酒时,在 7 段显示器上显示时间 if (fsrForce <100) { finalTime =(millis() - 时间 0) / 10; s7s.writeInt(finalTime); } //喝完,停止定时器,打印最后的时间,播放万岁的声音 else { start_flag =2; finalTime =(millis() - time0) / 10; s7s.writeInt(finalTime); piezoSpeaker.playMelody(piezoSpeakerHoorayLength, piezoSpeakerHoorayMelody, piezoSpeakerHoorayNoteDurations);延迟(500); } } //始终打印最后一次直到按下重置按钮 else { s7s.writeInt(finalTime); }}
制造工艺