Orodha ya maudhui:

Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101: Hatua 4 (na Picha)
Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101: Hatua 4 (na Picha)

Video: Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101: Hatua 4 (na Picha)

Video: Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101: Hatua 4 (na Picha)
Video: UKIZIONA DALILI HIZI MAMA MJAMZITO BASI UTAJIFUNGUA MTOTO WA KIUME 2024, Novemba
Anonim
Image
Image
Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101
Rangi Kubadilisha Mwanga wa Usiku Kutumia Ardruino 101

Katika mradi huu utakuwa unatengeneza taa ya usiku ukitumia ardruino, Adafruit neo rgb Strips na printa ya 3D.

Kumbuka kuwa hii inaweza kusambazwa kwa mradi wangu wa shule. Nambari ya mradi huu inategemea mradi mwingine. Pamoja na hayo alisema mimi si mtaalam linapokuja suala la Ardruino.

Hatua ya 1: Mahitaji

Mahitaji
Mahitaji
Mahitaji
Mahitaji
Mahitaji
Mahitaji

Kwa mradi huu utahitaji vifaa na zana zifuatazo

Vifaa:

1 - ardruino101 (huko Amerika) au Genuino101 (kwa nje ya Amerika).

2 - NeoPixel rgb iliongoza vipande kutoka kwa adafruit (5 volt).

3 - kontakt USB ya ardruino (aina B hadi kontakt).

4 - Programu kutoka Ardruino, Ardruino IDE Katika mafunzo haya tutatumia toleo la 1.8.5. Mahitaji ya maktaba ya programu ni: 101, Adafruit NeoPixel na Madgwick.

5 -Na kitu cha kuweka vifaa vyako. Katika kesi hii nitatumia printa ya 3D. Faili ya uchapishaji huu wa 3D iko katika maelezo yanayoitwa "Kichwa cha Taa". Kumbuka kuwa fomati hii ya faili sio uchapishaji wa 3D tayari. Kulingana na printa zako za 3D lazima kwanza uendeshe programu iliyochaguliwa ya kuchapisha 3d kwenye kitu cha 3D kabla. Wakati mwingine kiwango cha uchapishaji wa 3D kitaweka upya. kwa hivyo hakikisha kipenyo kimewekwa hadi 11 cm na 11 cm.

6 - Kitanda cha msingi cha kuuza.

Hatua ya 2: Kuelewa vifaa na Programu

101. Mkali hautumiwi

Kufafanua tu Ardruino101 na genuino101 ni sawa kabisa kando ya majina. Wote wana vielelezo sawa na hutumia programu sawa.

Ardruino101 inamiliki vielelezo vya msingi kama ardruino UNO na zaidi. Sifa kuu ya ardruino101 ni accelerometer na gyroscope ambayo tutatumia katika mradi wetu. Pia aina hii ya ardruino ina maktaba ya kipekee ya nambari inayoitwa CurrieIMU (Vitengo vya Vipimo vya Ndani) ambavyo vimejumuishwa kwenye ugani wa maktaba 101.

Pamoja na hayo sema tuzungumze juu ya programu.

Software na maktaba

Ardruino IDE hutumia chatu kama nambari kuu ya chanzo. pia ni kanuni kuu ya platvorm ambapo ardruino nyingi huendesha. Kuna mafunzo mengi mkondoni juu ya jinsi ya kutumia programu hii kwa hivyo nakushauri utafute hizo kwanza ikiwa wewe ni mpya kwenye programu hii.

Pamoja na hayo maktaba tunayotumia ni yafuatayo:

Kutoka kwenye menyu ya Mchoro,> Jumuisha Maktaba> Dhibiti Maktaba… Katika kisanduku cha kuingiza maandishi kwenye

- 101 Katika standart ardruino 101 haijajumuishwa moja kwa moja kwenye IDE ya ardruino. Tunahitaji ugani huu wa maktaba ili kuandikisha aina yetu ya ardruino.

-Adafruit NeoPixel ili kuandikisha vipande vyetu vya pikseli ya Neo.

-Madgwick Ili kusoma data ghafi na kuhesabu data hii kwa mbichi, lami na roll.

Neo RGB vipande

Aina ambayo nitatumia ni 5 voltage au 5v aina. Na hii 5v sihitaji chanzo cha nguvu kilichopanuliwa kudhibiti vipande vyangu. Badala yake nitatumia ardruino yangu kama chanzo cha nguvu kudhibiti na kuwasha vipande.

Hapa kuna vidokezo unavyohitaji kujua kabla ya kuanza kwa vipande hivi.

Kwanza utahitaji vivutio vya Neodigital RGB vilivyoongozwa kutoka kwa matunda. Vipande vya aina hii vinaweza kusafirishwa kwa kutumia nambari. Ifuatayo unahitaji kujua ni kwamba kuna nyuma na upande wa mbele kwenye vipande hivi. Nyuma na mbele ni muhimu kwa soldering. Hakikisha umetengeneza upande wa mbele ambapo kitufe cha mshale kimeelekeza mbali na ncha.

