|
|
Esimerkki 3: 5 ledin skanneri / Ritari Ässä -animaatio
Olet varmaankin lukenut Metkun pari vanhaa modausartikkelia vilkkuvista ledeistä (Vilkkuvalot 1 ja Vilkkuvalot 2), jotka on tehty useita vuosia sitten. Nyt tehdään samantyylinen systeemi mikrokontrollerilla. Päävahvuudet mikrokontrollerin käyttöön verrattuna normaaliin piiriin ovat, että voit ohjelmoida kontrollerin tekemään minkälaisia animaatioita vaan haluat ilman, että muutat ledien fyysistä järjestystä. Kirjoita vaan uusi animaatiosekvenssi, liitä ohjelmointikaapeli piiriin ja siirrä uusi ohjelma sisälle, vóila.
Jos tulee virheitä, kun yrität ohjelmoida piiriä (kuten 'Device not found' yms) koita ledien irroittamista pinneistä 5, 6 ja 7, jotka on käytössä ohjelmoinnissa (ledit ottavat virtansa ohjelmointilinjoista ja piiri ei saa tarpeeksi, joten se ei ohjelmoidu). Kun ohjelmointi on valmis, kytke ledit takaisin paikoilleen. Helppo korjaus tähän voisi olla käyttää yhteistä maata ledeille, joka on kytketty yhdellä johdolla yleiseen maahan, joten ohjelmoidessa voit ottaa ainoastaan tämän yhden kytkennän irti.

Lisää ledejä lisättynä alkuperäiseen kytkentään
// Taajuusarvo, jonka viivefunktio tarvitsee.
// Piiri on tehdasasetettu toimimaan sisäisellä
// oskillaattorilla 1 MHz taajuudella, joten arvoksi tulee tähän 1000000UL
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
// Animaatioruutujen määrä
#define FRAMES 8
// Animaatiosekvenssin taulukko.
// Kaikki arvot ovat binäärimuodossa helppoa
// lukemista varten (1 = ledi päällä / 0 = ledi pois päältä)
// Oikeanpuoleisin bitti on PB0 ja vasemmanpuoleisin
// bitti '0b' jälkeen on PB4.
// -> 0b[4][3][2][1][0]
char animation[FRAMES] =
{
0b00001,
0b00010,
0b00100,
0b01000,
0b10000,
0b01000,
0b00100,
0b00010
};
int main(void)
{
DDRB = 0x1F; // PB0-PB4 ulostuloja
PORTB = 0x00; // Aseta kaikki pinnit alas
int i;
while(1)
{
// Käy läpi kaikki ruudut taulukosta ja jatka loputtomasti
for(i=0 ; i<FRAMES ; i++)
{
// Kirjoita taulukon arvo porttiin
PORTB = animation[i];
// Odota 100 ms ennenkuin siirrytään seuraavaan
_delay_ms(100);
}
}
return 0;
}

Esimerkki 3 toiminnassa
Yhteenveto
Toivomme, että sait kytkentäsi toimimaan ja ledit vilkkumaan ohjeiden avulla. Jätä kommentti tai kysymys, jos on jotakin kysyttävää. Artikkelin kakkososa on suunnitteluvaiheessa ja voit jättää ideoita kommenttiosioon, mikäli haluaisit jotain nähdä kyseisessä artikkelissa (esimerkkejä jne). Kaikki ideat ja ehdotukset otetaan huomioon ja hyödyllisimmät saattavat päästä valituksi.
|
Alla on muutama hyödyllinen linkki, joita kannattaa katsoa: |
Subscribe to Metku.net
Digg It
Save This Page
Stumble it!
Add to Facebook
|
Aiheeseen liittyviä artikkeleja Metkussa:
| | Sivut: 1 2 3 4 5 6 | |


Subscribe to Metku.net
Digg It
Save This Page
Stumble it!
Add to Facebook





Content in english!
Sisältö suomeksi!
