Digitale LED Flower (7 / 9 stap)

Stap 7: Meer sequenties


We hebben een reeks die begint op pin 3 en brandt de LED via pin 10, dan begint op pin 3 opnieuw. Stel dat u de LEDs licht in de juiste volgorde en terugsturen van de tegenovergestelde richting gezocht? We kunnen dit ping-pong-effect toevoegen door een andere lus toe te voegen na de eerste lus, en dit één telling naar beneden.

voor (ik = 7; ik > = 0; i--) {}

digitalWrite (posPins [i], hoge);
delay_(t_delay);
digitalWrite (posPins [i], laag);
delay(t_delay);

}

Nu hebben we twee reeksen, zodat onze tweede volgnummer ping-pongs door tellen vervolgens aftellen. Hoe selecteren we elkaar wanneer de knop wordt ingedrukt, is om ze te selecteren uit een lijst met reeksen met behulp van de instructie "switch".

De instructie Switch maakt gebruik van een variabele, die we ingesteld, vergelijkt de waarde van die variabele naar een verzameling waarden, zoals meerdere instructies voor een voorwaarde, als voorwaarde wordt voldaan het worden de instructies die binnen het toepassingsgebied van de case-instructie uitgevoerd. Het heeft de volgende vorm:

switch(variable) {}

Case 1:
code-instructies
breken;

Case 2:
code-instructies
breken;

standaard:
code-instructies
breken;

}

De instructie Switch een variabele wordt doorgegeven, dan de waarde van die variabele wordt vergeleken met de waarden voor elk case-statement, dat het zal dan het uitvoeren van de code-instructies binnen de werkingssfeer van die zaak evaluatie en haar afsluitende pauze;.

Zodra we hebben een weg van het runnen van verschillende reeksen, moeten we enkele manier van het ontvangen van gebruikersinvoer om te veranderen van de Staten; Dit is waar de knop komt.

We hebben een knop aangesloten op pin 11. De knop is in een normaal open staat, en pin 11 is gebonden aan de grond door middel van een weerstand van de huidige beperking van 10K Ohm. Wanneer de knop wordt ingedrukt, bindt pin 11, aan V ++ oftewel de + 5V geboden door de Mini's macht regulator. Het pad zullen vanaf V ++ aan op pin 11 en niet via de weerstand aan de grond wanneer de knop is ingedrukt omdat het pad tussen de + 5V en ground zullen het pad van de minste weerstand.

Zodra de knop wordt ingedrukt en we lezen dat er is een hoog op pin 11, toevoegen we aan de reeks-variabele. Nadat we de variabele volgorde verhogen, controleren wij om ervoor te zorgen dat de waarde niet meer bedraagt dan het aantal sequenties (case-statements) we hebben. Als het groter is, wij opnieuw instellen als u verwijst naar de eerste case-statement, de sequenties helemaal beginnen.

Opmerking: Ik ben niet met behulp van de standaard case-statement dus er verklaringen binnen haar werkingssfeer, zijn dus het doet niets maar eindigen met een instructie break.

Nu de volgende code om het allemaal samen, twee reeksen, de eerste is de lineaire opeenvolging die we zijn begonnen met en de tweede is de volgorde van de ping-pong.

/ * Bloem LED
* Geschreven door Mark S. Drummond, (Ernst Boy) 2009
* U bent vrij om te gebruiken, te verspreiden, te wijzigen, deze code.
* Ieder krediet zou worden gewaardeerd
*

int num = 255;
int. temp = 0;
int binNum [8];

int maxLED = 8;
int maxSequence = 6;
int seqButton = 11;
int reeks = 1;
int buttonVal = laag;
int negPin = 2;
int posPins [] = {3,4,5,6,7,8,9,10};

int i, t;
int t_delay = 100;
int p_offset = 0;
int n_offset = 0;
int tSTEP = 50;

/ * Setup initialisatie functie, het woord "ongeldig" voor de functienaam betekent dat de functie geen waarde retourneert. */

VOID Setup {}
Serial.begin(9600);
pinMode (negPin, OUTPUT);
digitalWrite (negPin, laag);

voor (ik = 0; ik < maxLED; i ++) {}
pinMode (posPins [i], OUTPUT);
digitalWrite (posPins [i], laag);
}
}

