Innholdsfortegnelse:

Arduino -basert seriell servokontroller: 6 trinn
Arduino -basert seriell servokontroller: 6 trinn

Video: Arduino -basert seriell servokontroller: 6 trinn

Video: Arduino -basert seriell servokontroller: 6 trinn
Video: RoboIntellect controller 001 - Arduino совместимый контроллер аналог PCA9685 с USB - I2C. 2024, Juli
Anonim
Arduino -basert seriell servokontroller
Arduino -basert seriell servokontroller
Arduino -basert seriell servokontroller
Arduino -basert seriell servokontroller

Dette er en enkel seriell kontroller for flere servoer basert på Arduino. (min første instruerbare også:))

Det meste av arbeidet i dette kom fra å få programvaren til å snakke med arduinoen og lage en protokoll for dataene som skal overføres. Når det gjelder maskinvareaspektet, så brukte jeg bare to servoer (Parallax standard servo her.) En Sparkfun Arduino ProtoShield og en Arduino Duemilanove med ATMEGA328, men de fleste av disse delene kan erstattes med lignende varer. Jeg tenkte på dette prosjektet som en del av et RC -system, men det tok mye tid å sette opp kommunikasjonen. Hvis noen har forbedringer, ideer eller feil, er du velkommen til å kommentere. EDIT: Jeg skrev dette for en stund siden, kom nettopp til å publisere det nylig.

Trinn 1: Ting du kan trenge …

Ting du kan trenge …
Ting du kan trenge …
Ting du kan trenge …
Ting du kan trenge …

Noen ting du trenger for å bygge dette. 1. Arduino -kort (du velger) 2. to (eller en) servoer 3. jumper -ledninger 4. Visual Studio 2008 Express - lenke (valgfritt) 5. Arduino IDE - link Beklager Linux og Apple -fans, programmet mitt kjører bare på windows for nå, men du kan fortsatt manuelt sende serielle kommandoer til arduinoen uten å endre koden.

Trinn 2: Koble til maskinvaren

Koble til maskinvaren
Koble til maskinvaren

Ingenting er veldig komplisert til dette trinnet. Bare koble den ene servoen til pinne 9 og den andre til pinne 10.

Trinn 3: Programmer Arduino

Programmer Arduino
Programmer Arduino

nå kan du laste opp skissen til arduinoen.

Her er en enkel oversikt over koden: #include Servo myservo; // lage servoobjekt for å kontrollere en servo Servo myservo1; int incomingByte = 0, datakonto = 0, teller = 0, klar = 0; // for innkommende serielle data char data [10]; const char verifisere [8] = "ma11hew"; røyekommando [3]; ugyldig oppsett () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // åpner seriell port, angir datahastighet Serial.println ("Hei Arduino Here!"); // lagt til for å identifisere den serielle porten Dette setter bare opp serieporten og servoer. int i; for (i = 0; i <180; i ++) {myservo.write (i); forsinkelse (15); } myservo.write (5); for (i = 0; i <180; i ++) {myservo1.write (i); forsinkelse (15); } myservo1.write (5); } Enkel feiebevegelse for å kontrollere at servoene fungerer som de skal. void loop () {ready = 0; teller = 0; mens (1 == 1) {if (Serial.read ()! = verifiser [teller]) {pause; } if (teller == 6) {forsinkelse (20); kommando [0] = Serial.read (); kommando [1] = Serial.read (); // hvis (Serial.read () == ((kommando [1] * 12) % 8)) // {ready = 1; //} Serial.println ("lagret kommando"); } teller ++; forsinkelse (2); } dette sjekker den serielle bufferen for den riktige autorisasjonsstrengen, og tar deretter to byte for kommandoen. kommenterte hvis uttalelsen gir mulighet for en provisorisk kontrollsum, men det ville gjøre det vanskelig å manuelt grensesnitt. ready kan settes til 0, slik at kommandoer ikke blir analysert, for eksempel ved ødelagte data. // søk gjennom kommandoer if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("gassregulering på pinne 9 til:"); Serial.println (map (kommando [1], 32, 126, 2, 180), DEC); myservo.write (kart (kommando [1], 32, 126, 2, 180)); } hvis (kommando [0] == 'S') {kommando [0] = 0; Serial.print ("gassregulering på pinne 10 til:"); Serial.println (kart (kommando [1], 32, 126, 2, 180), DEC); myservo1.write (kart (kommando [1], 32, 126, 2, 180)); }}}} resten av koden er å søke i kommandoen etter gyldige kommandoer (T eller S.) hvis en av kampene tar den neste byten og sender den til servoen. mer på kartet (kommando [1], 32, 126, 2, 180) senere … koden her kan utvides for alt annet du måtte trenge (f.eks. lys, motorer, IR, etc.). Denne koden skal fungere fint uten modifikasjoner.

Trinn 4: Installer programvare

Installer programvare
Installer programvare

Jeg har to måter å installere dette … nsis installasjonsprogrammet: Last ned det selvutpakkende installasjonsprogrammet nedenfor og kjør det. Du får muligheten til å installere kilder under installasjonen. installatørens binære pakke installerer kjerne c ++ dller slik at den kan kjøres på en datamaskin uten at visuell c ++ allerede er installert. Når installasjonsprogrammet er ferdig, kan du kjøre det fra skrivebordet eller startmenyen. zip -måte (ubekreftet): Last ned og kjør, det skal fungere. kan være. (ZIP -arkivet har den samme mappestrukturen som er opprettet av installasjonsprogrammet, uten kilder. Jeg har ikke en maskin uten visuelt studio for å teste den, så det fungerer kanskje ikke.)

Trinn 5: Bruk grensesnittprogrammet

Bruk grensesnittprogrammet
Bruk grensesnittprogrammet
Bruk grensesnittprogrammet
Bruk grensesnittprogrammet

For å bruke programmet, velg først overføringshastigheten som er definert i arduino -skissen. Den umodifiserte skissen er som standard 38400 baud, men kan endres for å passe dine behov for ting som en tregere radiokobling. Merk: overføringshastigheter høyere enn 38400 har ikke vært veldig stabile, jeg tror dette er fordi uart fylles opp før dataene kan behandles. Velg deretter COM -porten du vil bruke. Programmet som standard på COM4. Sørg for å endre det, ellers krasjer programmet. Til slutt klikker du på Åpne. Hvis alt gikk bra, åpner programmet den valgte serielle porten med valgt baudhastighet. Hvis ikke vil programmet trolig krasje med et ubehandlet unntak. Kontroller at porten er riktig, og prøv igjen. Bruk tekstboksene til å sende inn direkte kommandoer til arduinoen. "Kartet (kommando [1], 32, 126, 2, 180)" skalerer alle de 94 mulige kommandoene, * mellomrom * til ~, som kan leses av arduinoen i ASCII til 2 til 180 for servoen. enhver byte mindre enn ASCII 32 (mellomrom) eller over 126 (~) er som standard 63 (?) Sporstengene gir et eaiser -grensesnitt for direkte kommandoer. hvert trinn sender en seriell kommando til arduinoen trinnvis.

Trinn 6: Bli kreativ

Bli kreativ!
Bli kreativ!
Bli kreativ!
Bli kreativ!

Tenk på kule ting å lage med dette. Noen ideer: 1. Fjernkontroll for en bil. 2. 3D -kamerafeste 3. undervannsrover Ha det gøy !!

Anbefalt: