Tartalomjegyzék:
- 1. lépés: Követelmények
- 2. lépés: A hardver és a szoftver megértése
- 3. lépés: Az összetevők beállítása
- 4. lépés: Kódolás
Videó: Színváltó éjszakai fény az Ardruino használatával 101: 4 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Ebben a projektben éjszakai lámpát fog készíteni ardruino, Adafruit neo rgb szalagok és 3D nyomtató használatával.
Ne feledje, hogy ez a megmunkálhatatlan csak az iskolai projektemre vonatkozik. A projekt kódja egy másik projektből származik. Ezzel azt mondtam, hogy nem vagyok szakértő Ardruino esetében.
1. lépés: Követelmények
Ehhez a projekthez a következő hardverekre és eszközökre lesz szüksége
Hardver:
1 - Egy ardruino101 (az Egyesült Államokban) vagy a Genuino101 (az Egyesült Államokon kívül).
2 - NeoPixel rgb led csíkok adafruitból (5 volt).
3 - A ardruino usb csatlakozó (B -A típusú csatlakozó).
4 - Ardruino szoftver, Ardruino IDE Ebben az oktatóanyagban az 1.8.5 verziót fogjuk használni. A szoftverkönyvtár követelményei: 101, Adafruit NeoPixel és Madgwick.
5 -És egy tárgy a hardver elhelyezésére. Ebben az esetben 3D nyomtatót fogok használni. A 3D nyomtatáshoz tartozó fájl a "Lámpafej" nevű leírásban található. Ne feledje, hogy ez a fájlformátum nem alkalmas 3D nyomtatásra. A 3D nyomtatóktól függően először futtatnia kell a kijelölt 3D nyomtatási szoftvert a 3D objektumon. Néha a 3D nyomtatás skálája visszaáll. ezért győződjön meg arról, hogy az átmérő 11 x 11 cm -re van állítva.
6 - Alap forrasztó készlet.
2. lépés: A hardver és a szoftver megértése
Ardruin/Genuino101
Csak tisztázni kell, hogy az Ardruino101 és a genuino101 pontosan ugyanaz a nevek mellett. Mindkettő ugyanazokkal a specifikációkkal rendelkezik, és ugyanazt a szoftvert használja.
Az Ardruino101 rendelkezik az alapvető specifikációkkal, mint az ardruino UNO és még sok más. Az ardruino101 fő jellemzője a gyorsulásmérő és a giroszkóp, amelyeket projektünkben használni fogunk. Az ilyen típusú ardruino egyedi kódkönyvtára CurrieIMU (belső mérési egységek), amely a 101 könyvtárbővítményben található.
Ennek megfelelően beszéljünk a szoftverről.
Szoftverek és könyvtárak
Az Ardruino IDE fő forráskódként python -t használ. ez a fő platvorm kód is, ahol a legtöbb ardruino fut. Rengeteg oktatóanyag található az interneten ennek a szoftvernek a használatáról, ezért azt javaslom, hogy először tanulmányozza ezeket, ha még nem ismeri ezt a programot.
Ezzel együtt a következő könyvtárakat használjuk:
A Vázlat menüben válassza a Könyvtár felvétele> Könyvtárak kezelése… parancsot. A szövegbeviteli mezőbe írja be
- 101 A szabvány szerint az ardruino 101 nem szerepel automatikusan az ardruino IDE -n. Szükségünk van erre a könyvtárbővítményre az ardruino típus kódolásához.
-Adafruit NeoPixel a Neo pixel csíkjaink kódolásához.
-Madgwick Annak érdekében, hogy a nyers adatokat ki lehessen olvasni és kiszámítani nyers, pitch és roll módra.
Neo RGB csíkok
Az I -es típus 5 vagy 5 V -os típusú lesz. Ennél az 5V -nál nem kell hosszabb áramforrás a csíkok vezérléséhez. Ehelyett az ardruino -t használom áramforrásként a csíkok vezérléséhez és megvilágításához.
Íme néhány tipp, amit tudnia kell, mielőtt elkezdi használni ezeket a csíkokat.
Először is szüksége lesz egy Neodigital RGB led csíkra az adafruitból. Ez a fajta csík kódokkal kódolható. Ezután tudnia kell, hogy ezen a csíkon van egy hátoldal és egy elülső oldal. Ez a hát és az elülső oldal fontos a forrasztáshoz. Győződjön meg arról, hogy az elülső oldalt forrasztja, ahol a nyíl gomb a hegyétől távol van.
Íme egy útmutató a használatukhoz.
Három forrasztási pontot kell szem előtt tartania: földelés (GND), feszültségcsatlakozás (V) és tűcsatlakozás (DIN).
3. lépés: Az összetevők beállítása
Először ki kell nyomtatnia a követelményeket tartalmazó összetevőt. Ebben az esetben PLA -t fogok használni. Győződjön meg arról, hogy az átfogó tárgy átmérője 11 x 11 cm. Ez biztosítja, hogy az ardruino és a csíkok illeszkedjenek a shpere -be. Ne feledje, hogy minden 3D nyomtató különböző szoftvereket használ a nyomtatási folyamat kiszámításához. Ezzel azt mondhatja, hogy az Ön által használt fájl különböző mértékben méretezhető, ezért ezt tartsa szem előtt.
Másodszor a nyomtatás után győződjön meg arról, hogy az alkatrészek zárhatók. A 3D nyomatok együtt gömböt alkotnak. Szépen illeszkedniük kell. Ha a csomag elveszik, akkor ragasztószalagot kell ragasztani a belső oldalra, hogy a kupak betöltődjön. És ha vastag, használjon csiszolópapírt.
Harmadszor, az ardruino és a csíkok skematichjai meglehetősen egyszerűek. Három vezetéket fog használni a csíkok csatlakoztatásához az ardruino -hoz. Ne feledje, hogy az egyetlen hely, ahol forrasztom, a csíkokon van. nem magán az Ardruino -n.
A GND a GND -hez megy
A DIN egy csaphoz megy (esetünkben a pin6 az ardruino -n)
5V megy 5V -ra
Győződjön meg arról, hogy a felhasznált LED csíkok mennyisége 30 -as. Egyszerűen levághatja a levágott csíkokat olló jelzéssel.
Negyedik Minden jól illeszkedjen a szférába. Lehet, hogy kereszteztem a 3D -s nyomtatás 1 -e között, hogy lássam a vályút, és a tetejére egy lágy műanyagot helyezzek.
4. lépés: Kódolás
Így mostanra rendelkeznie kell a könyvtárában az összes szükséges összetevővel.
Itt van a kód, amire szüksége lesz a projekt futtatásához. Az eredménynek úgy kell kinéznie, mint az ezen az oldalon küldött videó link.
A kód forrása itt található. Ez a projekt magában foglalja az elhanyagolható lépéseket is annak érdekében, hogy jobban megértsük a felhasználások mögött rejlő kódot és algritmust.
#befoglalás #befoglalás #befoglalás #befoglalás
#define PIN 6 // 11 pixel NeoPixel Strip
#define PIN1 7 // 1 képpontos NeoPixel Strip #define NUMPIXELS 30 // Pikselek száma #define SAMPLE_RATE 25 // Mintavételi arány gyorsulásmérőhöz és giroszkóphoz
// Madgwick konfiguráció
Madgwick szűrő; unsigned long microsPerReading, microsPrevious; float accelScale, gyroScale;
// NeoPixel konfiguráció
Adafruit_NeoPixel pixelek = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelekStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Színes terek
RGBConverter rgbConverter; kettős h = 1; kettős s = 1; kettős v = 1; bájt rgb [3];
// Állapot mozgáslámpa
// Állapot 0 -> Válassza ki a Színárnyalat -Hangmagasság // Állapot 1 -> Válassza ki a Telítettséget -Roll // Állapot 2 -> Érték kiválasztása -Hajlítás // Állapot 3 -> Rögzítse a színt ill. Int állapotLamp = 0;
void setup () {
Sorozat.kezdet (9600);
// indítsa el az IMU -t és a szűrőt
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Állítsa a gyorsulásmérő tartományát 2G -ra
CurieIMU.setAccelerometerRange (2); // Állítsa a giroszkóp tartományát 250 fokra/másodpercre CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.megszakítja (CURIE_IMU_TAP);
// inicializálja a változókat a frissítések ütemezéséhez a megfelelő arányhoz
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
pixels.begin (); pixels.show ();
// Init NeoPixel 1
pixelsStatus.begin (); pixels.show ();
// Állapot megjelenítése képpontban
setStatusPixel (állapotLámpa); }
void loop () {
int aix, aiy, aiz; // gyorsulásmérő int gix, giy, giz; úszóbalta, ay, az; float gx, gy, gz; úszótekercs, szurok, billegés; statikus előjel nélküli hosszú microsNow;
// ellenőrizze, hogy ideje -e olvasni az adatokat és frissíteni a szűrőt
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// nyers adatok olvasása a CurieIMU -ból
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// nyers adatok konvertálása gravitációs és fok/másodperces egységekre
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// frissítse a tájolást kiszámító szűrőt
filter.updateIMU (gx, gy, gz, ax, ay, az);
// kinyomtatja a címsort, a pályát és a tekercset
roll = filter.getRoll (); pitch = filter.getPitch (); yaw = filter.getYaw ();
// növekmény előző alkalommal, tehát megfelelő tempót tartunk
microsPrevious = microsPrevious + microsPerReading;
// Csak akkor, ha megváltoztatja az árnyalatot, a telítettséget vagy az értéket
if (statusLamp válassza a Hue lehetőséget, ha (pitch> = -90 && pitch <= 90 && statusLamp == 0) {// szögmagasság átalakítása = pitch + 90; // Színkoordinátákat kap a h = pitch / 180.0;} szögekből
// Szögkorlátozások
// csak tekerés -90º -tól 90º -ig = 180º // 1. állapot -> válassza ki a Telítettséget, ha (roll> = -90 && roll <= 90 && statusLamp == 1) {// Transform szögtekercs = roll + 90; // Színkoordinátákat kap szögből s = roll / 180.0; }
// 2. állapot -> válassza az Érték lehetőséget
if (állapotLámpa == 2) {// elfordulás 0º -tól 360º -ig v = elfordul / 360,0; }
// konvertálás rgb -re
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Szín:"); Soros.nyomat (h); Soros.nyomtatás (" -"); Sorozatnyomat (ok); Soros.nyomtatás (" -"); Sorozatnyomat (v); Serial.println ("");
Serial.print ("Tájolás:");
Soros.nyomtatás (elfordulás); Serial.print (""); Soros.nyomat (hangmagasság); Serial.print (""); Soros.println (tekercs); */
// A képpontok színének megváltoztatása
for (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2]))); pixels.show (); }}
// Állapot megjelenítése képpontban
setStatusPixel (állapotLámpa); }}
float convertRawAcceleration (int aRaw) {
// mivel 2G tartományt használunk -2 -2g térképeket nyers értékre -32768 // +2g térképeket 32767 nyers értékre
úszó a = (aRaw * 2,0) / 32768,0;
vissza a; }
float convertRawGyro (int gRaw) {
// mivel 250 fok/másodperc tartományt használunk // -250 térkép -32768 nyers értékre // +250 térkép 32767 nyers értékre
úszó g = (gRaw * 250,0) / 32768,0;
visszatérés g; }
static void eventCallback ()
{// Érintés észlelése minden tengelyen, ha (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Érintse meg az észlelt állapotlámpát:"); Serial.println (statusLamp);
// Állapot megváltoztatása
állapotLámpa ++;
// Kezdeti állapot
if (statusLamp> 3) {statusLamp = 0; }}}
void setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelsStatus.show (); szünet; 1. eset: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 150, 0)); pixelsStatus.show (); szünet; 2. eset: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 150)); pixelsStatus.show (); szünet; 3. eset: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 0)); pixelsStatus.show (); szünet;
}
}
Ajánlott:
Éjszakai fény mozgás és sötétség érzékelés - nincs mikro: 7 lépés (képekkel)
Éjszakai fénymozgás és sötétségérzékelés - nincs mikro: Ez az oktatóanyag arról szól, hogy megakadályozza, hogy a lábujja eltörjön, amikor sötét szobában jár. Mondhatnánk, hogy a saját biztonsága érdekében, ha éjszaka felkel, és biztonságosan megpróbálja elérni az ajtót. Természetesen használhat éjjeli lámpát vagy a fő lámpát
Micimackó és barátai éjszakai fény: 5 lépés (képekkel)
Micimackó és a barátok éjszakai fény: A következő éjszakai fényt egy felületre szerelt ATTiny85 segítségével hozták létre. Két gombja van, az egyik a be- és kikapcsoláshoz, a másik pedig a szüneteltetéshez a kiválasztott világítási sorrendben. A szünet nem igazi szünet, hanem egyszerűen megszakítja a kapcsolatot a
Kézi éjszakai fény: 7 lépés (képekkel)
Kézi éjszakai fény: Az 5 éves gyermekem folyamatosan felébresztett minket éjjel, és folyamatosan tanítottunk neki, hogy hagyja anyát és apát aludni, amíg rájöttem, hogy valójában nem tudja eldönteni, hogy alvás vagy játék Ráadásul azt kéri tőlünk, hogy kapcsoljuk be a villanyt
Mini LED éjszakai éjszakai fény / lámpa: 5 lépés
Mini LED éjjeli lámpa / lámpa: Először is azt kell mondanom, hogy ezt a Sunbanks Mini szabadon álló LED -es lámpája ihlette. Ahelyett, hogy egy biro -t használtam volna, hogy távol tartsam a ledet az asztaltól, néhány világos perspektívát használtam, hogy kivetítsem a fényt az alapból. Ez a kis projekt egy prototípus
RGB LED Olcsó és egyszerű színváltó éjszakai fény: 3 lépés
RGB LED Olcsó és egyszerű színváltó éjszakai lámpa: Ez a projekt nagyon egyszerű volt, miután körbejártam és rájöttem, ami eltartott egy ideig. led dimming opciók is. Ezek azok a tételek, amelyekre szüksége lesz