Stap 3: Development Software
We beginnen met de infra-rood kant van de dingen en de servo(s) voorlopig negeren. Open BV_COM en communiceren met de BV500 (de IC).
Nu het laden van dit bestand:
http://www.byvac.com/mBlib/FLB/Library/IRD/IR_DecodeMX1.bas
Gewoon Kopieer de tekst en plaatst u deze in het dialoogvenster tekst overbrenging en druk op verzenden. Dit kan een paar pogingen nodig zijn totdat het bestand in de cache is opgeslagen, het zal allemaal afhankelijk van de internetverbinding. Na het verzenden moet het iets zeggen als lijnen 120 geladen.
Het bestand is vrij kort, maar het laadt het IR-bibliotheekbestand vandaar het aantal lijnen. Verkrijgen van een afstandsbediening en zet deze op een Philips TV (ik ga ervan uit dat u een van degenen die u kunt programmeren met behulp van verschillende codes hebben.) De reden voor het gebruik van dat wil zeggen dat de IR-decodering werkt alleen met RC5-code die welke gebruik van de Philips in hun toestellen is.
Type gaan, richt de afstandsbediening op de IR-photodoide en u ziet enkele resultaten zoals in de afbeelding. Het kan niet de exacte dezelfde resultaten opleveren, maar dat maakt niet uit. De resultaten waren:
-volume 3511
-volume 3D 11
+ volume 3510
De eerste 3 is de start bits en ze zijn er altijd, de werkelijke code van de sleutel is de laatste twee cijfers, in dit geval 11 voor min en 10 voor plus. De knevel is een getal dat van 5 tot en met D verandert (nummers zijn in hex). De werkelijke waarden zijn onbelangrijk, zolang het in overeenstemming is. Als u iets dat is onveranderlijk of onstandvastige dan de afstandsbediening is niet afgeven RC5 krijgen dus kies een verschillende TV, VCR of wat dan ook.
Een snelle blik op de code.
Dit wordt weergegeven als een afbeelding, zodat de lijn nummers en syntaxis kleuren behouden blijven.
Lijn 5: Dit is het bestand dat doet het meeste van het werk, als u kijken naar de werkelijke code wilt dan op de URL weergegeven in de afbeelding is. De #include geladen op de chip voordat de rest van de code.
Lijn 12: Dit is de één functie die de code bestaat uit. Het functietype uitvoeren in de naam die we deden bij het typen van 'gaan' boven.
Lijn 12 tot en met 16: Dit zijn de functies in de code die is in het include-bestand en ze initialiseren van de poorten voor gebruik en een paar van de interrupts zo instellen dat de IC reageren kan zodra zij een ontvangt infra rood. Deze lijnen zijn vereist om de IR gaan.
Lijn 17: Alleen de 'Ready' op de terminal zodat we alles weten is oke
Lijnen 18 & 24: Dit is een continue lus die kan worden afgesloten wanneer er een sleutel wordt ontvangen op de RD Session Host, dwz als u een toets op het toetsenbord indrukt. Het werkt omdat de terminal is verbonden met UART2 en comkey? (2) geeft het aantal toetsen in de buffer van de UART2 (UART is een seriële poort). Als er geen sleutels in de buffer totdat u op een toets op het toetsenbord, dan zal het blijven in de lus.
Lijn van 19 tot en met 22: IRDstate (geval belangrijk) is een variabele die wordt ingesteld op 1 wanneer is er een waarde ontvangen door de IR. De waarde is in currentWord, lijn 21 gewoon wordt afgedrukt het uit als een hexadecimaal getal. De waarde van currentWord zal alleen worden afgedrukt als er een geldige waarde. Het is belangrijk dat de functie IRDstate terug naar 0 Reset na het lezen van het woord.
Lijnen 26 & 27: LAAT ALTIJD EEN AANTAL LEGE REGELS AAN HET EINDE VAN EEN BESTAND
Servo
Oke dus nu dat we een werkende infra-rood haar tijd om te kijken van de servo-kant van de dingen. Kopieer en plak deze URL
http://www.byvac.com/mBlib/FLB/tutorial/PIC32MX1_Family/46_IRServo/IRServo_b.bas
in de tekst overbrengen dialoogvenster als voorheen en druk op verzenden. U wellicht opnieuw instellen van de IC als het draait interrupts en de seriële interface beschikt niet over een handdruk.
Type svo_init
De servo kan na deze opdracht voorjaar tot leven. Typ nu:
= 200 (Dit is @ O voor Oscar niet nul)
en de servo moet verplaatsen. U kunt de grenzen van uw servo ontdekken en ontdek de maximale en minimale waarden, degene die ik heb variëren van 121 tot 384.
De servo is met behulp van het vergelijken van de Output-module ingebouwd in de IC. In de modus produceert dat er in het een puls breedte gemoduleerde signaal en de waarde in het register die oc2rs de breedte van die puls dus alle die je doet bepaalt wanneer veranderen de waarden eigenlijk de breedte van de puls verandert. De granulariteit is heel goed in slechts een paar microseconden en dus dat is hoe we kunnen krijgen voor een resolutie van meer dan 200 binnen het bereik van de servo.
Het is waarschijnlijk buiten het bestek van deze tekst te gaan op de details van hoe de code werkt zoals het is meestal de oprichting van de IC-registers, de IC hardware doet het werk. Indien u intresse ik had 3 gaat op dit de (details zijn hier) en mijn eerste poging was te emuleren PWM in software.