電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Arduino Nano點(diǎn)亮骰子頭骨

使用Arduino Nano點(diǎn)亮骰子頭骨

2023-02-09 | zip | 0.06 MB | 次下載 | 免費(fèi)

資料介紹

描述

當(dāng)我們玩涉及骰子的游戲時(shí),一個(gè)或多個(gè)骰子不可避免地會(huì)在過度熱情的玩家試圖擲雙 6 后落在地板上。這個(gè)骰子頭骨解決了這個(gè)問題,并且添加了 Arduino Nano,只要檢測(cè)到擲骰子就會(huì)亮起紅色。我希望它發(fā)出一聲??“吼叫!” 聲音,但 Nano 不能真正播放音頻第 1 步:制作頭骨和電池座

頭骨是根據(jù) Windham Graves 提供的模型 3D 打印出來的。有關(guān)3D 打印頭骨所需的文件,請(qǐng)訪問 ThingIVerse.com 。請(qǐng)注意,使用標(biāo)準(zhǔn)質(zhì)量設(shè)置和 PLA 燈絲在 Creality 3 S1 打印機(jī)上打印需要 26 小時(shí)。

頭骨的背面是空心的,因此更容易在后面安裝電子設(shè)備。

可選 - 打印后,使用泡沫刷在頭骨上涂上環(huán)氧樹脂,之后可以將其扔掉。環(huán)氧樹脂干燥后,使用 Rust-oleum Ultra Matte 油漆和底漆噴涂骷髏啞光黑色。

尋找或購(gòu)買一個(gè)開/關(guān)開關(guān)。使用 Dremel 工具在頭骨右耳附近開出開/關(guān)開關(guān)的開口。暫時(shí)不要將開關(guān)放入孔中,需要先添加一些電線(更多內(nèi)容見下文)。

pYYBAGPjRMKAbEF5AAQ9YVEb-2c396.jpg
頭骨左耳附近的開/關(guān)開關(guān)位置
?

鉆開開關(guān)開口進(jìn)入頭骨的“喉嚨”,為照亮眼睛的 RGB LED 開一個(gè)口。使用與 LED 直徑大致相同的鉆頭。開關(guān)放置在頭骨的右耳上,使喉嚨相對(duì)難以接近的右側(cè)可以進(jìn)行鉆孔。喉嚨的傾斜角度使從左側(cè)鉆孔更容易,因此無需在該側(cè)的外顱骨上打孔。

在喉管的另一側(cè)為光敏電阻鉆另一個(gè)孔。當(dāng)骰子中斷從 LED 進(jìn)入光敏電阻的光時(shí),它們將被檢測(cè)到。檢測(cè)邏輯對(duì)光照水平的變化相當(dāng)敏感,所以只要在眼孔周圍揮動(dòng)你的手就足以觸發(fā)它們。光敏電阻越靠近 LED 的正對(duì)面,電路檢測(cè)骰子的能力就越好。

9V 電池座也是 3D 打印的。有關(guān)打印文件,請(qǐng)參閱ThingIVerse.com 使用了打印文件的“緊湊”版本,但頭骨中的任何一個(gè)版本都有足夠的空間。

第 2 步:構(gòu)建電路

poYBAGPjcomABaO-AACeXzzTUag631.png
?

一個(gè)小的 PCB 用于固定 Nano 和一個(gè)用于電池/開關(guān)引線的兩端連接器。

步驟 2.1:將納米、LED、光敏電阻和相關(guān)電阻焊接在一起

在將電池和開關(guān)放入頭骨之前,可以將納米、光敏電阻、常規(guī)電阻和 LED 焊接在一起。使用 PCB 上的小型兩導(dǎo)體旋入式接線柱連接到 Nano 的 Vin 和 GND 端子。該接線柱將在總裝期間派上用場(chǎng)。

步驟 2.2:將開關(guān)和 9V 電池連接器焊接在一起

開關(guān)和電池座可以與 2 英寸(5 厘米)的電線一起焊接在一起。不要將電池/開關(guān)引線擰到 PCB 上。

第 3 步:對(duì) Nano 進(jìn)行編程

使用 Arduino IDE,將以下代碼上傳到 Nano。

