LED Nintendoscape (4 / 5 steg)
Steg 4: Arduino kod
För vårt projekt att köra behöver vi trycka koden till Arduino att kontrollera elektriska komponenter. Bibliotek ingår i en zip-fil och mappar inuti måste placeras i främsta Arduino library-mappen på din dator efter packa. Här ingår bibliotek för IR-sensor, stegmotor och LED displayen från Adafruit. Den bifogade zipfilen med titeln Arduino koden innehåller mappen med Arduino skiss behövs för att köra koden. Detta måste helt enkelt bli blinkat till Arduino för att koden ska köras.
#include < Adafruit_GFX.h >
#include < Adafruit_NeoMatrix.h >
#include < Adafruit_NeoPixel.h >
#include < StepperAK.h >
#include < IRremote.h >
#define PIN 6 //LED Matrix ingång på Pin 6
#define gearratio 64 //1:64 utväxling för stegmotor
#define BOARDCOUNT 1 / / antal ledde matriser
Adafruit_NeoPixel strip = Adafruit_NeoPixel (64 * BOARDCOUNT, stift, NEO_GRB + NEO_KHZ800); Ställer in antalet LED noder
dubbel ljusstyrka =. 1; minska ljusstyrka för ledde matrisen
CONST int stepsPerRevolution = 2048; 2048 steg vända motor en revolutionen
Stepper myStepper (stepsPerRevolution, A0, A1, A2, A3); 4-tråds stepper på stift A0-A3
int RECV_PIN = 9; IR-mottagare ansluten till Pin 9
IRrecv irrecv(RECV_PIN); Skapa en IR-mottagare objekt
decode_results resultat. Skapa ett decode_results-objekt
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix (8, 8, PIN, //Initiates en 8 x 8 ledde matrisen
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
NEO_GRB + NEO_KHZ800);
CONST uint16_t färger [] = {
Matrix. Färg (255, 0, 0), matrix. Färg (0, 255, 0), matrix. Färg (0, 0, 255)}; Definierar ledde matrisen färger
Koden fungerar genom att fastställa vilka bibliotek behövs och definiera alla stift används och variabler krävs. Den sedan tonas ned ljusstyrkan på ledde matrisen, sätter upp den motoriska revolutionen och skapar ett objekt för IR-sensorn. Den ledde matrisen initieras sedan och färgerna ställs in.
void setup() {
myStepper.setSpeed(0.15*gearratio); motorn verkar vara inriktad ner 1/64,
vilket innebär att hastigheten måste ställas in 64 x.
irrecv.enableIRIn(); Gör den IR-enheten
Matrix.BEGIN(); Startar den ledde matrisen med en tom skärm
matrix.setTextWrap(false);
matrix.setBrightness(40);
matrix.setTextColor(colors[0]);
}
int x = matrix.width(); Upprättar X som matris bredd
int pass = 0; Upprättar passera variabel
int flagga = 0; variabel för att fastställa när enheten drivs på via fjärrkontroll
I avsnittet installation stepper utväxlingen är inställt att kontrollera hastigheten, IR-sensorn är aktiverad och matrisen är till en tom skärm. Flera variabler är också etablerade som används senare för matrisen och bestämma när strömknappen trycktes.
void loop() {
om (irrecv.decode (& resultat)) {//has en överföring har fått?
om (results.value == 3584887633) {//If strömbrytaren trycks flagga variabel ändringarna och exekverar huvudsakliga
Flagga = 1;
}
}
irrecv.Resume(); Ta emot nästa värde från IR-Sensor
Projektet startar med en blank LED display, och IR-sensorn är aktiverad och väntar på strömbrytaren för att skjutas. När strömbrytaren trycks in huvudloop för projektet. Numret i det results.value utrymmet är avkodad resultatet från strömbrytaren på en Panasonic Audio System fjärrkontroll, men en annan fjärrkontroll kan vara använt annd måste du avkoda fjärrkontrollen först för att få fram den numeriska siffror associerade med dina knappar.
om (flagga == 1) //If flagga är lika med 1, sedan strömknappen trycktes
{
om (irrecv.decode (& resultat)) {//has en överföring har fått?
Serial.println (results.value), //If ja: tolka de mottagna kommandona...
om (results.value == 2354352215) {//If den "-"-knappen trycks gör du följande:
matrix.fillScreen(0); Rensar ledde matrisen
matrix.setCursor (2, 0); Anger markörens position
matrix.setTextColor(colors[2]); Anger textfärg
Matrix.Print(F("?")); Utskrifter av "?" karaktär till skärmen
Matrix.show(); Gör att matrisen
Delay(100); Förseningar i matrisen
myStepper.step(stepsPerRevolution); Roterar stegmotor
Om den "+" eller "-" knappen är hit på fjärrkontrollen, champinjonen roterar åt motsatt håll och ett frågetecken visas på matrisen. Exempelkod ovan visar processen för den "-"-knappen trycks, och koden för den "+" är nästan identiska.
om (results.value == 3584887633) {//If strömbrytaren trycks en regnbåge lyser upp
colorWipe (remsa. Color(Brightness * 255, 0, 0), 5); Röd
colorWipe (remsa. Color(0, Brightness * 255, 0), 5); Grön
colorWipe (remsa. Color(0, 0, Brightness * 255), 5); Blå
Rainbow(5);
rainbowCycle(5);
}
irrecv.Resume(); Ta emot nästa värde från IR-Sensor
}
matrix.fillScreen(0); Om ingen ingång på fjärrkontrollen, rensa matrix skärmen
matrix.setCursor (x, 0); Anger markörens position till variabeln 'x'
Matrix.Print(F("make")); Skriver ut ordet "Göra" i matrisen
om (--x <-36) {//Cycles markörens position att göra texten verkar rulla
x = matrix.width();
om (++ passera > = 3) passera = 0; Cykler genom tre färger för text visas
matrix.setTextColor(colors[pass]);
}
Matrix.show(); Skriver ut texten till matris
Delay(100); Upprättar en fördröjning
}
}
När strömbrytaren trycks en regnbåge visas och växlar mellan flera färger och mönster. Denna process, ordet "gör" sedan rullar över skärmen i roterande färger om en annan knapp trycker på fjärrkontrollen. Om strömbrytaren slås igen upprepas rainbow displayen. Denna process upprepas på obestämd tid så länge Arduino powered.
Koden nedan är funktioner som kallas för att verkställa rainbow displayen som visas när du trycker på strömbrytaren.
Fylla prickar en efter den andra med en färg
void colorWipe (uint32_t c, uint8_t vänta) {
för (uint16_t jag = 0; jag
{Ogiltig rainbow (uint8_t vänta)
uint16_t i, j.
för (j = 0; j < 256; j ++) {
för (jag = 0; jag
Något annorlunda, detta gör regnbågen jämnt fördelat i hela
void rainbowCycle (uint8_t vänta) {
uint16_t i, j.
för (j = 0; j < 256 * 5; j ++) {/ / 5 cykler av alla färger på hjul
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, hjulet (((i * 256/strip.numPixels()) + j) & 255));
}
Strip.show();
Delay(Wait);
}
}
Ange ett värde 0 till 255 att få ett färgvärde.
Färgerna är en övergång r - g - b - tillbaka till r.
uint32_t hjul (byte WheelPos) {
IF(WheelPos < 85) {
returnera strip. Färg (ljusstyrka * WheelPos * 3, ljusstyrka * (255 - WheelPos * 3), 0);
}
annat if(WheelPos < 170) {
WheelPos-= 85.
returnera strip. Färg (ljusstyrka * (255 - WheelPos * 3), 0, ljusstyrka * WheelPos * 3);
}
annat {
WheelPos-= 170;
returnera strip. Färg (0, ljusstyrka * WheelPos * 3, ljusstyrka * (255 - WheelPos * 3));
}
}