Stap 4: Puttees op tezamen
Het slotcircuit met batterij wordt weergegeven in een van de foto's. Niet verbreken de seriële enkel nog er zijn een paar dingen eerst doen. Kopieer en plak deze url en verzenden als voorheen gebruiken. Dit is het definitieve programma.
http://www.byvac.com/mBlib/FLB/tutorial/PIC32MX1_Family/46_IRServo/IRServo_c.bas
De main() functie
Dit ziet er ingewikkeld, maar het is niet. Typ belangrijkste en zien hoe het werkt, het werkt niet helemaal afhankelijk van wat uw IR is decodering dus laten we eens kijken naar de main() functie. To get out of de functie zal u wilt instellen.
Lijnen 67 tot en met 74: Deze initialiseren het IR en servo als vóór. Ik heb twee constanten aan de bovenkant van het bestand dat ik gevonden om de hoogste en laagste waarden van de servo. De lijn = ((SERVOMAX-SERVOMIN)/2) + SERVOMIN plases de servo naar mid positie bij start up.
Lijn 75: Ditmaal die zullen wij eeuwig met geen get uit, dit is een goed idee op een tribune alleen toepassing is als het gebruik van de comkey? (2) methode reageert de lus als een valse waarde wordt ontvangen in de belangrijkste buffer voor welke reden dan ook. Echter tijdens de testen is het waarschijnlijk een goed idee om het verlaten van de get - in.
Lijn 78: Ik heb een LED aangesloten op pin 4 en dus dit is gewoon voor een beetje extra informatie.
Regel 79: Het woord van de IR ontvangen is in twee delen, de laatste 8 bits is de code die is gekoppeld met de sleutel en de bits 11 tot en met 8 houden de knevel waarde, zodat deze lijn is net de waarde van de sleutel (in irkey) zonder de knevel.
Lijn 81: Zoals gezegd de knevel maakt deel uit van de hoge byte van het 16-bits woord, eigenlijk deze lijn krijgt ook de begin- en een adres bits evenals maar dat maakt niet echt uit in deze toepassing we alleen zien willen als de knevel anders dan de vorige keer is. De knevel hetzelfde zal zijn als de gebruiker een vinger op de externe sleutel heeft gehouden, maar anders zal zijn als de gebruiker laat gaan van de sleutel en het opnieuw indrukt. Wij gebruiken deze functie om verhoging van de snelheid van de servo door 1 toe te voegen aan de variabele snelheid, als er geen verandering in de knevel is. Als er een wijziging aangebracht in de knevel is wordt dan snelheid gereset naar 0 (lijn 82).
Lijnen van 85 tot 90: Dit is het stukje dat detecteert welke toetsen worden ingedrukt, in dit geval zijn wij op zoek naar 2 sleutels volgens deze tabel:
Sleutelwaarde
+ V 10 (+ volume)
+ 20 P (+ kanaal)
-V 11 (-volume)
-P 21 (-kanaal)
Deze waarden werden gevonden tijdens de ontwikkelingsfase, kon een andere toets natuurlijk worden gekozen. De plus sleutels toevoegen 1 om te versnellen en de - toetsen een weg te nemen.
Lijnen 92-96: Omgaan met de volumetoets en snelheid aan de servo PWM waarde, een controle bestaat op 95 en 96 dat de servo waarden zijn niet overschreden, dit geeft alleen maar mooie strakke controle toevoegen.
Wanneer u tevreden bent met de software type flsave("") en het bespaart de huidige functies in ram te knipperen. Omdat de functie main() heet zal het ook op reset uitvoeren.
Terug naar het ontwikkelen van
Het kan of kan niet hebben overschreden je gedachten dat een de main() functie is opgeslagen naar flash en dit begint op de reset - hoe doe ik een andere projecten met deze IC- of erger nog hebt u een niet-werkende-project dat is opgeslagen in de main() is het daar voor altijd geplakt? Nou nee, natuurlijk moet er een krijgen uit.
Recap
Dit is een demonstratie van de zeggenschap over servomotoren via IR. Het is echt een demonstratie van IR en servo. De IR niet hoeft te worden aangesloten op een servo maar zou bijvoorbeeld een relais en de servo hoeft niet te worden gecontroleerd door de IR, dit zou kunnen hebben een vaste set van bewegingen toegepast. Of het kan worden aangestuurd via de PC, of een toetsenbord misschien om een vergrendelde deur open.