Digital LED blomma (7 / 9 steg)

Steg 7: Fler sekvenser



Vi har en serie som börjar på stift 3 och lyser upp varje LED genom stift 10, sedan börjar på pin 3 igen. Antar att du ville lysdioderna att lysa i sekvens och returnera motsatt riktning? Vi kan lägga denna bordtennis effekt genom att lägga en annan slinga efter den första öglan och gör här en räkna ner.

för (jag = 7; jag > = 0; i--) {

digitalWrite (posPins [i], hög);
delay_(t_delay);
digitalWrite (posPins [i], låg);
Delay(t_delay);

}

Nu har vi två sekvenser, så vår andra ordnar ping-pongs genom räknar sedan räknar ner. Hur vi väljer var och en när knappen trycks, är att välja dem från en lista med sekvenser med uttrycket "switch".

Switch-sats används en variabel, som vi, den jämför värdet för den variabeln till en uppsättning värden, som flera villkor uttalanden, om villkoret är uppfyllt det utför de uttalanden som är omfattas av case-sats. Det sker i följande form:

Switch(Variable) {

fall 1:
koduttryck
bryta;

fall 2:
koduttryck
bryta;

standard:
koduttryck
bryta;

}

Switch-sats är gått en variabel, sedan värdet för den variabeln kontrolleras mot värdena för varje case-sats, kommer den sedan att köra kod uttalanden inom ramen för den fall utvärderingen och dess avslutande avbrott;.

När vi har ett sätt att köra olika sekvenser, behöver vi några sätt att ta emot indata från användaren att ändra staterna; Det är där knappen kommer in.

Vi har fäst en knapp till stift 11. Knappen är i ett normalt öppen stift 11 är knuten till marken genom en strömbegränsande motstånd på 10K ohm. När knappen trycks, det binder stift 11, till V ++ som är den + 5V som tillhandahålls av den Mini power regulator. Vägen kommer att vara från V ++ till stift 11 och inte genom resistorn till marken när knappen trycks eftersom vägen mellan + 5V och jord kommer att vara minsta motståndets väg.

När knappen trycks och vi läser att det finns en hög på stift 11, vi lägger till en till variabeln sekvens. Efter att vi ökar värdet för variabeln sekvens, kontrollerar vi för att se till att dess värde inte är större än antalet sekvenser (fall uttalanden) vi har. Om det är större, återställa vi det om du vill referera det första case-uttrycket, börja sekvenserna om.

Obs: Jag använder inte den standard case-sats så det finns uttalanden inom dess räckvidd, så det gör inget annat än slutet med en break-sats.

Nu för att sätta ihop allt, har följande kod två sekvenser, först är den linjära sekvensen som vi började med och andra är bordtennis sekvensen.

/ * Blomma LED
* Skriven av Mark S. Drummond, (Gravity Boy) 2009
* Du är fri att använda, distribuera, modifiera, denna kod.
* Någon kredit skulle uppskattas
*

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

int maxLED = 8;
int maxSequence = 6;
int seqButton = 11;
int sekvens = 1;
int buttonVal = låg;
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() initiering funktion, ordet "void" före funktionsnamnet betyder att funktionen inte returnera ett värde. */

void setup() {
Serial.BEGIN(9600);
pinMode (negPin, produktionen);
digitalWrite (negPin, låg);

för (jag = 0; jag < maxLED; i ++) {
pinMode (posPins [i], produktionen);
digitalWrite (posPins [i], låg);
}
}

/ * Detta är den viktigaste loopen efter alla variabler deklareras och setup() körs, denna funktion kommer att slinga om och om igen. */

