通過使用Arduino、加速度計和LED制作時間手套,通過傾斜雙手,使其看起來像是在時間上靜止,并在時間前后進(jìn)行移動。
通過以特定頻率閃爍LED來創(chuàng)建一種幻覺。計劃將時間段設(shè)置為等于重復(fù)自身的時間段。如,在使用風(fēng)扇的情況下,只要葉片到達(dá)特定位置,我們就會閃爍此燈。就像拍攝對象的時間點快照一樣。如果頻率等于旋轉(zhuǎn)風(fēng)扇的頻率,我們將看到風(fēng)扇靜止不動,并感覺到它被及時凍結(jié)了。如果頻率高一點,我們會感覺風(fēng)扇向后旋轉(zhuǎn)。如果頻率稍低,我們會感覺風(fēng)扇在向前旋轉(zhuǎn)。您所要做的就是調(diào)整物體頻率的頻率閃爍LED。
所需組件:
Arduino
加速度計
光源–嘗試使用5V LED和Neopixel 環(huán)
9V電池
一、步驟:
1、連接9V電池或DC電源適配器。此電壓輸入連接到7805穩(wěn)壓器,該穩(wěn)壓器會將未穩(wěn)壓的7到32V的DC電壓轉(zhuǎn)換為5V的DC電源。然后將這5 V電源連接到Arduino和指示燈LED以及加速度計。
二、PCB布局、焊接
三、編碼
1、Arduino LED項目的代碼。先調(diào)用運行代碼所需的庫和頭文件。由于使用的是neo pixel庫,因此必須包括其頭文件,引腳配置以及用于控制neopixel環(huán)的庫。
#include 《Adafruit_NeoPixel.h》
#ifdef __AVR__
#include 《avr/power.h》
#endif
#define PIN 9
#define NUMPIXELS 16
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int x,y,ontime,offtime;
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
Serial.begin(9600);
lightnormal(); // 打開燈5分鐘,然后開始閃爍
delay(5000);
}
void loop() {
y=map(analogRead(A1), 250, 410, 10, 100);
Serial.print(“Y = ”);
Serial.println(y);
ontime = y/128;
offtime = y;
lightup();
}
void lightup()
{
pixels.clear();
pixels.show();
delay(offtime);
pixels.fill(pixels.Color(255, 255, 255), 0, 15);
pixels.show();
delay(ontime);
/* // 連接到D9的LED代碼(如果您不使用Neopix環(huán))
digitalWrite(D9, HIGH);
delay(ontime);
digitalWrite(D9, LOW);
delay(offtime);
*/
}
void lightnormal()
{
pixels.fill(pixels.Color(120, 120, 120), 0, 15);
pixels.show();
/* // 連接到D9的LED代碼(如果您不使用Neopix環(huán))
digitalWrite(D9, LOW);
*/
}
(不使用Neopixel LED環(huán)并與普通LED一起使用,則無需使用任何這些代碼)
2、帶LED的Arduino項目–代碼說明
聲明4個變量X,Y,ON時間和OFF時間,在設(shè)置功能中,將初始化neopixel振鈴,開始串行通信并打開LED或振鈴5秒鐘,然后開始閃爍。
void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
Serial.begin(9600);
lightnormal(); // 打開燈5分鐘,然后開始閃爍
delay(5000);
}
在循環(huán)中,該功能將獲取連接加速度計輸出的引腳A1的模擬讀數(shù)(其值在250到410之間變化),并將其映射到10到100之間的值。
y=map(analogRead(A1), 250, 410, 10, 100);
然后將該值除以128,然后按時存儲在變量中,將值y保存在時間變量中。
ontime = y/128;
offtime = y;
打開和關(guān)閉neopixel環(huán)上的LED,其開啟時間和關(guān)閉時間的值與關(guān)閉延遲相同。
在點亮功能中,將打開環(huán)網(wǎng)中的所有LED并等待一段時間(通常為幾毫秒)。之后,它將清除所有LED并等待一段時間。這整個過程一次又一次地重復(fù)。
void lightup()
{
pixels.clear();
pixels.show();
delay(offtime);
pixels.fill(pixels.Color(255, 255, 255), 0, 15);
pixels.show();
delay(ontime);
/* // 連接到D9的LED代碼(如果您不使用Neopix環(huán))
digitalWrite(D9, HIGH);
delay(ontime);
digitalWrite(D9, LOW);
delay(offtime);
*/
}
唯一改變的是接通時間和斷開時間,它們與加速度計的Y輸出值成正比。這就是通過傾斜手來改變閃爍頻率的方式。
正常照明功能將打開新像素環(huán)的所有LED。
3、Arduino LED項目的編碼技巧
如果使用的是LED而不是新像素環(huán),則可以使用這些代碼代替此新像素代碼。
在本節(jié)中,僅需進(jìn)行調(diào)整。
y=map(analogRead(A1), 250, 410, 10, 100);
可以使用這些值,一旦知道正確的頻率,就可以微調(diào)和調(diào)整這些值。首先,將打開時間和關(guān)閉時間設(shè)置為y。但經(jīng)過如此多的試驗,發(fā)現(xiàn)最好將導(dǎo)通時間的值設(shè)置得盡可能低。將其設(shè)置為與時間相比較低的值將獲得更清晰的圖像。這就是LED燈Arduino項目的代碼。
四、上傳代碼
選擇正確的端口和板,上傳代碼。
五、組裝
將所有東西連接到手套了??梢允褂媚z槍將neopixel環(huán)固定在手套的手掌中,并將板子和電池固定在手套的背面。
責(zé)任編輯:pj
-
led
+關(guān)注
關(guān)注
242文章
23355瀏覽量
663192 -
穩(wěn)壓器
+關(guān)注
關(guān)注
24文章
4257瀏覽量
94182 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187819
發(fā)布評論請先 登錄
相關(guān)推薦
2476-100加速度計
2460-010加速度計
2422H-400加速度計
2227-050加速度計模塊
1410L-100加速度計
1527J-010加速度計
1521L-200加速度計
設(shè)計具有成本效益的加速度計
選擇一個加速度計的技巧
![選擇一個<b class='flag-5'>加速度計</b>的技巧](https://file.elecfans.com/web2/M00/49/C5/pYYBAGKhvFyAUT62AAANF7Zp6e0705.jpg)
MEMS加速度計的概念,MEMS加速度計的原理
微加速度計的原理與應(yīng)用
![微<b class='flag-5'>加速度計</b>的原理與應(yīng)用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
什么是防水加速度計
![什么是防水<b class='flag-5'>加速度計</b>](https://file.elecfans.com/web2/M00/A1/F8/poYBAGRKH1mASAT2AAErMViUUhc252.png)
評論