Sisukord:

Nutikas interaktiivne valgusfoor: 5 sammu (piltidega)
Nutikas interaktiivne valgusfoor: 5 sammu (piltidega)

Video: Nutikas interaktiivne valgusfoor: 5 sammu (piltidega)

Video: Nutikas interaktiivne valgusfoor: 5 sammu (piltidega)
Video: Сводные таблицы Excel с нуля до профи за полчаса + Дэшборды! | 1-ое Видео курса "Сводные Таблицы" 2024, November
Anonim
Nutikas interaktiivne valgusfoor
Nutikas interaktiivne valgusfoor

Kas olete valmis ehitama maailma parimat ja interaktiivseimat valgusfoori? Hea! Selles õpetuses selgitame, kuidas saate seda Arduino abil ise ehitada.

Vajalikud komponendid:- Arduino (..duh)- LM317 Mosfet- 2x 60cm analoog-RGB LED-ribad (12V)- PVC toru (1m x 125mm)- Kaablid (punane ja must)- Metallplaadid valguskorkide jaoks- Akrüül valguse jaoks -ikoonid (kontrollige.svg ikoone aadressilt flaticon.com)- Spraycani mustvalge värv.- Elektrilint- Kõik vajalikud jootekomponendid- Ekraan koos vajaliku varjestusega (ei kasutata õpetuses)

1. samm: 1. samm: tehke valguskatted

Samm: valmistage valguskübarad
Samm: valmistage valguskübarad

Disain on tõesti teie otsustada. Valgustite hoidmiseks oleme teinud 15x15 cm korgi. Lõikasime metallplaadid õige suurusega ja kasutasime korkide painutamiseks õige kujuga metallist painutajat (ei, mitte Avatarilt). Tagaplaadid on valmistatud teisest komponendist.

2. samm: 2. samm: PVC -pooluse ettevalmistamine

2. samm: PVC -pooluse ettevalmistamine
2. samm: PVC -pooluse ettevalmistamine

Lõika PVC-varrasse 2 auku, et need sobiksid valguskaantega. Seejärel kasutage musta värvi pihustit, et värvida kogu asi mustaks. Soovi korral võite varda põhjale lisada valgeid triipe (levinud Hollandis).

3. samm: 3. samm: RGB LED -ribade kokkupanek ja akrüülplaatide liivapritsimine

Samm: RGB LED -ribade kokkupanek ja akrüülplaatide liivapritsimine
Samm: RGB LED -ribade kokkupanek ja akrüülplaatide liivapritsimine
Samm: RGB LED -ribade kokkupanek ja akrüülplaatide liivapritsimine
Samm: RGB LED -ribade kokkupanek ja akrüülplaatide liivapritsimine

Järgmisena peate valguskatte sisse kokku panema RGB LED-ribad. Paigaldage need tihedalt korgi ümber ja asetage need esiküljele võimalikult lähedale.

Järgmisena peate akrüülplaadil valitud sümboli liivapritsiga lihvima. Hankige lint ja katke kogu akrüülplaat. Seejärel lõigake soovitud kuju/kujund välja. Pärast seda saate plaadi liivapritsiga, et saada mattklaasitaoline efekt.

Samm: ühendage RGB LED -ribad Arduinoga

Samm: ühendage RGB LED -ribad Arduinoga
Samm: ühendage RGB LED -ribad Arduinoga

Nüüd tuleb keeruline osa: RGB LED -ribade ühendamine Arduinoga. Tihvtide ühendamisel veenduge, et panete riba 12v 12v peale. Iga värvi, nii punase või rohelise, vahele peate panema mosfeti. Ühendage LED -riba andmed mosfeti keskmise tihvtiga ja vasak tihvt oma Arduinoga. Õige tihvt peab minema tagasi Arduino maapinnale.

Samm: kirjutage Arduino kood

Samm: kirjutage Arduino kood
Samm: kirjutage Arduino kood

Seda Arduino koodi juhib bluetooth, sest me ei kasutanud sisemist ekraani. Seega juhitakse koodi bluetooth sõnumite kaudu loop () funktsioonis.

#defineeri r 6 #defineeri g 11 #kaas

SoftwareSerial mySerial (10, 11); // RX, TX

#määratle vihanePikkus 4

#define kukkumineLength 3 #define happyLength 4 #define onPhoneLength 13 #define rääkiminePikkus 5 #define walkingPikkus 4 #define walkingOutLength 4 #define wavingLength 6

bool nupp Vajutatud;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = vale; bool animation3Done = vale; bool animation4Done = vale; bool animation5Done = vale;

bool blockLight = vale;

bool lightRed = tõsi;

int currentAnimationDelay;

tühine seadistus () {

// pange oma seadistuskood siia, et üks kord käivitada: pinMode (r, OUTPUT); pinMode (g, VÄLJUND);

Seriaalne algus (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = vale; currentMillis = 0; previousMillis = 0;

animation1Delay = kõndiminePikkus * 1000;

animation2Delay = lainepikkus * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = tõsi; }

void loop () {

// viivitus (20);

// pane siia oma põhikood, et korduvalt käituda: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = tõsi; }} else if (animation2Done == false ja animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = tõsi; }} else if (animation3Done == false ja animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = currentMillis; animation3Done = tõsi; lightRed = vale; }} else if (animation4Done == false ja animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = tõsi; Serial.println ("FLSH"); }}}

kui (Serial.available ()) {

String str = Serial.readString (); kui (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

animation2Done = vale; animation3Done = vale; animation4Done = vale; animation5Done = vale;

animation1Delay = kõndiminePikkus * 1000;

animation2Delay = lainepikkus * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = tõsi; Serial.println ("3"); buttonPressed = tõsi; previousMillis = currentMillis; }

kui (str == "RED") {

blockLight = vale; lightRed = tõsi; }

kui (str == "GREEN") {

blockLight = vale; lightRed = vale; }

kui (str == "LIGHT: GREEN: OFF") {

blockLight = tõsi; analogWrite (g, 255); } kui (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } //Seriaalne.println(str); }

if (blockLight == false) {

kui (helepunane == tõene) {

analogWrite (r, 0); analogWrite (g, 255); } if (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Soovitan: