projektas_nr.4
Skirtumai
Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
| Kitas pataisymas | Previous revision | ||
| projektas_nr.4 [2015/10/25 17:48] – sukurtas 193.219.47.27 | projektas_nr.4 [2015/12/15 00:37] (esamas) – simonas | ||
|---|---|---|---|
| Linija 1: | Linija 1: | ||
| - | **Projektas Nr. 4. Daugiau šviesos diodų** | + | ====== |
| + | |||
| + | **Ką darome:** | ||
| + | Mes privertėme vieną LED'ą mirksėti, dabar laikas padidinti riziką. Sujunkime 8. Taip pat turėsime galimybę išplėsti „Arduino“ sukurdami įvairius šviesos tęsinius. Ši grandinė taip pat puikiai tinka išbandyti savo programas ir pajusti, kaip „Arduino“ veikia. | ||
| + | |||
| + | Taip pat prie LED'ų kontroliavimo mes pradedame žiūrėti į kelis paprastus programavimo metodus, kad išlaikytume programas mažas. | ||
| + | |||
| + | for() loops – kai norima paleisti kodą kelis kartus. | ||
| + | arrays[] – naudojama norint valdyti kintamuosius (grupę kintamųjų). | ||
| + | |||
| + | **Grandinės dalys:** | ||
| + | *CIRC-02 Surinkimo lapas x1 | ||
| + | *2 kontaktų kištukas x4 | ||
| + | *5mm žalias LED x8 | ||
| + | *Laidas x3 | ||
| + | *560 Ohm Resistorius (Žalias-mėlynas-rudas) x8 | ||
| + | |||
| + | **Principinė schema** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Surinkimo šablonas** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Surinkta grandinė** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Šaltiniai** | ||
| + | |||
| + | [[http:// | ||
| + | [[http:// | ||
| + | |||
| + | **Kodas:** Kodą galima nukopijuoti į tuščią „Arduino“ sketch' | ||
| + | |||
| + | < | ||
| + | |||
| + | /* | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | * | ||
| + | * Daugiau apie šią grandinę žiūrėkite http:// | ||
| + | * | ||
| + | */ | ||
| + | |||
| + | //LED Pin Variables | ||
| + | int ledPins[] = {2, | ||
| + | // | ||
| + | // | ||
| + | //o ledPins[7] yra lygus 9 | ||
| + | |||
| + | /* | ||
| + | * setup() - ši funkcija pradeda veikti, kai yra įjungiamas „Arduino“ | ||
| + | * trys kaiščiai naudojami išvestims | ||
| + | */ | ||
| + | void setup() | ||
| + | { | ||
| + | |||
| + | // | ||
| + | for(int i = 0; i < 8; i++){ // | ||
| + | pinMode(ledPins[i], | ||
| + | } //the code this replaces is below | ||
| + | |||
| + | /* (commented code will not run) | ||
| + | * these are the lines replaced by the for loop above they do exactly the | ||
| + | * same thing the one above just uses less typing | ||
| + | pinMode(ledPins[0], | ||
| + | pinMode(ledPins[1], | ||
| + | pinMode(ledPins[2], | ||
| + | pinMode(ledPins[3], | ||
| + | pinMode(ledPins[4], | ||
| + | pinMode(ledPins[5], | ||
| + | pinMode(ledPins[6], | ||
| + | pinMode(ledPins[7], | ||
| + | (end of commented code)*/ | ||
| + | } | ||
| + | |||
| + | |||
| + | /* | ||
| + | * loop() - this function will start after setup finishes and then repeat | ||
| + | * we call a function called oneAfterAnother(). if you would like a different behaviour | ||
| + | * uncomment (delete the two slashes) one of the other lines | ||
| + | */ | ||
| + | void loop() | ||
| + | { | ||
| + | oneAfterAnotherNoLoop(); | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | //on turning the | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | //in again | ||
| + | } | ||
| + | |||
| + | /* | ||
| + | * oneAfterAnotherNoLoop() - Will light one LED then delay for delayTime then light | ||
| + | * the next LED until all LEDs are on it will then turn them off one after another | ||
| + | * | ||
| + | * this does it without using a loop which makes for a lot of typing. | ||
| + | * oneOnAtATimeLoop() does exactly the same thing with less typing | ||
| + | */ | ||
| + | void oneAfterAnotherNoLoop(){ | ||
| + | int delayTime = 100; //the time (in milliseconds) to pause between LEDs | ||
| + | // | ||
| + | digitalWrite(ledPins[0], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[1], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[2], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[3], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[4], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[5], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[6], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[7], | ||
| + | delay(delayTime); | ||
| + | |||
| + | //Turns Each LED Off | ||
| + | digitalWrite(ledPins[7], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[6], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[5], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[4], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[3], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[2], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[1], | ||
| + | delay(delayTime); | ||
| + | digitalWrite(ledPins[0], | ||
| + | delay(delayTime); | ||
| + | } | ||
| + | |||
| + | /* | ||
| + | * oneAfterAnotherLoop() - Will light one LED then delay for delayTime then light | ||
| + | * the next LED until all LEDs are on it will then turn them off one after another | ||
| + | * | ||
| + | * this does it using a loop which makes for a lot less typing. | ||
| + | * than oneOnAtATimeNoLoop() does exactly the same thing with less typing | ||
| + | */ | ||
| + | void oneAfterAnotherLoop(){ | ||
| + | int delayTime = 100; //the time (in milliseconds) to pause between LEDs | ||
| + | // | ||
| + | |||
| + | //Turn Each LED on one after another | ||
| + | for(int i = 0; i <= 7; i++){ | ||
| + | digitalWrite(ledPins[i], | ||
| + | delay(delayTime); | ||
| + | } //8 times the first time i will = 0 the final | ||
| + | // | ||
| + | |||
| + | //Turn Each LED off one after another | ||
| + | for(int i = 7; i >= 0; i--){ //same as above but rather than starting at 0 and counting u | ||
| + | //p | ||
| + | //we start at seven and count down | ||
| + | digitalWrite(ledPins[i], | ||
| + | delay(delayTime); | ||
| + | } //8 times the first time i will = 7 the final | ||
| + | // | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | /* | ||
| + | * oneOnAtATime() - Will light one LED then the next turning off all the others | ||
| + | */ | ||
| + | void oneOnAtATime(){ | ||
| + | int delayTime = 100; //the time (in milliseconds) to pause between LEDs | ||
| + | // | ||
| + | |||
| + | for(int i = 0; i <= 7; i++){ | ||
| + | int offLED = i - 1; //Calculate which LED was turned on last time through | ||
| + | if(i == 0) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will | ||
| + | offLED = 7; //turn on LED 2 and off LED 1) | ||
| + | } //however if i = 0 we don't want to turn of led -1 (doesn' | ||
| + | // | ||
| + | digitalWrite(ledPins[i], | ||
| + | digitalWrite(ledPins[offLED], | ||
| + | delay(delayTime); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | /* | ||
| + | * inAndOut() - This will turn on the two middle LEDs then the next two out | ||
| + | * making an in and out look | ||
| + | */ | ||
| + | void inAndOut(){ | ||
| + | int delayTime = 100; //the time (in milliseconds) to pause between LEDs | ||
| + | // | ||
| + | |||
| + | //runs the LEDs out from the middle | ||
| + | for(int i = 0; i <= 3; i++){ | ||
| + | int offLED = i - 1; //Calculate which LED was turned on last time through | ||
| + | if(i == 0) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will | ||
| + | offLED = 3; //turn on LED 2 and off LED 1) | ||
| + | } //however if i = 0 we don't want to turn of led -1 (doesn' | ||
| + | // | ||
| + | int onLED1 = 3 - i; // | ||
| + | // | ||
| + | //#0 when i = 3 | ||
| + | int onLED2 = 4 + i; // | ||
| + | // | ||
| + | //#7 when i = 3 | ||
| + | int offLED1 = 3 - offLED; //turns off the LED we turned on last time | ||
| + | int offLED2 = 4 + offLED; //turns off the LED we turned on last time | ||
| + | |||
| + | digitalWrite(ledPins[onLED1], | ||
| + | digitalWrite(ledPins[onLED2], | ||
| + | digitalWrite(ledPins[offLED1], | ||
| + | digitalWrite(ledPins[offLED2], | ||
| + | delay(delayTime); | ||
| + | } | ||
| + | |||
| + | //runs the LEDs into the middle | ||
| + | for(int i = 3; i >= 0; i--){ | ||
| + | int offLED = i + 1; //Calculate which LED was turned on last time through | ||
| + | if(i == 3) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will | ||
| + | offLED = 0; //turn on LED 2 and off LED 1) | ||
| + | } //however if i = 0 we don't want to turn of led -1 (doesn' | ||
| + | // | ||
| + | int onLED1 = 3 - i; // | ||
| + | // | ||
| + | //#0 when i = 3 | ||
| + | int onLED2 = 4 + i; // | ||
| + | // | ||
| + | //#7 when i = 3 | ||
| + | int offLED1 = 3 - offLED; //turns off the LED we turned on last time | ||
| + | int offLED2 = 4 + offLED; //turns off the LED we turned on last time | ||
| + | |||
| + | digitalWrite(ledPins[onLED1], | ||
| + | digitalWrite(ledPins[onLED2], | ||
| + | digitalWrite(ledPins[offLED1], | ||
| + | digitalWrite(ledPins[offLED2], | ||
| + | delay(delayTime); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Neveikia? Trys galimos išeitys: | ||
| + | *Kai kurie LED'ai neužsidega - Lengva įstatyti LED'ą ne ta puse. Patikrinkite neveikiančius LED'us ir įsitikinkite, | ||
| + | |||
| + | *Laidų klaida - jungiant 8 laidus lengva susipainioti. Dar kartą patikrinkite, | ||
| + | |||
| + | *Pradėti iš naujo - lengva įdėti laidą ne ten kur reikia. Viską ištraukite iš plokštės ir bandykite iš naujo - dažnai tai lengviausias būdas ištaisyti klaidą. | ||
| + | |||
| + | **Norite geriau?** | ||
| + | Pakeisti Loops: | ||
| + | loop() yra keturios eilutės. Paskutinės 3 prasideda dviem pasviraisiais brūkšniais, | ||
| + | |||
| + | < | ||
| + | // | ||
| + | | ||
| + | // | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | Įkėlę programą pastebime, kad niekas nepasikeitė. Galite pažiūrėti į dvi funkcijas, kiekviena kažką daro, bet naudoja skirtingus priėjimus. | ||
| + | |||
| + | **Kitos animacijos: | ||
| + | Pavargote nuo tos pačios animacijos? Tada pabandykite kitas dvi animacijas. Nukopijuokite jų eilutes ir įkelkite programą į lentelę ir mėgaukitės nauja animacija. (ištrinkite pasvyruosius brūkšnelius prieš 3 ir 4 eilutes) | ||
| + | |||
| + | **Savo paties sukurtos animacijos bandymas:** | ||
| + | Pažvelkite į įtrauktus kodus ir pradėkite po truputį juos keisti. Pagrindinis tikslas yra panaudoti LED'us darbe, naudokite: | ||
| + | |||
| + | < | ||
| + | digitalWrite(pinNumber, | ||
| + | </ | ||
| + | |||
| + | Tada jį išjunkite naudodami; | ||
| + | |||
| + | < | ||
| + | digitalWrite(pinNumber, | ||
| + | </ | ||
| + | |||
| + | Nebijokite viską keisti, nesvarbu, ką parašysite, | ||
| [[projektas_nr.5|Kitas projektas. Mygtukai.]] | [[projektas_nr.5|Kitas projektas. Mygtukai.]] | ||
| + | |||
| + | [[arduivadas_projektai|Atgal į projektus]] | ||
projektas_nr.4.1445788112.txt.gz · Keista: vartotojo 193.219.47.27