Hapa kuna mwongozo wa jinsi ya kuzitumia.

Kuna hatua 3 ya kuuza unahitaji kukumbuka Uunganisho wa ardhi (GND), Uunganisho wa Voltage (V) na Uunganisho wa Pin (DIN).

Hatua ya 3: Kuweka Vipengele

Kuweka Vipengele
Kuweka Vipengele
Kuweka Vipengele
Kuweka Vipengele
Kuweka Vipengele
Kuweka Vipengele

Kwanza utahitaji kuchapisha 3d sehemu ambayo unaweza kupata katika mahitaji. Katika kesi hii nitatumia PLA. Hakikisha kipenyo cha kitu cha kawaida ni 11cm na 11cm. Hii itahakikisha kuwa ardruino na vipande vitatoshea kwenye shpere. Kumbuka kuwa kila printa ya 3D hutumia vifaa vya laini tofauti kuhesabu mchakato wa uchapishaji. Pamoja na hayo ilisema faili unayotumia inaweza kupunguzwa kwa nguvu ili uweze kuzingatia.

Pili baada ya kuchapishwa hakikisha vifaa vinaweza kufunga. Prints za 3D pamoja hufanya tufe. Wanapaswa kutoshea vizuri. Ikiwa componten itapoteza basi tangaza mkanda kwa upande wa ndani ili kofia ijazwe. Na ikiwa ni kutumia sandpaper nene.

Tatu skematichs ya ardruino na vipande ni rahisi sana. Utatumia waya 3 kuunganisha vipande kwenye ardruino. Kumbuka kuwa sehemu pekee ambazo mimi solder ziko kwenye vipande. sio kwenye Ardruino yenyewe.

GND huenda kwa GND

DIN huenda kwa Pini (kwa upande wetu pin6 kwenye ardruino)

5V huenda kwa 5V

Hakikisha kiasi cha vipande vilivyoongozwa unayotumia ni cap saa 30. Zaidi ya hayo basi hiyo na itashindwa kutekeleza nambari hiyo vizuri. Unaweza tu kukata vipande vyovyote visivyolazwa vilivyoonyeshwa na ishara ya mkasi.

Nne Evrything inapaswa kutoshea vizuri katika uwanja. Unaweza kupenda nilifanya makutano kati ya 1 ya kuchapishwa kwa 3d ili kuona kijiko na kuweka plastiki ya kuona juu.

Hatua ya 4: Usimbuaji

Kwa hivyo kwa sasa unapaswa kuwa na vifaa vyote vinavyohitajika kwenye maktaba yako.

Hapa kuna nambari ambayo utahitaji ili kuendesha mradi. Matokeo yake yanapaswa kuonekana kama kiunga cha video ninachotuma kwenye ukurasa huu.

Chanzo cha nambari hii kinaweza kupatikana hapa. Mradi huu pia ni pamoja na hatua za necercarly ili kuelewa vizuri nambari na algaritme nyuma ya matumizi.

#jumlisha #jumlisha #jumuisha #jumuisha

#fafanua PIN 6 // saizi 11 Ukanda wa NeoPixel

#fafanua PIN1 7 // 1 pikseli NeoPixel Strip #fafanua NUMPIXELS 30 // Idadi ya viini #fafanua SAMPLE_RATE 25 // Kiwango cha sampuli ya accelerometer na gyroscope

// Usanidi wa Madgwick

Kichujio cha Madgwick; micros ya muda mrefu isiyosajiliwaPerReading, microsPrevious; kuelea accelScale, gyroScale;

// Usanidi wa NeoPixel

Saizi za Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Saizi za Adafruit_NeoPixelStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);

// Nafasi za rangi

RGBConverter rgbConverter; mara mbili h = 1; mara mbili s = 1; mara mbili v = 1; byte rgb [3];

// Taa ya Mwendo wa Hali

// Jimbo 0 -> Chagua Hue - Pitch // Jimbo 1 -> Chagua Kueneza - Tembeza // Jimbo 2 -> Chagua Thamani - Yaw // Jimbo 3 -> Rekebisha hali ya rangi isiyo na nguvu ya taaLamp = 0;

usanidi batili () {

Serial. Kuanza (9600);

// kuanza IMU na chujio

CurieIMU.anza (); CurieIMU.setGyroRate (SAMPLE_RATE); Kiwango cha CurieIMU.setAccelerometerRes (SAMPLE_RATE); chujio.anza (SAMPLE_RATE);

// Weka safu ya kasi hadi 2G

CurieIMU.setAccelerometerRange (2); // Weka safu ya gyroscope hadi digrii 250 / pili CurieIMU.setGyroRange (250);

CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);

CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();

CurieIMU.ambatanishaKukatisha (tukioCallback);