void loop() {

buttonVal = digitalRead(seqButton);

IF(buttonVal == High) {/ / läsa pin värde och kontrollera om hög
sekvensen ++; ökningsvärdet sekvens
Delay(t_delay * 10); STOP-knappen från inspelningen
flera pressar

om (sekvens > maxSequence) {sekvens = 1;}
}

Växla (sekvens) {

fall 1: //straight sekvens

för (jag = 0; jag < maxLED; i ++) {
digitalWrite (posPins [i], hög);
Delay(t_delay);
digitalWrite (posPins [i], låg);
Delay(t_delay);
}
bryta;
fall 2: //Ping pong

riktning framåt
för (jag = 0; jag < maxLED; i ++) {
digitalWrite (posPins [i], hög);
Delay(t_delay);
digitalWrite (posPins [i], låg);
Delay(t_delay);
}
omvänd riktning

för (jag = (maxLED - 1); Jag > = 0; i--) {/ / vi räknar till noll, totalt - 1
digitalWrite (posPins [i], hög);
Delay(t_delay);
digitalWrite (posPins [i], låg);
Delay(t_delay);
}
bryta;
fall 3: / / alla andra växla

t_delay = 60.

för (jag = 0; jag < = maxLED; i ++) {
digitalWrite (posPins [i], t);
Delay(t_delay);
digitalWrite (posPins [i], låg);
Delay(t_delay);

Toggle t
om (t == 0) {
t = 1;
}
annat {
t = 0;
}
}

t_delay = 30.
bryta;
fall 4: / / denna sekvens tänds lysdioderna från centrum ut

p_offset = 4;
n_offset = 3;

för (jag = 0; jag < (maxLED/2); i ++) {//start på center och räkningen till ändarna
digitalWrite (posPins [p_offset], hög);
digitalWrite (posPins [n_offset], hög);
Delay(t_delay);
digitalWrite (posPins [p_offset], låg);
digitalWrite (posPins [n_offset], låg);
Delay(t_delay);

++ p_offset; lätta dem i en riktning
--n_offset; medan belysning dem i den andra riktningen
}

bryta;

fall 5: / / random blinkande lysdioder

för (jag = 0; jag < maxLED; i ++) {

srand(rand()); Ställa in utsäde med hjälp av funktionen slump
int randomNumber = (rand()%maxLED); slumptal mellan 0 och maxLEDs
digitalWrite (posPins [randomNumber], hög);
Delay(t_delay/4); fart upp förseningen så att det skimrar
digitalWrite (posPins [randomNumber], låg);
Delay(t_delay/4);
}

bryta;

mål 6: / / start snabbt och avsluta långsamt, kan använda den här med olika mönster.

för (jag = 0; jag < maxLED; i ++) {

digitalWrite (posPins [i], hög);
Delay((t_delay/2) + (jag * tSTEP));
digitalWrite (posPins [i], låg);
Delay(t_delay);
}

bryta;

fall 7: //Binary, inkluderar i binär 8 lysdioder

Använd detta när du har rätt motstånd för varje LED

för (jag = 0; jag < 255; i ++) {

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

NUM = i.
Temp = num;

medan (num > 0) {

++ motverka;
om (num % 2 == 0) {binNum [index] = 0;}
annat {binNum [index] = 1;}

NUM = num / 2;
--index;
} / / efter medan loop bryter, resten av binNum [] är fylld med 0s (MSB -> LSB)

/ * Förlåta infogade format för den för loopar, när du vet dem, de är ett lätt läsa * /

för (t = 0; t < (maxLED - counter); t ++) {binNum [t] = 0;}

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

Delay(t_delay/2);

för (t = 0; t < maxLED - 1; t ++) {digitalWrite (posPins [t], låg);}

}
Delay(t_delay * 10);

bryta;

standard:
bryta;

} / / end switch-sats

} / / end huvudsakliga loop() funktion

Kopiera koden och när programmet startar, tryck på knappen Ändra den linjära sekvensen till bordtennis sekvensen. Vi kan fortsätta att lägga till nya sekvenser genom att lägga till fler fall uttalanden innan den standard case-sats. Switch-sats kan användas för att testa ett värde från en int, röding eller Boolean. Du kan även kapsla programsatsen switch om du ville lägga till några inställda hastigheten variationer i en sekvens.

Det finns en annan tillsats kodblock i början av den huvudsakliga loop() funktionen och innan programsatsen Switch; Detta används för att läsa värdet på knappen och öka våra sekvens variabel, det testar också variabeln för att vara säker på att det inom spänna innan programsatsen Switch; om variabeln är högre än antalet fall uttalanden, återställa till 1, som är den första case-satsen.

buttonVal = digitalRead(seqButton); Läs knappläge

IF(buttonVal == High) {/ / läsa pin värde och kontrollera om hög
sekvensen ++; ökningsvärdet sekvens
Delay(t_delay * 10); STOP-knappen från inspelningen
flera pressar

om (sekvens > maxSequence || sekvens < 0) {sekvens = 1;}
}

Förseningen var satt att driva tiden till 1000 ms eller 1 sekund att redovisa den! hastighet av människan trycka på knappen. Observera att jag till andra villkorssatsen sekvens < 0 i exemplet ovan och inte i koden. De två barerna || är ett booleskt värde eller, så antingen uttalande att vara sant skulle uppfylla villkoret och fastställa sekvens = 1. Om den första sekvens > 2 är sant, kommer då sekvens < 0 inte ens att utvärderas.

Ett knep för att lägga till fler sekvenser är att ställa sekvens rätt efter den knapp checken i början av den huvudsakliga loop(), ange värdet för sekvens för att referera till fallet du arbetar på. Om du arbetar på en ny sekvens för fall 3: och du vill köra testet, men vill inte trycka på knappen varje gång för att se sekvensen du arbetar på, sedan använda brute force som visas nedan.

buttonVal = digitalRead(seqButton);

IF(buttonVal == High) {
sekvensen ++;
Delay(t_delay * 10);

om (sekvens > maxSequence) {sekvens = 1;}
}

sekvens = 3; åsidosätta koden ovan och tvinga den sekvens som vi arbetar med

Detta anger uttryckligen värdet av sekvens 3 efter knappen läst. Jag kommer att omfatta extra sekvenser för blomman i PDF-filen i slutet av detta Instructable. Jag var leka med de analoga värdena av analoga stiften att några av lysdioderna är bundna till, med spridning och en långsam tona in och ut, var en fin effekt. Ramp upp och ner kan åstadkommas med en för loop och öka och minska värden mellan + 0V och + 5V.

Se Steg
Relaterade Ämnen

Blacklight UV LED blomma krona

Ja, de är svarta ljus i ett pannband.Dessa UV LED blomma kronor kommer att göra någon svart ljus tillbehör du är klädd glöd!De fungerar också bra med Blacklight reactive kroppsfärg.(Ytterligare svart ljus användes för att förstärka effekten av svart...

Digital LED Voltmeter till RC bil

Steg 1: Digitala voltmetern Kommer du nead en 2 wier digital led voltmeter. Kan du choos hur stor den är men jag har 3 digitalsSteg 2: Conecting Det kommer att se ut så härSteg 3: Hål för Digita voltmetern Göra ett hål i plattan där voltmetern kommer...

Permanent Digital LED House Holiday belysning

Digitalt adresserbara RGB LED strips blir mer tillgängliga och billigare via hobby elektronikbutiker och direkt från fabriker i Kina, så det är dags att uppdatera din holiday house belysning!Detta projekt använder en Arduino för att styra remsor av d...

LED blomma vykort för barn.

Detta projekt är ett utmärkt tillfälle att introducera yngre barn till elektronik! Bygg din egen LED blomma vykort.Du behöver:en LED - jag använder en klassisk 5mm entejp - min är 5mm bredett 3V mynt batterien PIN-kod, sax, lim och dekoration materia...

Lätt LED blomma för Halloween

det är nästan Halloween!Kan du lätt LED blomma i sista minuterna för mardröm part :)Tekniken för att göra kronblad är samma som maneter.Denna gång jag använder kemiska satin och chiffong. Dessa är också mycket brandfarligt! Snälla ta hand om det!Steg...

DIY ljuskrona - LED blomma blommar (kontrolleras med Arduino)

detta är en steg för steg på hur jag gjorde LED blomma blommar. Jag gjorde 30 av dessa för att skapa en ljuskrona.Detta var en workshop som hölls på Edge i Brisbane som ingår i State Library of Queensland.Du kan driva ditt ljus från ett batteri men m...

74HC595 digital LED visas baserat på Arduino (koden försynt)

The chefsingenjör av ICStation R & D avdelning Jack använder ICStation UNO R3 kompatibel med Arduino att framgångsrikt göra 74HC595 driva fyra digitala LED-displayen. Vi kommer att dela den Schematiskt diagram, kopplingsschema, att göra stegen, Hämta...

