Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
O-Zone je svetilka Bluetooth DIY. Lahko spremenite barvo svetilke in tudi svetlost LED. Za vklop luči lahko uporabite pametni telefon, tablični računalnik, spremenite barve in razpoloženje v svoji sobi.
Materiali za izdelavo svetilke so:
1 x Light BlueBean z baterijo
1 x prstan Adapruit Neopixel (16 x LED)
Priročna aplikacija Bluetooth za iOS
Bluethooth Terminal za Android
Materiali za konstrukcijo so:
3 mm (3,1 palca) les
1,5 mm (0,05 palca) belo pleksi steklo
1. korak: Struktura kocke
Za strukturo svetilke sem oblikoval kocko. Preprosta, a linearna lesena kocka. Les sem razrezal z laserskim graverjem. Prav tako sem izrezal krog znotraj zgornje ploskve kocke. Znotraj reza sem dal bel obroč iz pleksi stekla. Pleksi steklo sem rezala z laserskim rezanjem s 40 W. Uporabite lahko belo pleksi steklo, saj ima Adafruit led prstan veliko barv. Uporabite lahko tudi prozoren Plexi, vendar menim, da je bela boljša za kakovost glajenja svetlobe.
Za rezanje konstrukcije lahko uporabite laserski rezalnik ali pa uporabite storitev laserskega rezanja, kot je Fablab, ali pa projekt pošljete na spletno storitev, kot je Shapeways.
Kose zlepimo z vinilnim lepilom. Po montaži obroč Adapruit Neopixel s obročem iz pleksi stekla. Za plastične dele lahko uporabite akrilno lepilo. Sestavite vse skupaj.
Po tem koraku je vaša struktura pripravljena!
2. korak: Programirajte udarec skozi svetlo modri fižol
Za programiranje Light BlueBean lahko uporabite Arduino IDE. Ko polnite vdelano programsko opremo na napravi Light BlueBean, morate uporabiti komunikacijo Bluetooth. Uporabite lahko Arduino IDE in ta program združite z nakladalnikom Punch Trough Light BlueBean. Za podrobnosti obiščite uradno spletno stran.
Začnite z Light BLUEBean
Za Light BlueBean lahko uporabite to kodo:
/* ******************************************
* Bluethooth svetilka z O-cono
* 31. marec 2017
* Giovanni Gentile
* za Punch Through Light BlueBean
**********************************************/
#include "Adafruit_NeoPixel.h"
// Pin, ki je povezan z NeoPixels
#define PIN 5
// Količina LED v NeoPixels
#define NUMPIXELS 16 int bright = 20; logična lumija = 1; boolean previousLumi = 1;
Ukaz niz;
boolean commandStarted = false; Piksli Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); LedReading ledColor; LedReading previousLedColor; void setup () {Serial.begin (); // Inicializiramo NeoPixels pixels.begin (); }
void loop () {
getCommand (); }
/*
Ta funkcija prebere serijska vrata in preveri začetni znak '#', če bo začetni znak, če ga najde, dodal vse prejete znake v ukazni vmesnik, dokler ne prejme ukaz za konec ';' Ko prejmete ukaz end, se pokliče funkcija commandCompleted (). če se pred končnim znakom najde drugi začetni znak, se vmesni pomnilnik počisti in postopek se začne znova. */ void getCommand () {while (Serial.available ()) {char newChar = (char) Serial.read (); if (newChar == '#') {commandStarted = true; command = "\ 0"; } else if (newChar == ';') {commandStarted = false; commandCompleted (); command = "\ 0"; } else if (commandStarted == true) {command += newChar; }}}
/*
Ta funkcija vzame dokončan ukaz in ga preveri glede na seznam razpoložljivih ukazov ter izvede ustrezno kodo. Dodajte dodatne stavke "if", če želite dodati ukaze s kodo, ki jo želite izvesti, ko prejmete ta ukaz. Priporočljivo je, da ustvarite funkcijo za ukaz, če je več kot nekaj vrstic kode za kot v primeru "off". */ void commandCompleted () {if (ukaz == "nizko") {svetel = svetel - 10; lumi = -lumi; Serijski.tisk (svetel); } if (ukaz == "visoko") {svetel = svetel + 10; lumi = -lumi; Serijski.tisk (svetel); } if (ukaz == "rdeča") {Bean.setLed (255, 0, 0); Serial.print ("LED je postala rdeča"); } if (ukaz == "zeleno") {Bean.setLed (0, 255, 0); Serial.print ("LED je postala zelena"); } if (ukaz == "blue") {Bean.setLed (0, 0, 255); Serial.print ("LED je postala modra"); } if (ukaz == "rumena") {Bean.setLed (255, 255, 0); Serial.print ("LED je postala rumena"); } if (ukaz == "oranžno") {Bean.setLed (255, 60, 0); Serial.print ("LED je postala oranžna"); } if (ukaz == "vijolično") {Bean.setLed (128, 0, 128); Serial.print ("LED je postala vijolična"); } if (ukaz == "bela") {Bean.setLed (255, 255, 255); Serial.print ("LED je postala bela"); } if (ukaz == "off") {off (); } if (Bean.getConnectionState ()) {// Pridobite vrednosti iz Beanove vgrajene LED ledColor = Bean.getLed (); } if (lumi! = previousLumi || ledColor.red! = previousLedColor.red || ledColor.green! = previousLedColor.green || ledColor.blue! = previousLedColor.blue) {for (int i = 0; i
/*
Uporabite ločeno funkcijo, kot je ta, če je kode več kot le nekaj vrstic. To bo pomagalo vzdrževati čisto kodo, ki je enostavna za branje. */ void off () {Bean.setLed (0, 0, 0); Serial.print ("LED je izklopljena"); }
3. korak: Povežite svetlo modri fižol z obročem Adapruit Neopixel
Po nalaganju vdelane programske opreme lahko uporabite Light BlueBean s pametnim telefonom. Program lahko preizkusite z uporabo rgb led na krovu. Ko lahko povežete 16x obroč Adafruit.
Bodite pozorni, VCC priključite na Light BlueBean 5v, GND na Light BlueBean GND in podatkovni zatič na obroču Adapruit Neopixel na pin 5
4. korak: aplikacija Bluetooth in zaporedna komunikacija
Koda v notranjosti Light BlueBean prejema podatke po zaporedju. Serijski niz lahko pošljete BlueBeanu s protokolom Bluetooth. Za iOS uporabljam Handy BLE. To aplikacijo lahko uporabite za pošiljanje katerega koli serijskega niza po protokolu Bluetooth. Ustvaril sem nadzorno ploščo, ki ima 6 barv kroga, 1 krog Off in dva kvadratna svetla. Kvadratni ukazi so za povečanje in zmanjšanje svetlosti obroča LED.
Serijski ukaz, ki ga sprejme BlueBean, je:
Za barvanje LED diod:
#rdeča;
#purple;
#modra;
#zelena;
#žuta;
#oranžna;
Za izklop LED diod:
#off;
Za uravnavanje svetlosti:
#nizko;
#visoko;