/ * Dit is de hoofdlus nadat alle variabelen worden gedeclareerd en Setup wordt uitgevoerd, deze functie wordt herhaald over en voorbij. */

void loop {}

buttonVal = digitalRead(seqButton);

if(buttonVal == High) {/ / Lees de pin waarde en controleer of hoge
reeks ++;                   Increment reeks waarde
delay(t_delay * 10);        De stopknop van opname
meerdere persen

Als (reeks > maxSequence) {reeks = 1;}
}

schakelaar (volgorde) {}

geval 1: //straight-reeks

voor (ik = 0; ik < maxLED; i ++) {}
digitalWrite (posPins [i], hoge);
delay(t_delay);
digitalWrite (posPins [i], laag);
delay(t_delay);
}
breken;
geval 2: //Ping pong

voorwaartse richting
voor (ik = 0; ik < maxLED; i ++) {}
digitalWrite (posPins [i], hoge);
delay(t_delay);
digitalWrite (posPins [i], laag);
delay(t_delay);
}
richting omkeren

voor (ik = (maxLED - 1); Ik > = 0; i--) {/ / Wij zijn aftellen tot nul, totale - 1
digitalWrite (posPins [i], hoge);
delay(t_delay);
digitalWrite (posPins [i], laag);
delay(t_delay);
}
breken;
Case 3: / / elke andere in-/ uitschakelen


t_delay = 60;

voor (ik = 0; ik < = maxLED; i ++) {}
digitalWrite (posPins [i], t);
delay(t_delay);
digitalWrite (posPins [i], laag);
delay(t_delay);

Toggle t
Als (t == 0) {}
t = 1;
}
else {}
t = 0;
}
}

t_delay = 30;
breken;
geval 4: / / deze reeks zal oplichten van de LEDs vanuit Midden

p_offset = 4;
n_offset = 3;

voor (ik = 0; ik < (maxLED/2); i ++) {//start bij het center en graaf aan uiteinden
digitalWrite (posPins [p_offset], hoge);
digitalWrite (posPins [n_offset], hoge);
delay(t_delay);
digitalWrite (posPins [p_offset], laag);
digitalWrite (posPins [n_offset], laag);
delay(t_delay);

++ p_offset;  licht hen in één richting
--n_offset;  terwijl ze in de andere richting verlichting
}

breken;

geval 5: / / willekeurige knipperende LEDs

voor (ik = 0; ik < maxLED; i ++) {}

srand(rand()); Instellen van het zaad met behulp van de functie ASELECT
int randomNumber = (rand()%maxLED);  willekeurig getal tussen 0 en maxLEDs
digitalWrite (posPins [randomNumber], hoge);
delay(t_delay/4);     versnellen de vertraging zodat het sparkles
digitalWrite (posPins [randomNumber], laag);
delay(t_delay/4);
}

breken;

kast 6: / / snel starten en eindigen langzaam, kunt u dit met verschillende patronen.

voor (ik = 0; ik < maxLED; i ++) {}

digitalWrite (posPins [i], hoge);
delay((t_delay/2) + (ik * tSTEP));
digitalWrite (posPins [i], laag);
delay(t_delay);
}

breken;

geval 7: //Binary teller, telt in binaire op 8 LEDs

Zorg ervoor dat u dit wanneer u de juiste weerstand voor elke LED hebt

voor (ik = 0; ik < 255; i ++) {}

int counter = 0;
int index = maxLED - 1;

num = i;
Temp = num;

terwijl (num > 0) {}

++ bestrijden;
Als (num % 2 == 0) {binNum [index] = 0;}
else {binNum [index] = 1;}

num = num / 2;
--index;
} / / na terwijl lus breekt, de rest van binNum [] is gevuld met 0s (MSB -> LSB)

/ * Vergeef het inline-formaat voor de for-lussen, als je eenmaal hen weet, zij zijn een makkelijk te lezen * /

voor (t = 0; t < (maxLED - teller); t ++) {binNum [t] = 0;}

voor (t = 0; t < maxLED -1; t ++) {digitalWrite (posPins [t], binNum[t]);}

delay(t_delay/2);

voor (t = 0; t < maxLED - 1; t ++) {digitalWrite (posPins [t], laag);}

}
delay(t_delay * 10);

breken;