Wearable LED blomma brosch

Detta projekt skapades för YuKonstruct Första bygga natt.YuKonstruct är den första makerspace i Kanadas norra. Vårt uppdrag är att ge tillgång till delade utrymme, kvalitetsverktyg, tillgänglig expertis och en kollaborativ miljö att hjälpa beslutsfat...

Hur man gör en Färgskiftande LED blomma pannband

detta är en liknande idé till min glödande blomma pannband (som kan hittas här:) men detta kräver mer lödning och ger mer frihet.Steg 1: Materiels För detta projekt behöver du:-en falsk blomma (eller mer, kan du använda ett gäng om du vill. Större oc...

Snabb Digital LED Jack-o-lantern ljus

Det finns många bra Arduino + LED Pumpkin projekt. Den här är avsedd att vara mycket lätt att göra och kan vara en bra utgångspunkt för andra projekt. Endast tre lödning anslutningar och en mycket kort program!Här har en grundläggande Arduino Uno eft...

Digital Led Strip Christmas Tree

Led Strip WeihnachtsbaumspiraleSteg 1: Material Ich habe beim discounteren diese Weihnachtsspirale für etwa 8€ gekauft. 3 meter digitalen LED Strip habe ich noch als resten gehabt. Den digitalen Strip gab es bei Aldi 5m für 35€. Zuletzt noch etwas Te...

Salt powered LED blomma

mycket enkel att göramin första instructable:)Steg 1: Delar som behövs:-aluminiumfolie-små kopparplåt-papper vävnad-plast halm-1 ledde 5 mm, 3.5v-origami lily - http://www.origami-instructions.com/origami-lily.html-kablar-nylon eller plastpåseSteg 2:...

Papper blomma med LED och Konduktiv tejp

Vad kan vara sötare än en ljus upp LED blomma? Gör din egen med Brun hund prylarKonduktiv tape kit.Steg 1: Verktyg och material För att göra LED blomman behöver du följande:VerktygSax och/eller X-acto knivTejp eller lim stickPenna för spårningMateria...

Bambu digital klocka

Du behöver följande delar för denna vackra klocka:-Arudino Mini Pro-digital RGB LED-Stripe (1m, 60 lysdioder)-Bambu pizza tallrik (32cm omkrets)-RealTimeClock modul för Arduino-3, 3v spänningsregulator (för RTC-modulen)Bara stick LED-Stripe runt pizz...

Lyser upp blomma Crown pannband för sommar musik festivaler, bröllop, speciella tillfällen

Lys upp natten med en vacker blommig LED pannband!Perfekt för bröllop, musikfestivaler, proms, kostymer och speciella tillfällen!Kit med allt du behöver för att göra egna ljus upp pannband finns nu tillgängliga i arkivet Wearables Workshop ! Redo att...

Disco LED Party Cup!

Välkommen till min outgrundlig för "Disco LED partiet Cup!" det på fester eller lägga till lite spänning i en lugn natt i! Botten "puck" fästs på botten av en plast parti kopp och lyser upp till beat!Steg 1: ReservdelslistaFörsta du be...

LED uppgradering för hög wattal kyrkan hängande lampor

Kyrkor och hus för tillbedjan kan presentera ett antal intressanta problem som du försöker att göra dem energieffektiva. Ett problem vi står inför i grönare min historiska kyrka, Grace biskopliga i Medford, MA, var att hitta en bra kvalitet energi ef...

Hur man gör en blomma Wrap på rätt sätt.

Material behövs inkluderar:-Cellofan - helst klart, du behöver ungefär en 1,5' av 2' rektangel-Band - i en färg som komplimanger din blomma, du kommer behöver ungefär en 16" lappar-Sax - dessa måste vara kraftig nog att klippa stjälkarna av blommor o...

Ingen lödning LED Cube

Efter att bygga en 8 x 8 x 8 LED cube och spendera dagar lödning, undrade jag om jag bara kunde använda digital LED slingor att göra en och hoppa över alla lödning. Det fungerade, och detta projekt visar ett sätt att göra en 5 x 5 x 5 Digital RGB LED...