Servo kontrollerad labyrint (4 / 4 steg)
Steg 4: Registeransvarige
En standard servo arbetar vid 50Hz vilket innebär att det måste få en puls på sin kontroll linje (Hitec - den gula en) varje 20ms.
Bredden på pulsen i dess aktiva tillståndet (månadskapacitet) bestämmer vinkeln på servo.
Denna modulering av puls bredd kallas PWM - bredd för synkpuls modulering.
1.25 ms - 0 grader.
1,50 ms - 90 grader.
1,75 ms - 180 grader.
Koden
Den bästa metoden - rätta mig om jag har fel - för att skapa PWM med ATmega för två servon är genom att ansluta 1. servo till OC1A och den 2: a till OC1B och programmet var och en av dessa timers till PWM-utgång.
Nu är utveckling styrelsen jag har och använder AVR-LIP (ECAVR) och OC1A och OC1B tas redan av LCD-skärmen och piezo summern.
Så - med hjälp av [frakk2136] www.avrfreaks.net/index.php - jag använde annan metod.
Jag programmerade OC1A att producera snabba PWM och används avbryter medan servon är ansluten till PA4 & PA5.
Du måste ändra koden enligt ditt system.
Några kommentarer
Tre versioner här:
Labyrinth_Auto
Spelet spelas automatiskt enligt en uppsättning instruktioner.
Koden fungerar utmärkt, men labyrint mekanismen bara kan inte kalibreras tillräckligt väl.
Lägg till några fysiska faktorer som gravitation, friktion, spänning (särskilt denna X-factor) etc. och, Tja, ibland bollen falla in i detta hål och ibland till att en.
Labyrinth_Manual_RS-232
Mikrokontroller får instruktioner från PC-tangentbord (piltangenter) genom den seriella porten.
AVR-LÄPPEN arbetar vid 4Mhz så den maximala baudhastighet som den kan hantera utan fel är 19200 som är för långsam och inte så bekvämt.
Labyrinth_Manual_Switches
Fyra växlar är anslutna till AVR.
Fungerar bra.
TODO
[ X ] Analog Styrspak
[ X ] Digital Joystick
[ X ] Accelerometer
[ V ] växlar
[ X ] datorseende
* ([ X ] | [V] = Status)