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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Figur 5 Modulen monterad på breadboard<br />

5. Få en lampa att lysa i LED-matrisen<br />

För att tända en lampa i matrisen måste man som tidigare nämnts låta en ström passera igenom<br />

lysdioden. DDRA- och DDRC registren sätts på ATMega16 till utgångar. Om du då sätter den pinne på<br />

PORT A för den önskade raden som du vill ska lysa till en nolla så kommer den pinnen drivas ner till<br />

, alltså jord, och det kommer att kunna ledas en ström genom den. Om du sätter den till en etta<br />

så kommer den raden inte att lysa. För att sedan bestämma hur raden ska lysa sätter du pinnarna på<br />

PORT C för alla kolumnerna som ska lysa till ett. Då drivs de pinnarna högt till , och en ström<br />

kommer kunna ledas in på kolumnen. Sätter du pinnen till noll förblir kolumnen släckt. Eftersom<br />

varje rad och varje kolumn är ihopkopplade betyder det att man styr hela kolumnerna och hela<br />

raderna var för sig. Så nu kan du få en enskild lysdiod att lysa, eller hela rader och kolumner.<br />

5.1 Multiplexing<br />

När man definierar de rader och vilka kolumnerna på dessa rader som ska lysa kan man inte låta<br />

varje rad lysa olika. Samma kolumner och samma rader kommer alltid lysa. För att få alla dioder att<br />

lysa som man ville skulle man behöva 64 ingångar till mikrokontrollern, och det skulle för det första<br />

vara ett mycket jobbigt sätt att behöva styra alla lampor på, och för det andra vara svårt för då räcker<br />

inte alla pinnarna på mikrokontrollern till. Lösningen för att kunna visa en statisk bild på displayen,<br />

där alla raderna lyser olika utan att behöva koppla varje lampa till varsin port, kallas multiplexing.<br />

Med denna metod räcker det <strong>med</strong> att alla kolumnerna och alla raderna är ihopkopplade och bara går<br />

att styra kolumn för kolumn och rad för rad, precis som vår givna modul är. Det innebär att det då<br />

bara behövs 16 pinnar lediga till mikrokontrollern, 8 pinnar för anoderna (kolumnerna i LED<br />

matrisen) och 8 pinnar för katoderna (raderna i matrisen), istället för 64. Det multiplexing gå ut på är<br />

att du delar upp LED-matrisen i lika många delar som det finns rader som är kopplade till jord, och<br />

sedan låter varje rad i matrisen som är kopplade till jord lysa en i taget. Varje gång en ny rad tänds<br />

kan du lätt ändra hur lamporna lyser. För den ihopkopplade bredboarden skapar du en loop där du<br />

sätter en nolla först till port PA0, sen PA1, ända fram till PA7 så att ström kan flyta igenom och alla<br />

åtta raderna en chans att lysa en i taget. För varje rad som lyser ger du den LED i varje kolumn som<br />

har chans att tändas en etta på dess pinne på PORTC för att den ska tändas. Men att se en rad lysa i<br />

6

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

Saved successfully!

Ooh no, something went wrong!