29.08.2013 Views

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bilaga 3: Programkoden<br />

//fördjupningsarbete i mekatronik MF106X, Annie Gustafsson 2011-03-27<br />

//programmet skall styra en stegmotor på olika sätt beroende på vilken knapp som trycks in skall<br />

motsvarande LED tändas och motorn köra på ett specifikt sätt.<br />

#define F_CPU 1000000UL<br />

#include <br />

#include <br />

int main(void)<br />

{<br />

//definierar vilka portar som skall användas och vilka variabler som behövs<br />

DDRB = 0xff; // Port B utgångar, skickar signaler till H-bryggorna om hur motorn skall<br />

köras<br />

DDRA = 0x00; // Port A ingångar, läser av vilken knapp som är intryckt coh ger<br />

instruktioner därefter<br />

DDRC = 0xff; // Port C utgångar, tänder LED som motsvarar vilken knapp som tryckts in<br />

unsigned char stegtyp = -1, intryckt_knapp; //stegtyp bestämmer hur motorn skall köras,<br />

intryckt_knapp talar om vilken knapp som tryckts in<br />

while(1)<br />

{<br />

intryckt_knapp = PINA;<br />

if (intryckt_knapp == 0xFE) //knapp 0 intryckt kör stegmotorn <strong>med</strong> helsteg tills dess en ny knapp<br />

tryckts in<br />

{<br />

stegtyp = 1;<br />

}<br />

if (intryckt_knapp == 0xFD) //knapp 1 intryckt kör stegmotorn <strong>med</strong> halvsteg tills dess en ny<br />

knapp tryckts in<br />

{<br />

stegtyp = 2;<br />

}<br />

if (intryckt_knapp == 0xFB)//knapp 2 intryckt kör stegmotorn <strong>med</strong> mikrosteg tills dess en ny<br />

knapp tryckts in<br />

{<br />

stegtyp = 3;<br />

}<br />

if (intryckt_knapp == 0xF7) //knapp 3 intryckt ställ stegmotorn i standby tills dess en ny knapp<br />

tryckts in<br />

{<br />

stegtyp = 4;<br />

}<br />

switch (stegtyp)<br />

{<br />

case 1: //helsteg<br />

PORTC = 0xFE;<br />

PORTB = 0x9B;<br />

_delay_ms(5);<br />

PORTB = 0xBB;<br />

_delay_ms(5);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!