standaard:
breken;

} / / einde van de instructie switch

} / / einde van belangrijkste loop functie

Kopieer de code, en zodra het programma wordt gestart, drukt u op de knop verandert de lineaire volgorde in het ping-pong-reeks. We kunnen houden toe te voegen nieuwe reeksen gegenereerd door het toevoegen van meer case-statements voordat de standaard case-statement. De instructie switch kan worden gebruikt om een waarde uit een int, char of Boolean te testen. U kunt zelfs de schakelaarverklaring nesten wanneer u wilden voor toevoegen sommige variaties van de ingestelde snelheid in een reeks.

Er is een andere toegevoegde blok van code aan het begin van de belangrijkste loop-functie en vóór de instructie Switch; Dit wordt gebruikt om de waarde van de knop lezen en verhogen onze reeks-variabele, het tests ook de variabele om te controleren of dat het zich binnen het bereik alvorens de schakelaarverklaring; Als de variabele hoger is dan het aantal case-statements, teruggezet op 1, dat de eerste case-statement is.

buttonVal = digitalRead(seqButton);    Lees knoptoestand

if(buttonVal == High) {/ / Lees de pin waarde en controleer of hoge
reeks ++;                                         Increment reeks waarde
delay(t_delay * 10);                              De stopknop van opname
meerdere persen

Als (reeks > maxSequence ||  volgnummer < 0) {reeks = 1;}
}

De vertraging was ingesteld op zet de tijd op 1000 ms of 1 seconde voor de! snelheid van de mens door de knop te drukken. Merk op dat ik de tweede voorwaardelijke test voor volgorde < 0 toegevoegd in het bovenstaande voorbeeld, en niet in de code. De twee bars || is een Booleaans of, zodat waar verklaring zou voldoen aan de voorwaarde en volgorde = 1. Als de eerste reeks > 2 waar is, zal vervolgens volgorde < 0 niet zelfs worden geëvalueerd.

Een truc om toe te voegen meer sequenties is volgorde direct na de knop controle instellen aan het begin van de belangrijkste loop, stelt u de waarde van sequentie om te verwijzen naar het geval dat je bezig bent. Als u aan een nieuwe reeks voor case 3 werkt: en je test wilt uitvoeren, maar wil niet te druk op de knop elke keer om te zien de volgorde je bezig bent, gebruik dan brute kracht zoals hieronder getoond.

buttonVal = digitalRead(seqButton);

if(buttonVal == High) {}
reeks ++;
delay(t_delay * 10);

Als (reeks > maxSequence) {reeks = 1;}
}

volgorde = 3;   de bovenstaande code overschrijven en dwingen de volgorde die we werken aan

Dit zal de waarde van de reeks expliciet ingesteld op 3, nadat de knop lezen. Ik zal extra sequenties die zijn ontworpen voor de bloem in het PDF-bestand aan het einde van dit Instructable omvatten. Ik was messing rond met de analoge waarden van de analoge pinnen dat sommige van de LED's zijn gebonden aan, met de verspreiding en een langzame fade in en uit, een leuk effect was. Ramping omhoog en omlaag kan worden bereikt met een for loop en verhogen en afnemende tussen waarden + 0V en + 5V.

Gerelateerde Artikelen

74HC595 digitale LED weergeven op basis van Arduino (Code geboden)

74HC595 digitale LED weergeven op basis van Arduino (Code geboden)

de Chief Engineer van de ICStation R & D afdeling Jack ICStation UNO R3 compatibel met Arduino gebruikt om met succes de 74HC595 schijf vier digitale LED-display. Wij delen de schematisch diagram, bedradingsschema, stappen, Diagram en ook de code van
Permanente digitale LED huis vakantie verlichting

Permanente digitale LED huis vakantie verlichting

Digitaal adresseerbare RGB LED strips zijn steeds meer beschikbaar en goedkoper door hobbyist elektronicawinkels en direct uit de fabrieken in China, dus het is tijd om te werken van de verlichting van uw vakantie huis!Dit project maakt gebruik van e
LED flower briefkaart voor kinderen.

LED flower briefkaart voor kinderen.

Dit project is een geweldige gelegenheid om jonge kinderen kennismaken met elektronica! Bouw uw eigen LED flower briefkaart.U moet:een LED - ik gebruik een klassieke 5mm eenkoper tape - mijne is 5mm breedeen batterij 3V munteen pin, schaar, lijm en d
DIY kroonluchter - LED Flower blossoms (gecontroleerd met Arduino)