CurieIMU.setDetectionTreshold (CURIE_IMU_TAP, 950); Usumbufu wa CurieIMU (CURIE_IMU_TAP);

// anzisha vigeuzi ili kuharakisha sasisho ili kurekebisha kiwango

microsPerReading = 1000000 / SAMPLE_RATE; awali = micros ();

// Init NeoPixel 11

saizi. anza (); saizi. onyesha ();

// Init NeoPixel 1

saiziStatus.anza (); saizi. onyesha ();

// Onyesha hali katika px

setStatusPixel (statusLamp); }

kitanzi batili () {

int aix, aiy, aiz; // accelerometer int gix, giy, giz; kuelea shoka, ay, az; kuelea gx, gy, gz; kuelea roll, lami, yaw; tuli micros muda mrefu saini sasa;

// angalia ikiwa ni wakati wa kusoma data na kusasisha kichungi

micros Sasa = micros (); ikiwa (microsNow - microsPrevious> = microsPerReading) {

// soma data ghafi kutoka kwa CurieIMU

CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);

// kubadilisha kutoka data ghafi kuwa mvuto na digrii / vitengo vya pili

shoka = kubadilishaRawAcceleration (aix); ay = kubadilishaRawAcceleration (aiy); az = kubadilishaRawAcceleration (aiz); gx = kubadilishaRawGyro (gix); gy = kubadilishaRawGyro (giy); gz = kubadilishaRawGyro (giz);

// sasisha kichungi, ambacho kinahesabu mwelekeo

chujio.sasishaIMU (gx, gy, gz, shoka, ay, az);

// chapa kichwa, lami na roll

roll = filter.getRoll (); lami = kichujio. GongaBomba (); yaw = kichujio.getYaw ();

// nyongeza ya wakati uliopita, kwa hivyo tunaweka kasi inayofaa

microsPrevious = microsPrevious + microsPerReading;

// Ikiwa tu mabadiliko ya Hue, Kueneza au Thamani

ikiwa (Taa ya hali chagua Hue ikiwa (lami> = -90 && lami <= 90 && statusLamp == 0) {// Badilisha angle lami = lami + 90; // Inapata rangi za rangi kutoka pembe h = lami / 180.0;}

// Vizuizi vya pembe

// roll tu -90º hadi 90º = 180º // Hali 1 -> chagua Kueneza ikiwa (roll> = -90 && roll <= 90 && statusLamp == 1) {// Transform angle roll = roll + 90; // Inapata waratibu wa rangi kutoka pembe s = roll / 180.0; }

// Hali 2 -> chagua Thamani

ikiwa (statusLamp == 2) {// yaw 0º hadi 360º v = yaw / 360.0; }

// Badilisha kwa rgb

rgbConverter.hsvToRgb (h, s, v, rgb); / * Serial.print ("Rangi:"); Printa ya serial (h); Serial.print ("-"); Rekodi (s); Serial.print ("-"); Printa ya serial (v); Serial.println ("");

Serial.print ("Mwelekeo:");

Printa ya serial (yaw); Serial.print (""); Printa ya serial (lami); Serial.print (""); Serial.println (roll); * /

// Badilisha rangi ya saizi

kwa (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2])); saizi. onyesha (); }}

// Onyesha hali katika px

setStatusPixel (statusLamp); }}

kuelea kubadilishaRawAcceleration (int aRaw) {

// kwa kuwa tunatumia ramani 2G anuwai // -2g kwa thamani mbichi ya -32768 // + 2g ramani kwa thamani mbichi ya 32767

kuelea a = (aRaw * 2.0) / 32768.0;

kurudi a; }

kuelea kubadilishaRawGyro (int gRaw) {

// kwa kuwa tunatumia digrii 250 / sekunde anuwai // ramani -250 kwa thamani mbichi ya -32768 // +250 ramani kwa thamani mbichi ya 32767

kuelea g = (gRaw * 250.0) / 32768.0;

kurudi g; }

hafifu ya tukio tupu Kupiga simu ()

{// Gundua bomba kwenye mhimili wote ikiwa (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Gonga hali ya taa inayopatikana:"); Serial.println (statusLamp);

// Badilisha hali

hadhiLamp ++;

// Hali ya Init

ikiwa (statusLamp> 3) {statusLamp = 0; }}}

batili setStatusPixel (int statusPx)

{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); saiziStatus.show (); kuvunja; kesi 1: saiziStatus.setPixelColor (0, saiziStatus. Color (0, 150, 0)); saiziStatus.show (); kuvunja; kesi 2: saiziStatus.setPixelColor (0, saiziStatus. Color (0, 0, 150)); saiziStatus.show (); kuvunja; kesi 3: saiziStatus.setPixelColor (0, saiziStatus. Color (0, 0, 0)); saiziStatus.show (); kuvunja;

}

}

Ilipendekeza: