Assembler

Assembler is een programma om de PIC-microcontroller aan te sturen. Hiermee is het mogelijk om de waarnemingen van de sensoren om te zetten in commando's naar de twee motoren. Ook de databytes (via bluetooth ontvangen) worden met de Assembler omgezet in commando's naar de motoren, de zwaailichten en de ventilator.

De code van Assembler is hier terug te vinden.

Hieronder ziet u het principeschema, evenals de verschillende subroutines verder uitgelegd.


diagramma

Eerst zal hij bekijken of hij links of rechts moet rijden, om de muur te vermijden. Vervolgens zal hij in deze loop lus blijven tot hij het muurtje detecteert, dan zal hij naast deze muur blijven rijden, tot hij plots geen muur meer ziet (hij rijdt ze voorbij). Op dat moment wordt een instructie gegeven om +- 90 graden te draaien. Dit wordt uitgevoerd m.b.v. delays, wat geen grote nauwkeurigheid geeft, maar dat geeft in principe niet. Als hij slechts 80 of 70 graden draait zal hij ook nog de lijn zien. Als hij de lijn ziet, zal hij ze volgen en eerst vertragen om net voor het kaarsje volledig te stoppen en het uit te blazen. Wanneer het kaarsje uit is worden zijn lichten dan uit gedaan.

Hiernaast bestaan er ook interrupts om de bluetooth en de knipperlichten aan te sturen. Knipperlichten lijken op zich eenvoudiger dan het is, immers om een perfecte periode te hebben is het nodig om m.b.v. een timer een interrupt op te roepen en de staat van de ledjes om te wisselen.

 

up

diagramma

Dit is uitgevoerd met het testbordje, door het resultaat van de AD conversie door te schakelen naar de ledjes. Curve fitting is uitgevoerd met excel.

Belangrijk is ook te vermelden dat elke meting van een sharp driemaal werd uitgevoerd. Dit is om een nauwkeuriger resultaat te hebben. We kunnen niet vermenigvuldigen of delen in assembler, maar dit is ook niet nodig. We kunnen optellen en dit vergelijken met een stelwaarde.

 

up

 

diagramma

De "is groter dan" subroutine heb ik gedaan, door telkens HOOG 1 te verlagen en te vergelijken met ons resultaat en een ingestelde bovengrens.

up

 

diagramma

Bij de middenpositie zullen we eerst kort draaien naar de kant en dan pas de subroutine "Rij links inroepen".

up

 

diagramma

up

 

diagramma

up

Er wordt automatisch overgeschakeld naar bluetooth m.b.v. een interrupt, van zodra deze gegevens verzendt.

Ook de zwaailichten werken met een interrupt (Timer 0) om op een vaste periode te flitsen.

up