Tartalomjegyzék:

ColorCube: 7 lépés (képekkel)
ColorCube: 7 lépés (képekkel)

Videó: ColorCube: 7 lépés (képekkel)

Videó: ColorCube: 7 lépés (képekkel)
Videó: Таблица умножения больше не нужна / Умножение любых чисел без калькулятора @arinablog 2024, December
Anonim
Image
Image
ColorCube
ColorCube
ColorCube
ColorCube

Ezt a lámpát az unokámnak készítettem, amikor színeket tanult. Engem a MagicCube projekt inspirált, de végül minden részt a semmiből hoztam létre. Könnyű nyomtatni és összeszerelni, és megismerheti a giroszkóp modul működését.

1. lépés: Anyagok

Anyagok
Anyagok

Arduino rész:

  • Arduino Nano (jobb forrasztópáka nélkül)
  • MPU-6050 3 tengelyes giroszkóp modul
  • TP4056 Micro USB akkumulátor töltő modul
  • MT3608 Step Up Power Booster modul
  • LiPo akkumulátor 902936 900mA vagy 503035 3,7V 500mA. Bármilyen LiPo akkumulátort használhat, 3, 7 V -os és 35x30x15 mm -nél kisebb méretben, de rögzítenie kell az akkumulátort a lyukba.
  • A PS-22F28 önzáró gomb vagy a PS-22F27 önzáró gomb tökéletesen illeszkedik a nyomtatott részhez.
  • LED RGB WS2812B gyűrű - 16 LED 68 mm külső átmérő - bármilyen gyűrűt használhat akár különböző számú LED -del (egy konstansot kell megváltoztatni a kódban - #define NUMPIXELS 16), maximális átmérője 76 mm (Neopixel botot is használhat 8x LED vagy bármely LED szalag WS2812b -vel).

Példák gyűrűkre: 8 LED 32mm12 LED 38mm12 LED 50mm16 LED 60mm24 LED 66 mm16 LED 44mm

A montázshoz a középső részen nyomtatott lyukak bármelyikét használhatja. Szinte minden lehetőséget lefednek (nem szükséges, hogy a gyűrű 100% -ban középre legyen állítva).

Vezetékek

Kocka

  • PLA szál a kocka felső részéhez - használjon fehér színt, mert az átlátszó nem jó (a LED -ek láthatók és a szín nem egyenletes), az én javaslatom a Prusament Vanilla White
  • PLA szál az alsó, középső és gombos részekhez - sötét színt használjon, mert egyes Arduino modulok tetején fények vannak, és nem illeszkedik a kocka LED -ek színéhez, az én javaslatom a Prusament Galaxy Black
  • 1x M3x5 önmetsző csavar - A hossz (10 mm) és a fej alakja nem kritikus - a csavar nem látható
  • 2x M2x3 önmetsző csavar - A hossz (5 mm) és a fej alakja nem kritikus - a csavarok nem láthatók

Eszközök

  • 3d nyomtató
  • Többméteres
  • Forrasztópáka
  • Csavarhúzó

2. lépés: Nyomtatás

Nyomtatás
Nyomtatás
Nyomtatás
Nyomtatás

A ColorCube minden részét az Autodesk Fusion360 -ban tervezték. f3d fájl csatolva.

A ColorCube Prusa i3 MK3S nyomtatóra lett nyomtatva az összes alapértelmezett beállítással, és nem várok semmilyen szükséges változtatást a különböző nyomtatókon. Használja a PLA kedvenc beállításait (ha PLA -ra nyomtat, akkor nem probléma a PETG vagy az ASA használata).

3D nyomtatási paraméterek:

  • Réteg 0,2 mm (0,2 mm -es MINŐSÉG -beállítások a PrusaSlicer -en)
  • Prusament PLA Filament beállítások a PrusaSlicer -en
  • Kitöltés 15%
  • Nincs támogatás
  • Nincs Brim

3. lépés: Áramkör

Áramkör
Áramkör

4. lépés: Forrasztás

Forrasztás
Forrasztás
Forrasztás
Forrasztás
Forrasztás
Forrasztás

Figyelmeztetés: Használjon multimétert, hogy megbizonyosodjon arról, hogy az MT3608 DC-DC erősítő 5 V-ot ad ki. Először - mérés előtt - forgassa el a kárpitot az óramutató járásával megegyező irányba (kattanás). Amikor feszültséget (3, 7V) csatlakoztat a bemenethez, annak körülbelül azonos értéket kell adnia. Fordítsa el az óramutató járásával ellentétes irányba (10-20 teljes fordulatra lesz szüksége), és hirtelen megemelkedik a feszültség. Lassan kapcsolja be a kimenetet 5 V -ra. (fénykép)

Nézze meg a kocka nyomtatott alsó részét. Minden alkatrésznek saját lyuk van. Ez határozza meg, hogy mennyi vezetékre lesz szüksége az egyes komponensek között (ne használjon extra hosszú vezetékeket, különben dróthálózatot kap). (fénykép)

Forrasztóvezetékek csak az Arduino Nano és a LED -gyűrű között (3 vezeték: piros 5V - 5V, fekete GND - GND, kék D6 - DI). Futtassa a LED -gyűrű működési tesztjét a következő fejezetből. (fénykép)

Ha minden rendben, folytassa a Gyro MPU6050 hozzáadásával (5 vezeték: piros 5V - VCC, fekete GND - GND, kék A4 - SDA, zöld A5 - SCL, sárga D2 - INT). Töltse fel a ColorCube.ino kódot és tesztet (a többi alkatrész csak akkumulátorra és töltésre szolgál). (fénykép)

Ha minden rendben, adja hozzá a többi összetevőt. Csak piros (+) és fekete (-) vezetékek vannak. Válassza ki a jobb oldali csapokat az önzáró gombon (nincs csatlakoztatva, ha nem nyomja meg). Az akkumulátor és az akkumulátor töltésének tesztelése. (fénykép)

Piros LED világít a TP4056 -on töltéskor, és kék LED világít, ha teljesen fel van töltve. A TP4056 feletti lyuk a középső nyomtatott részen átengedi a LED fényt a ColorCube felső részének, és felismerheti a töltés fázisát. (fénykép)

5. lépés: Kód

Először le kell töltenie a szükséges könyvtárakat.

Részletes utasítások találhatók az Adafruit Neopixel könyvtárhoz:

LED -gyűrű működési teszt: Az áramkört a könyvtárban található példával tesztelheti. Nyissa meg a fájlt a Fájl/Példák/Adafruit NeoPixels/fájlból és töltse fel (ne felejtse el helyesen beállítani ezt a sort a használt képpontok száma szerint: #define NUMPIXELS 16).

I2Cdev és MPU6050: Töltse le és bontsa ki az i2cdevlib-master.zip fájlt a https://github.com/jrowberg/i2cdevlib webhelyről. Másolja ki az i2cdevlib-master/Arduino két kicsomagolt mappáját: I2Cdev és MPU6050. Mindkettő az Arduino IDE könyvtármappájába másolódik (a Dokumentumok/Arduino/könyvtárak alapértelmezett telepítés esetén).

Ne felejtse el újraindítani az Arduino IDE programot a könyvtárak másolása után.

#include #ifdef _AVR_ #include // 16 MHz -es Adafruit csecsebecséhez szükséges #endif #include "Wire.h" include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #define INTERRUPT_PIN 2 // használja a 2 -es tűt az Arduino Uno -n és a legtöbb táblán #define PIN 6 #define NUMPIXELS 16 // Állítsa be a megfelelő számú LED -et Adafruit_NeoPixel pixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = hamis; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64]; Kvaternion q; VectorFloat gravitáció; float rotace [3]; int x, y, z; illékony bool mpuInterrupt = hamis; void dmpDataReady () {mpuInterrupt = igaz; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #if meghatározott (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // csatlakozzon az I2C buszhoz (az I2Cdev könyvtár ezt nem teszi meg automatikusan) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 kHz -es I2C órajel. Kommentelje ezt a sort, ha fordítási nehézségei vannak #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, igaz); #endif while (! Sorozat); Serial.println (F ("I2C eszközök inicializálása …")); mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT); // kapcsolat ellenőrzése Serial.println (F ("Eszközkapcsolatok tesztelése …")); Serial.println (mpu.testConnection ()? F ("Az MPU6050 kapcsolat sikeres"): F ("Az MPU6050 kapcsolat sikertelen")); // várjon a készre // Serial.println (F ("\ nKüldjön bármilyen karaktert a DMP programozás és a bemutató megkezdéséhez:")); // while (Serial.available () && Serial.read ()); // üres puffer // while (! Serial.available ()); // várjon az adatokra // while (Serial.available () && Serial.read ()); // ismét üres puffer // töltse be és konfigurálja a DMP Serial.println (F ("DMP inicializálása …")); devStatus = mpu.dmpInitialize (); // itt adja meg saját giroszkóp korrekcióit, minimális érzékenységre méretezve mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 gyári alapértelmezés a tesztcsipemhez // győződjön meg róla, hogy működött (0 -t ad vissza, ha igen), ha (devStatus == 0) {// Kalibrálási idő: generálja az eltolásokat és kalibrálja az MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // kapcsolja be a DMP -t, most, hogy készen áll Serial.println (F ("DMP engedélyezése …")); mpu.setDMPEnabled (igaz); // engedélyezze az Arduino megszakítás észlelését Serial.print (F ("A megszakítás észlelésének engedélyezése (Arduino külső megszakítás"))); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // állítsuk be a DMP Ready jelzőt, hogy a fő hurok () függvény tudja, hogy rendben van a használata Serial.println (F ("DMP kész! Várakozás az első megszakításra …")); dmpReady = igaz; // a várható DMP csomagméret beszerzése a későbbi összehasonlításhoz packetSize = mpu.dmpGetFIFOPacketSize (); } else {// HIBA! // 1 = a kezdeti memória betöltése sikertelen // 2 = a DMP konfiguráció frissítése sikertelen // (ha megszakad, a kód általában 1 lesz) Serial.print (F ("A DMP inicializálása sikertelen (kód"))); Soros. print (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) return; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// A legújabb csomag letöltése // Euler szögek megjelenítése mpu.dmpGetQuaternion fokban (& q, fifoBuffer); mpu.dmpGetGravity (& gravitáció, & q); mpu.dmpGetYawPitchRoll (rotáció, & q, & gravitáció); } Serial.print ("X"); Soros.nyomtatás (rotace [2] * 180/M_PI); Serial.print ("\ t Y"); Soros.nyomtatás (rotáció [1] * 180/M_PI); Soros.nyomtatás ("\ t Z"); Soros.println (rotáció [0] * 180/M_PI); x = forgás [2] * 180/M_PI; y = forgás [1] * 180/M_PI; z = forgás [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // Piros, amikor oldalra fordul} else if (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // Zöld, amikor a második oldalra fordulunk} else if (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // Sárga, amikor a harmadik oldalra fordul} else if (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // Kék, amikor a negyedik oldalra fordulunk} else if (abs (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // Fekete, ha fejjel lefelé} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = aktívColor; }}

Végül megnyithatja és feltöltheti a ColorCube.ino fájlt. Helyezze a ColorCube -ot sima felületre, és kapcsolja be. Ne mozgassa, amíg a kalibrálás után (néhány másodperc) fehér színűvé nem válik. Ezután tegye a ColorCube -ot az oldalára, és a szín megváltozik - minden oldalnak saját színe van - piros, zöld, kék, sárga. A ColorCube kialszik, amikor fejjel lefelé fordítja.

6. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Légy szelíd az összeszerelés során. A vezetékek és minden alkatrész nem szereti a durva viselkedést.

Gombos 3D nyomtatott rész - lágyan helyezze a gombot az alsó nyomtatott rész lyukába (amint az a képen látható), simán kell ki -be mennie, ha nem, használjon szikét vagy éles kést vagy csiszolópapírt az összes felesleges anyag eltávolításához (főleg belül kör lyuk teteje az alsó részen). (fénykép)

Helyezze a lyukakba az MPU-6050-et, az Arduino Nano-t, a TP4056-ot és az MT3608-at. A doboz kiemelkedésekkel rendelkezik, amelyek alá az MPU-6050 és az MT3608 behelyezhető. Helyezze az Arduino Nano és a TP4056 USB -csatlakozóit a doboz oldalfalain lévő lyukakba. (fénykép)

Használjon 3D nyomtatott zárat az alkatrészek rögzítéséhez (győződjön meg arról, hogy az összes alkatrész szorosan az alsó részen fekszik). Ez azért fontos, mert valaki biztosan megpróbál majd úgy játszani a ColorCube -jával, mint a kockákkal. (fénykép)

Helyezze be és rögzítse az akkumulátort a lyukába, ha nem tartja szorosan.

Helyezze az önzáró gombot az alsó rész előkészített lyukába. Az önzáró gombnak BE helyzetben kell lennie (rövid). Óvatosan nyomja le a gombot. Tesztelje a funkcionalitást a 3D nyomtatott gombbal. (fotók)

Két M2 csavarral rögzítse a LED -gyűrűt a középső nyomtatott részhez. Jól használható a gyűrű tájolása, ahol a huzalérintkezők a középső nyomtatott rész lekerekített lyukában vannak. (fotók)

Választható: Használjon egy csepp forró ragasztót itt -ott - vezetékek csatlakoztatása a gyűrűhöz, túl hosszú vezetékek esetén, ha valami nem elég szoros stb. Ez tartósabbá teheti a ColorCube -ot.

Úgy helyezze el a vezetékeket a ColorCube belsejében, hogy a nyomtatott alkatrészek ne csíphessék össze. Helyezze a középső részt az alsó részre. A rögzítéshez használjon M3 csavart. (fénykép)

Végül óvatosan nyomja a felső nyomtatott részt az alsó részre. (fénykép)

7. lépés: Kész

Gratulálok. Érezd jól magad.

Ajánlott: