Prog Shield LED Strip: Forskelle mellem versioner
Bar (diskussion | bidrag) |
Bar (diskussion | bidrag) |
||
| Linje 61: | Linje 61: | ||
Koden laver et løbelys hen ad LED-Strippen, der gentages i det uendelige. | Koden laver et løbelys hen ad LED-Strippen, der gentages i det uendelige. | ||
=== | ===Anvendelse af millis() i softwaren=== | ||
Koden i det viste eksempel anvender [[delay]], hvilket gør at koden er blokeret det meste af tiden. Hvis man vil uden om dette, så er løsningen at anvende [[millis]], der måler tiden på en anden måde, ved at bruge indbygget tidsmåling i Arduinoen. | |||
Der er lavet et eksempel på kode med millis, hvor man med en knap kan stoppe og starte løbelyset på et hvilket som helst tidspunkt. Begge koder ligger i [[media:LED-Strip-kode.zip|Denne ZIP-fil]], og for at kunne anvende eksemplet med millis, så skal man have installeret ezButton biblioteket<ref>[https://www.arduino.cc/reference/en/libraries/ezbutton/ Arduinos omtale af] exButton</ref>. Dette kan hentes fra [https://github.com/ArduinoGetStarted/button denne github side] | |||
<SyntaxHighlight lang="C"> | <SyntaxHighlight lang="C"> | ||
#include <ezButton.h> | |||
ezButton button(8); | |||
</SyntaxHighlight> | </SyntaxHighlight> | ||
Versionen fra 11. feb. 2024, 15:55

WS2812 LED Strip er en række med RGB LED'er, der kan styres af en enkelt digital pin. Antallet af LED'er er begrænset af hvor meget strøm der kan leveres af Arduinoen.
Den viste strip har 18 LED'er og den den anvendte til eksemplet. Den er koblet op med en modstand (330-680 ohm), der fungerer som beskyttelse af både Arduino og LED-Strip ved fejltilslutning.
Software
Softwaren er baseret på et bibliotek lavet af AdaFruit[1], og kan downloades som en ZIP-fil fra Denne side, eller denne ZIP-fil. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.
Anvendelsen af softwaren
Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere fugtsensoren, med ben og type osv.
#include <Adafruit_NeoPixel.h>
#define PIN 2 // input pin Neopixel is attached to
#define NUMPIXELS 18 // number of neopixels in strip
Adafruit_NeoPixel pixels1 = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Til programmet anvendes enkelte variabler til styring af tid og farver:
int delayval = 100; // timing delay in milliseconds
byte R = 0; // Mængde af Rød (0 - 255)
byte G = 255; // Mængde af Grøn (0 - 255)
byte B = 0; // Mængde af Blå (0 - 255)
Inde i setup() skrives en velkomst og der skal sættes gang i objektet ved hjælp af begin-metoden som vist her:
void setup() {
Serial.begin(9600);
delay(200);
Serial.println("Demo af LED-Strip WS2812");
// Initialize the NeoPixel library.
pixels1.begin();
}
I loop() genneløbes en forløkke med alle LED'er, hvor farven sættes og vises, og efter et delay slukkes det igen:
void loop() {
for (int i=0; i < NUMPIXELS; i++) {
// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
pixels1.setPixelColor(i, pixels1.Color(R, G, B));
// This sends the updated pixel color to the hardware.
pixels1.show();
// Delay for a period of time (in milliseconds).
delay(delayval);
// Turn off the LED
pixels1.setPixelColor(i, pixels1.Color(0, 0, 0));
}
}
Koden laver et løbelys hen ad LED-Strippen, der gentages i det uendelige.
Anvendelse af millis() i softwaren
Koden i det viste eksempel anvender delay, hvilket gør at koden er blokeret det meste af tiden. Hvis man vil uden om dette, så er løsningen at anvende millis, der måler tiden på en anden måde, ved at bruge indbygget tidsmåling i Arduinoen.
Der er lavet et eksempel på kode med millis, hvor man med en knap kan stoppe og starte løbelyset på et hvilket som helst tidspunkt. Begge koder ligger i Denne ZIP-fil, og for at kunne anvende eksemplet med millis, så skal man have installeret ezButton biblioteket[2]. Dette kan hentes fra denne github side
#include <ezButton.h>
ezButton button(8);
Hardware
Der læses på en ledning som beskrevet i Humidity, og på grund af et uheld, så er sensoren landet på et forkert ben, dette betyder dog ikke det store da biblioteket godt kan aflæse sensoren på det ben.
Layout
LED-Strippens placering på programmerings-shieldet kan ses her:
![]()
Placering af LED-Strip på Programmerings-Shieldet - HUSK at vende den rigtigt
LED-Strippen placeres på pin 2, og vil på denne placering blokere for RF-Receiveren.
Alternativ placering
Hvis man ønsker at koble flere LED-Strips på Arduinoen, så kræver det en anden placering på programmerings-shieldet som det kan ses her:
![]()
Alternative placeringer af LED-Strips på Programmerings-Shieldet - HUSK at vende dem rigtigt - Output pin nummer angivet
Man skal igen være opmærksom på hvor meget strøm man bruger - man kan evt. skrue ned for lysstyrken i hver enkelt LED.
Mulige ben med disse placeringer er pin 3, 8 og A5.
Disse placeringer blokerer så for Andre moduler, fordi benene genbruges.
Referencer
- ↑ LED-Strip library udviklet af AdaFruit placeret ved GitHub
- ↑ Arduinos omtale af exButton