Control 2 Servo motorer med en vanlig fjärrkontroll (3 / 4 steg)
Steg 3: Utvecklingsprogram
Vi börjar med infraröd sidan av saker och ignorera servo(s) för nu. Öppna BV_COM och kommunicera med BV500 (IC).
Nu ladda den här filen:
http://www.byvac.com/mBlib/FLB/Library/IRD/IR_DecodeMX1.bas
Bara kopiera texten och placera den i dialogrutan text överföring, sedan Tryck på Skicka. Detta kan behöva ett par försök tills filen cachelagras, det kommer alla beror på internet-anslutningen. Efter skicka bör det säga något som linjer laddade 120.
Filen är ganska kort men det ladda filen IR library därmed antalet linjer. Få en fjärrkontroll och Ställ in den till en Philips TV (jag antar att du har en av dem som du kan programmera med hjälp av olika koder.) Skälet för att använda det är att IR avkodningen fungerar bara med RC5 koden vilken är vad Philips användning i sina apparater.
Typ gå, Rikta fjärrkontrollen till IR photodoide och du bör se några resultat som på bilden. Det kan inte ge exakt samma resultat men det spelar ingen roll. De uppnådda var:
-volym 3511
-volym 3D 11
+ volym 3510
De första 3 är start bitar och de finns alltid där, den faktiska koden för nyckeln är de två sista siffrorna, i detta fall 11 för minus och 10 för plus. Växla är det nummer som ändras från 5 till D (numrerar är i hex). De faktiska värdena är oviktigt så länge det är konsekvent. Om du får något som är oföränderligt eller obeständig då fjärrkontrollen inte sänder ut RC5 så välj en annan TV eller VCR eller vad.
En snabb titt på koden.
Detta visas som en bild så att de radnummer och syntax färgning upprätthålls.
Linje 5: Detta är den fil som gör det mesta av arbetet, om du vill titta på den faktiska koden så är det på den URL som visas i bilden. #include laddar det på chip innan resten av koden.
Linje 12: Detta är den enda funktion som koden består av. Att köra den funktion i sitt namn som vi gjorde när du skriver "gå" ovan.
Linje 12-16: Detta är funktioner i koden som är i include-filen och de initiera portar för användning och ställa in ett par avbrott så att IC kan svara så fort den får någon infraröd. Dessa rader krävs för att få IR kommer.
Linje 17: Bara den "klar" i terminalen så vi vet att allt är okej
Linje 18 & 24: Detta är en ögla som kan vara avslutat när en nyckel tas emot på den terminal, dvs när du trycker på en tangent på tangentbordet. Det fungerar eftersom terminalen är ansluten till UART2 och comkey? (2) returnerar antalet nycklar i UART2 buffert (UART är en seriell port). Eftersom det finns inga nycklar i buffert tills du trycker på en tangent på tangentbordet då det kommer att stanna i en slinga.
Linje 19 till 22: IRDstate (ärende är viktigt) är en variabel som sätts till 1 då det har ett värde som tas emot av IR. Värdet är i currentWord, linje 21 skriver det helt enkelt ut som ett hexadecimalt tal. Värdet på currentWord kommer endast skrivas ut när det finns ett giltigt värde. Det är viktigt att funktionen återställs IRDstate till 0 efter att ha läst ordet.
Linje 26 & 27: LÄMNA ALLTID ETT PAR TOMMA RADER I SLUTET AV EN FIL
Servo
Okej så nu när vi har en fungerande infra-rött är det dags att titta på den servo sidan av saken. Kopiera och klistra in denna URL
http://www.byvac.com/mBlib/FLB/tutorial/PIC32MX1_Family/46_IRServo/IRServo_b.bas
i texten överför dialogen som tidigare och tryck på Skicka. Du kan behöva återställa IC som det körs avbrott och det seriella gränssnittet inte har någon handslag.
Typ svo_init
Servo kan våren till liv efter detta kommando. Nu skriv:
= 200 (Detta är @ O för Oscar inte noll)
och servo ska flytta. Du kan upptäcka gränserna för din servo och ta reda på de högsta och lägsta värden, de jag har allt från 121 till 384.
Servo är att använda modulen produktion jämföra inbyggd i IC. I läge producerar att det är i det en pulsbreddsmodulerad signal och värdet i registret OC2RS styr bredden på det puls så allt du gör när du ändra värdena är faktiskt ändrar bredden på pulsen. Detaljnivå är ganska bra på bara några mikrosekunder och så det är hur vi kan få en upplösning på över 200 inom spänna av servo.
Det är nog inte omfattas av denna text att gå in på Detaljer om hur koden fungerar som det är mestadels inrättandet IC registren, IC hårdvaran fungerar. Om du är intresserad jag hade 3 går på detta den (Detaljer är här) och mitt första försök var att efterlikna PWM i programvara.