INHOUDSOPGAWE:
- Stap 1: Vereistes
- Stap 2: Verstaan die hardeware en sagteware
- Stap 3: Die opstel van die komponente
- Stap 4: Kodering
Video: Kleurveranderende naglig met Ardruino 101: 4 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
In hierdie projek maak u 'n naglamp met ardruino, Adafruit neo rgb Strips en 'n 3D -drukker.
Let daarop dat hierdie onveranderlike uitsluitlik vir my skoolprojek is. Die kode vir hierdie projek is gebaseer op 'n ander projek. Met dit gesê, is ek nie 'n kenner wat Ardruino betref nie.
Stap 1: Vereistes
Vir hierdie projek benodig u die volgende hardeware en gereedskap
Hardeware:
1 - 'n Ardruino101 (in die VSA) of 'n Genuino101 (vir buite die VSA).
2 - NeoPixel rgb led strips van adafruit (5 volt).
3 - 'n Ardruino usb -aansluiting (tipe B tot A -aansluiting).
4 - 'n Sagteware van Ardruino, Ardruino IDE In hierdie tutoriaal gebruik ons die 1.8.5 -weergawe. Sagteware -biblioteekvereistes is: 101, Adafruit NeoPixel en Madgwick.
5 -En 'n voorwerp om u hardeware te huisves. In hierdie geval gebruik ek 'n 3D -drukker. Die lêer vir hierdie 3D -druk is geleë in die beskrywings genaamd "Lampkop". Let daarop dat hierdie lêerformaat nie gereed is vir 3D -druk nie. Afhangende van u 3D -drukkers, moet u vooraf die aangewese 3D -druksagteware op die 3D -voorwerp gebruik. Soms word die skaal van die 3D -druk herstel. maak dus seker dat die deursnee op 11 cm by 11 cm is.
6 - Basiese soldeerstel.
Stap 2: Verstaan die hardeware en sagteware
Ardruin/Genuino101
Net om te verduidelik dat Ardruino101 en genuino101 presies dieselfde is as die name. Albei het dieselfde spesifikasies en gebruik dieselfde sagteware.
Ardruino101 beskik oor die basiese spesifikasies soos die ardruino UNO en meer. Die belangrikste kenmerk van ardruino101 is die versnellingsmeter en die gyroscoop wat ons in ons projek gaan gebruik. Hierdie tipe ardruino het ook sy unieke kodebiblioteek genaamd CurrieIMU (interne meeteenhede) wat ingesluit is in die biblioteekuitbreiding 101.
Met dit gesê, kan ons praat oor die sagteware.
Sagteware en biblioteke
Ardruino IDE gebruik python as die hoofbronkode. dit is ook die hoofkode platvorm waar die meeste ardruino werk. Daar is baie tutoriale aanlyn oor hoe om hierdie sagteware te gebruik, dus ek beveel u aan om dit eers te ondersoek as u nuut is in hierdie program.
Met dit gesê, is die biblioteke wat ons gebruik die volgende:
Vanuit die Skets -kieslys,> Sluit biblioteek in> Bestuur biblioteke … Tik in die teksinvoerboks
- 101 By die begin word die ardruino 101 nie outomaties by die ardruino IDE ingesluit nie. Ons benodig hierdie biblioteekuitbreiding om ons ardruino -tipe te kodeer.
-Adafruit NeoPixel om ons Neo -pixelstroke te kodeer.
-Madgwick Om die rou data te lees en om hierdie data te bereken na raw, pitch and roll.
Nee RGB -stroke
Die tipe wat ek wil gebruik, is 'n 5 -spanning of 5v -tipe. Met hierdie 5v het ek nie 'n uitgebreide kragbron nodig om my strokies te beheer nie. In plaas daarvan gebruik ek my ardruino as die kragbron om die stroke te beheer en te verlig.
Hier is 'n paar wenke wat u moet weet voordat u met hierdie stroke begin.
Eerstens benodig u 'n Neodigital RGB LED -strook van adafruit. Hierdie soort stroke kan met kodes bestuur word. U moet weet dat daar 'n agterkant en 'n voorkant op hierdie stroke is. Hierdie agterkant en voorkant is belangrik vir die soldeer. Maak seker dat u die voorkant soldeer waar die pyltjie van die punt af wys.
Hier is 'n gids oor hoe u dit kan gebruik.
U moet drie soldeerpunte in gedagte hou Aardaansluiting (GND), spanningsaansluiting (V) en penaansluiting (DIN).
Stap 3: Die opstel van die komponente
Eerstens moet u die komponent wat u in die vereistes kan vind, 3d -druk. In hierdie geval gebruik ek PLA. Maak seker dat die deursnee van die voorwerp 11 cm x 11 cm is. Dit verseker dat die ardruino en die stroke in die winkel pas. Let daarop dat elke 3D -drukker verskillende sagteware gebruik om die drukproses te bereken. Met dit gesê, kan die lêer wat u gebruik, sterk afgeskaal word, so hou dit in gedagte.
Tweede keer na die druk, maak seker dat die komponente kan sluit. Die 3D -afdrukke vorm saam 'n bol. Hulle moet mooi pas. As die komponent verloor, plak dan 'n bietjie band aan die binnekant sodat die dop gevul word. En as dit te dik is, gebruik skuurpapier.
In die derde plek is die skematichs vir die ardruino en die stroke redelik maklik. U gebruik drie drade om die stroke aan die ardruino te koppel. Let daarop dat die enigste plekke waar ek soldeer op die stroke is. nie op die Ardruino self nie.
GND gaan na GND
DIN gaan na 'n speld (in ons geval pin6 op die ardruino)
5V gaan na 5V
Maak seker dat die hoeveelheid ledstroke wat u gebruik 'n maksimum van 30 het, en dan sal die kode nie behoorlik uitgevoer kan word nie. U kan eenvoudig die ongesnyde stroke sny met 'n skêrbord.
Vierde Evrything moet mooi in die sfeer pas. U sou kon dink dat ek 'n kruising tussen 1 van die 3D -druk gemaak het om die trog te sien en 'n seepbak -plastiek bo -op te plaas.
Stap 4: Kodering
U behoort dus al die nodige komponente in u biblioteek te hê.
Hier is die kode wat u benodig om die projek te kan uitvoer. Die resultaat moet lyk soos die videokoppel wat ek op hierdie bladsy stuur.
Die bron van hierdie kode kan hier gevind word. Hierdie projek bevat ook die nodige stappe om die kode en algaritme agter die gebruike beter te verstaan.
#include #include #include #include
#definieer PIN 6 // 11 pixels NeoPixel Strip
#define PIN1 7 // 1 pixel NeoPixel Strip #definieer NUMPIXELS 30 // Aantal píxels #definieer SAMPLE_RATE 25 // Monstertempo vir versnellingsmeter en gyroscoop
// Madgwick -opset
Madgwick filter; ongetekende lang mikroblaaiePerLees, mikrosVoorheen; float accelScale, gyroScale;
// NeoPixel -opset
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelsStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Kleur spasies
RGBConverter rgbConverter; dubbel h = 1; dubbel s = 1; dubbel v = 1; greep rgb [3];
// Status bewegingslamp
// Staat 0 -> Kies kleur -toonhoogte // toestand 1 -> kies versadiging -rol // toestand 2 -> kies waarde -gaaf // toestand 3 -> Los kleurvlugtige int statusLamp = 0 op;
ongeldige opstelling () {
Serial.begin (9600);
// begin die IMU en filter
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Stel die versnellingsmeterbereik op 2G
CurieIMU.setAccelerometerRange (2); // Stel die gyroscoopreeks op 250 grade/sekonde 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.onderbrekings (CURIE_IMU_TAP);
// inisieer veranderlikes om opdaterings te pas om die koers korrek te maak
microsPerReading = 1000000 / SAMPLE_RATE; microsVorige = micros ();
// Eerste NeoPixel 11
pixels.begin (); pixels.show ();
// Eerste NeoPixel 1
pixelsStatus.begin (); pixels.show ();
// Wys status in px
setStatusPixel (statusLamp); }
leemte -lus () {
int aix, aiy, aiz; // versnellingsmeter int gix, giy, giz; vlotbyl, ay, az; float gx, gy, gz; float roll, pitch, yaw; statiese ongetekende lang mikro`s Nou;
// kyk of dit tyd is om data te lees en die filter op te dateer
microsNow = micros (); if (microsNow - microsPrevious> = microsPerReading) {
// lees rou data van CurieIMU
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// skakel van rou data na gravitasie en grade/sekonde eenhede om
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (giy); gz = convertRawGyro (giz);
// werk die filter op, wat die oriëntasie bereken
filter.updateIMU (gx, gy, gz, ax, ay, az);
// druk die opskrif, trek en rol
roll = filter.getRoll (); toonhoogte = filter.getPitch (); yaw = filter.getYaw ();
// verhoog die vorige keer, sodat ons die regte pas hou
microsPrevious = microsPrevious + microsPerReading;
// Slegs as die kleur, versadiging of waarde verander word
if (statusLamp kies Hue if (toonhoogte> = -90 && toonhoogte <= 90 && statusLamp == 0) {// Transformeer hoekhoogte = toonhoogte + 90; // Verkry kleurkoördinate vanuit hoeke h = toonhoogte / 180,0;}
// Hoeke beperkings
// rol slegs -90º tot 90º = 180º // Staat 1 -> kies Versadiging as (rol> = -90 && rol <= 90 && statusLamp == 1) {// Transformeer hoekrol = rol + 90; // Verkry kleurkoordinate vanuit hoeke s = rol / 180.0; }
// Noem 2 -> kies Waarde
as (statusLamp == 2) {// yaw 0º tot 360º v = yaw / 360.0; }
// Skakel om na rgb
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Kleur:"); Reeks.afdruk (h); Serial.print (" -"); Reeks.afdruk (ke); Serial.print (" -"); Reeks.afdruk (v); Serial.println ("");
Serial.print ("Oriëntasie:");
Reeks.afdruk (yaw); Serial.print (""); Reeks.afdruk (toonhoogte); Serial.print (""); Serial.println (rol); */
// Verander die kleur van die pixels
vir (int px = 0; px <NUMPIXELS; px ++) {pixels.setPixelColor (px, pixels. Color (rgb [0], rgb [1], rgb [2])); pixels.show (); }}
// Wys status in px
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// aangesien ons 2G reeks gebruik // -2g kaarte tot 'n rou waarde van -32768 // +2g kaarte tot 'n rou waarde van 32767
dryf a = (aRaw * 2.0) / 32768.0;
gee terug a; }
float convertRawGyro (int gRaw) {
// aangesien ons 250 grade/sekondes reeks gebruik // -250 kaarte tot 'n rou waarde van -32768 // +250 kaarte tot 'n rou waarde van 32767
float g = (gRaw * 250.0) / 32768.0;
terugkeer g; }
static void eventCallback ()
{// Ontdek kraan in alle as as (CurieIMU.getInterruptStatus (CURIE_IMU_TAP)) {Serial.print ("Tik opgespoor statusLamp:"); Serial.println (statusLamp);
// Verander toestand
statusLamp ++;
// Oorspronklike toestand
as (statusLamp> 3) {statusLamp = 0; }}}
void setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelsStatus.setPixelColor (0, pixelsStatus. Color (150, 0, 0)); pixelsStatus.show (); breek; geval 1: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 150, 0)); pixelsStatus.show (); breek; geval 2: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 150)); pixelsStatus.show (); breek; geval 3: pixelsStatus.setPixelColor (0, pixelsStatus. Color (0, 0, 0)); pixelsStatus.show (); breek;
}
}
Aanbeveel:
Warm sitplek: bou 'n kleurveranderende verhitte kussing: 7 stappe (met foto's)
Warm sitplek: bou 'n kleurveranderende verhitte kussing: wil u op koue wintersdae heerlik hou? Hot Seat is 'n projek wat twee van die opwindendste e -tekstielmoontlikhede gebruik - kleurverandering en hitte! Ons gaan 'n sitkussing bou wat opwarm, en as dit gereed is, sal dit die
Maklik kantelbare kleurveranderende draadlose Rubik's Cube Lamp: 10 stappe (met foto's)
Maklik kantelbare kleur wat die draadlose Rubik's Cube Lamp verander: vandag gaan ons hierdie wonderlike Rubik's Cube-achtige lamp bou wat kleur verander na gelang van watter kant dit is. Die kubus werk op 'n klein LiPo-battery, laai deur 'n standaard mikro-usb-kabel, en het tydens my toetsing 'n batterylewe van etlike dae. Hierdie
Gloeiende kleurveranderende kitaar: 49 stappe (met foto's)
Gloeiende kleurveranderende kitaar: In die koninkryk van rock and roll is dit belangrik om jouself te onderskei. Met miljoene mense in die wêreld wat kitaar kan speel, is dit eenvoudig nie goed om te speel nie. Jy het iets ekstra nodig om as 'n rotsgod op te staan. Oorweeg hierdie gu
Kleurveranderende veseloptiese stof: 10 stappe (met foto's)
Kleurveranderende veseloptiese stof: teen ongeveer $ 150 per meter en met baie snybeperkings, is optiese vesel op die mark nie die mees toeganklike materiaal nie. Maar met u eie veseloptiese filament, tule en LED's, kan u u eie in enige vorm vir 'n fraksie van die pri
RGB LED goedkoop en maklike kleurveranderende naglig: 3 stappe
RGB LED goedkoop en maklike kleurveranderende naglig: Hierdie projek was redelik maklik toe ek eers rondspeel en dit uitvind, wat 'n rukkie geneem het. Die idee is om die kleur met 'n skakelaar te kan verander en 'n gelei dimmer opsies ook. Dit is die items wat u nodig het om