// Light up skull code for Arduino Nano
// (C) Copyright 2021 John Dillenburg
// john _at_ dillenburg.org
//
double avgWhenOn;
double avgWhenOff; 
long last = 0;
int lightOnLevel = 4;
long lastTrigger = 0;
long triggerCooldown = 500; // milliseconds
int detectThreshold = 10;
long recalibrateInterval = 300000; // milliseconds
long lastRecalibrate = 0;
void setup() {
 Serial.begin(115200);
 pinMode(9, OUTPUT);
 pinMode(10, OUTPUT);
 pinMode(11, OUTPUT);
 pinMode(A0, INPUT);
 calibrate();
 if (Serial) {
   Serial.print("lightOnLevel = ");
   Serial.print(lightOnLevel);
   Serial.print("   avgWhenOn = ");
   Serial.print(avgWhenOn);
   Serial.print("   avgWhenOff = ");
   Serial.println(avgWhenOff);
 }
 detectMode();
}
void calibrate() {
 lightOnLevel = 20;
 avgWhenOn = average(500, lightOnLevel);
 avgWhenOff = average(500, 0);
 while (avgWhenOff - avgWhenOn < detectThreshold && lightOnLevel < 255) {
   lightOnLevel += 16;
   avgWhenOn = average(500, lightOnLevel);
 }
 if (lightOnLevel > 255) lightOnLevel = 255;
 lastRecalibrate = millis();
}
void rgb(int r, int g, int b) {
 analogWrite(9, 255 - r);
 analogWrite(10, 255 - g);
 analogWrite(11, 255 - b);
}
void movementDetected() {
 rgb(255, 0, 0);
 delay(3000);  
}
void detectMode() {
 rgb(lightOnLevel, lightOnLevel, lightOnLevel);
}
double average(int duration, int level) {
 rgb(level, level, level);
 long start = millis();
 long count = 0;
 double sum = 0.0;
 while (millis() < start + duration) {
   sum += analogRead(A0);
   count++;
 }
 return sum / count;
}
void loop() {
 int detector = analogRead(A0);
 avgWhenOn = avgWhenOn * 0.999 + detector * 0.001;
 if (Serial && millis() > last + 1000) {
   Serial.print("detector = ");
   Serial.print(detector);
   Serial.print("  avg = ");
   Serial.println(avgWhenOn);
   last = millis();
 }
 if (detector > avgWhenOn + detectThreshold && millis() > lastTrigger + triggerCooldown) {
   if (Serial) {
     Serial.print("triggered ");
     Serial.println(detector);
   }
   movementDetected();
   lastTrigger = millis();
   detectMode();
 }
 if (millis() > lastRecalibrate + recalibrateInterval) {
   calibrate();
 }
}

該代碼使用 avgWhenOn 變量跟蹤環(huán)境 + LED 燈級(jí)別。如果陰影從連接到引腳 A0 的光敏電阻前面經(jīng)過,則從 A0 讀取的值將增加,這將觸發(fā) movementDetected() 函數(shù)。movementDetected() 函數(shù)將 LED 變?yōu)榧t色 3 秒。

avgWhenOn 變量使用無限脈沖響應(yīng)系統(tǒng)對(duì)最新的光敏電阻讀數(shù)與舊讀數(shù)進(jìn)行平均。我選擇 0.999 和 0.001 作為權(quán)重。這似乎只是對(duì)最新讀數(shù)的輕微加權(quán),但 Nano loop() 函數(shù)被調(diào)用得如此頻繁,以至于變量在一秒鐘內(nèi)穩(wěn)定到平均值。

Serial print 語(yǔ)句是可選的,其編碼方式使得在安裝后將跳過它們。

第 4 步:將它們放在一起

在頭骨的后部/底部工作,光敏電阻器被放置在喉嚨左側(cè)鉆出的孔中,并使用大量熱熔膠粘在適當(dāng)?shù)奈恢谩?

喉嚨右側(cè)的 LED 燈也是如此。

將開關(guān)和 9V 電池連接器的電線穿過開關(guān)孔。將兩條引線擰到小型 Nano PCB 上。

將 9V 電池放入電池座中,并在下面涂上熱熔膠。

PCB 本身可以塞入底部,并在纏結(jié)的電線中保持原位。

pYYBAGPjcreARtVZAAs0BOvX8OQ994.jpg
頭骨底部顯示凌亂的布線
?

打開頭骨后,它會(huì)在測(cè)量初始光照水平時(shí)閃爍白色。之后,即使是最輕微的陰影從眼前掠過,頭骨也會(huì)將 LED 燈切換為亮紅色。

享受!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)