DIY kroonluchter - LED Flower blossoms (gecontroleerd met Arduino)

dit is een stap voor stap over hoe ik de LED Flower Blossoms gemaakt. Ik maakte 30 hiervan aan het maken van een kroonluchter.Dit was een workshop gehouden in The Edge in Brisbane, dat deel van de State Library van Queensland uitmaakt.U kunt de macht
Digitale LED Voltmeter aan RC auto

Digitale LED Voltmeter aan RC auto

Stap 1: De digitale Voltmeter u zal iemand een 2 wier digitale led voltmeter. U kunt choos hoe groot het is maar ik heb 3 digitalsStap 2: De Conecting It's gonna uitzienStap 3: Gat voor de Digita Voltmeter Maak een gat in de plaat waar de voltmeter i
Snelle digitale LED Jack-o-lantaarn licht

Snelle digitale LED Jack-o-lantaarn licht

Er zijn vele grote Arduino + LED pompoen projecten. Deze is ontworpen om zeer eenvoudig te maken en kan worden een groot uitgangspunt voor andere projecten. Slechts drie solderen verbindingen en een zeer korte programma!Deze beschikt over een fundame
Maak een LED Flower

Maak een LED Flower

een bloem dat wanneer zetten in de bodem oplicht. Het komt ook tot leven wanneer zetten in water, of door gewoon beide blote uiteinden van de "stam" te houden. Zo worden de leds bloem leds, zogezegd. En als de leds powerleds werden, dan zou dit
LED Flower Crown

LED Flower Crown

Ik hou van maken en dragen hoofddeksels. Uitstekende hoofd versiering maakt u zich niet te stuiten. Het is gemakkelijk om te begrijpen waarom gevestigde macht komt vaak met een symbolische zendspoel. De juiste zendspoel kan vaak echt definiëren een b
Zwart licht UV LED Flower kroon

Zwart licht UV LED Flower kroon

Ja, dat zijn zwarte lichten in een hoofdband.Deze UV LED bloem kronen zal dragen gloed geen zwart licht-accessoires die je bent!Ze werken ook groot met zwart licht reactieve lichaam verf.(Extra zwarte lichten werden gebruikt om het effect van de zwar
Digitale Led Strip Christmas Tree

Digitale Led Strip Christmas Tree

Led Strip WeihnachtsbaumspiraleStap 1: materiaal Ich habe beim Discounter diese Weihnachtsspirale für etwa 8€ gekauft. 3 meter LED-Strip habe ich noch digitalen als Rest gehabt. Den digitalen Strip gab es bei Aldi 5m für 35€. Zuletzt noch etwas Tesa
Zout aangedreven LED flower

Zout aangedreven LED flower

heel eenvoudig te makenmijn eerste instructable:)Stap 1: Onderdelen nodig:-aluminiumfolie-kleine koperen platen-weefsel papier-plastic stro-1 LED 5 mm, 3.5v-origami lily - http://www.origami-instructions.com/origami-lily.html-draden-nylon of plastic
Hoe maak je een kleur veranderende LED flower hoofdband

Hoe maak je een kleur veranderende LED flower hoofdband

dit is een soortgelijk idee om mijn gloeiende bloem hoofdband (die kan hier worden gevonden:) maar dit vereist meer solderen en geeft meer vrijheid.Stap 1: Materiels Voor dit project, moet je:-een nep bloem (of meer, kunt u een bos als u wilt.  Grote
LED Flower Light

LED Flower Light

mijn dochter houdt van bloemen en is gefascineerd door lichten, dus ik dit samen voor haar gooide. Er is allerlei ruimte voor aanpassing.Ik gebruikte:Een kunstmatige bloem (gekocht op een tweedehands winkel voor 20 cent)draadLED 'sVloeide Tape (groen
Geen solderen LED Cube

Geen solderen LED Cube

Na een 8 x 8 x 8 LED kubus te bouwen en de uitgaven dagen solderen, ik vroeg me af als ik enkel digitale LED strengen gebruiken kon te maken en sla alle het solderen. Het werkte, en dit project toont één manier om een 5 x 5 x 5 digitale RGB LED kubus