MetkuMods



Kuinka pääset alkuun mikrokontrollereiden kanssa - Osa 1.

Perusteet käyttäen Atmelin mikrokontrollereita
 
Kirjoittaja: Aki Korhonen
Julkaistu: 26.01.2009
In English In English
Suomeksi Suomeksi

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.

 

How to get started with microcontrollers - Part 1
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;
}

 

How to get started with microcontrollers - Part 1
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:
» Atmel AVR - Atmelin AVR-tuotesivut
» AVR Freaks - AVR-yhteisö, AVR-projekteja, foorumi yms.
» Arduino - AVR-kontrolleria käyttävä avoin kytkentäalusta
» Open Directory: AVR - Lisää AVR:ään liittyviä linkkejä

Muista myös rekisteröityä ja lähettää kuva laitteestasi AllTheModsiin (muut projektit yms ovat tervetulleita myös!)

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


Aiheeseen liittyviä artikkeleja Metkussa:


Monikerroskaiverrusten animointi


Animoidut ledit:Episode 2


Electroniikan perusteet


ColorFade


HDD Eyez


On-line laskuri ledin etuvastukselle




Sivut:   1 2 3 4 5 6 



 
  Content in english!
  Sisältö suomeksi!


 Google





 .:Back to top Bandwidth by Mpoli

Copyright © Metku.net, All Rights Reserved.
All content and graphics in MetkuMods are sole property of Jani Pönkkö and may not be reproduced or copied in any manner without written permission from him.
All brand names, trademarks and copyrights are the property of their respective owners.Privacy Policy