INHOUDSOPGAWE:

Arduino -gebaseerde seriële servobestuurder: 6 stappe
Arduino -gebaseerde seriële servobestuurder: 6 stappe

Video: Arduino -gebaseerde seriële servobestuurder: 6 stappe

Video: Arduino -gebaseerde seriële servobestuurder: 6 stappe
Video: Bedien de servomotor met een drukknop: verplaats de servo en stuur de SPB-1 terug 2024, November
Anonim
Arduino -gebaseerde seriële servobestuurder
Arduino -gebaseerde seriële servobestuurder
Arduino -gebaseerde seriële servobestuurder
Arduino -gebaseerde seriële servobestuurder

Dit is 'n eenvoudige seriële kontroleerder vir verskeie servo's gebaseer op die Arduino. (my eerste instruksie ook:))

Die meeste werk hieraan kom deur die sagteware aan die praat te kry met die arduino en 'n protokol op te stel om die data deur te gee. Wat die hardeware -aspek betref, was alles wat ek gebruik het twee servo's (Parallax standaard servo hier.) 'N Sparkfun Arduino ProtoShield en 'n Arduino Duemilanove met ATMEGA328, maar die meeste van hierdie dele kan met soortgelyke items vervang word. Ek het hierdie projek as deel van 'n RC -stelsel bedink, maar die opstel van die kommunikasie het baie tyd geneem. As iemand verbeterings, idees of foute het, kan u gerus kommentaar lewer. EDIT: Ek het dit 'n rukkie gelede geskryf, maar ek het dit onlangs gepubliseer.

Stap 1: Dinge wat u moontlik nodig het …

Dinge wat u dalk nodig het …
Dinge wat u dalk nodig het …
Dinge wat u dalk nodig het …
Dinge wat u dalk nodig het …

Sommige dinge wat u nodig het om dit te bou. 1. Arduino -bord (u kies) 2. twee (of een) servo's 3. springdrade 4. Visual Studio 2008 Express - skakel (opsioneel) 5. Arduino IDE - skakel Jammer Linux- en Apple -aanhangers, my program werk slegs vensters vir eers, maar u kan nog steeds reeksopdragte handmatig na die arduino stuur sonder om die kode te verander.

Stap 2: Koppel die hardeware aan

Koppel die hardeware aan
Koppel die hardeware aan

Niks baie ingewikkeld aan hierdie stap nie. Koppel net een servo aan pen 9 en die ander aan pen 10.

Stap 3: Programmeer die Arduino

Program die Arduino
Program die Arduino

nou kan u die skets op die arduino oplaai.

Hier is 'n eenvoudige uiteensetting van die kode: #include Servo myservo; // skep servo -voorwerp om 'n servo servo myservo1 te beheer; int incomingByte = 0, datacount = 0, teller = 0, gereed = 0; // vir inkomende seriële data char data [10]; const char verifieer [8] = "ma11hew"; char opdrag [3]; ongeldige opstelling () {myservo.attach (9); myservo1.aanheg (10); Serial.begin (38400); // maak die seriële poort oop, stel die datatempo in Serial.println ("Hi Arduino Here!"); // bygevoeg om die seriële poort te identifiseer. Dit stel net die seriële poort en servo's in. int ek; vir (i = 0; i <180; i ++) {myservo.write (i); vertraging (15); } myservo.write (5); vir (i = 0; i <180; i ++) {myservo1.write (i); vertraging (15); } myservo1.write (5); } Eenvoudige veegbeweging om te kontroleer of die servo's korrek werk. leemte -lus () {gereed = 0; teller = 0; terwyl (1 == 1) {if (Serial.read ()! = verifieer [counter]) {break; } if (teller == 6) {vertraging (20); command [0] = Serial.read (); command [1] = Serial.read (); // as (Serial.read () == ((command [1] * 12) % 8)) // {ready = 1; //} Serial.println ("gestoorde opdrag"); } teller ++; vertraging (2); } dit kontroleer die seriële buffer vir die korrekte magtigingsreeks en gryp dan twee grepe vir die opdrag. die kommentaar lewer indien verklaring 'n tydelike kontrolesom moontlik maak, maar dit sal moeilik wees om die koppelvlak met die hand te koppel. gereed kan op 0 gestel word, sodat opdragte nie ontleed word nie, soos in die geval van beskadigde data. // soek deur opdragte as (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("gashendel op pen 9 tot:"); Serial.println (kaart (opdrag [1], 32, 126, 2, 180), DEC); myservo.write (kaart (opdrag [1], 32, 126, 2, 180)); } if (command [0] == 'S') {command [0] = 0; Serial.print ("gashendel op pen 10 tot:"); Serial.println (kaart (opdrag [1], 32, 126, 2, 180), DEC); myservo1.write (kaart (opdrag [1], 32, 126, 2, 180)); }}}} die res van die kode is om opdrag te soek na geldige opdragte (T of S.) as dit ooreenstem, neem dit die volgende greep en stuur dit na die servo. meer op die kaart (opdrag [1], 32, 126, 2, 180) later … die kode hier is uitbreidbaar vir alles wat u nodig het (bv. ligte, motors, IR, ens.), hierdie kode moet goed werk sonder wysigings.

Stap 4: Installeer sagteware

Installeer sagteware
Installeer sagteware

Ek het twee maniere om hierdie … nsis -installeerder te installeer: Laai die selfonttrekkende installeerder hieronder af en voer dit uit. U sal die opsie hê om bronne tydens die installasie te installeer. die installeerder -binêre pakket installeer kern c ++ dlls, sodat dit op 'n rekenaar uitgevoer kan word sonder dat visuele c ++ reeds geïnstalleer is. Sodra die installeerder klaar is, kan u dit vanaf die lessenaar of beginmenu uitvoer. zip -manier (nie geverifieer nie): Laai af en hardloop, dit behoort te werk. kan wees. (Die zip -argief het dieselfde gidsstruktuur wat deur die installeerder geskep is, sonder bronne. Ek het nie 'n masjien sonder visuele studio om dit te toets nie, sodat dit moontlik nie werk nie.)

Stap 5: Gebruik die koppelvlakprogram

Gebruik die koppelvlakprogram
Gebruik die koppelvlakprogram
Gebruik die koppelvlakprogram
Gebruik die koppelvlakprogram

Om die program te gebruik, kies eers die baud -tempo wat gedefinieer is in die arduino -skets. Die ongewysigde skets is standaard 38400 baud, maar kan verander word volgens u behoeftes vir dinge soos 'n stadiger radioverbinding. let wel: baud -tariewe hoër as 38400 was nie baie stabiel nie, ek dink dit is omdat die uart vol word voordat die data verwerk kan word. Kies dan die COM -poort wat u wil gebruik. as die program standaard op COM4 is, moet u dit verander, anders loop die program neer. Klik laastens oop. As alles goed verloop, sal die program die geselekteerde seriële poort met die geselekteerde baud -tempo oopmaak. Indien nie, val die program waarskynlik neer met 'n onbehandelde uitsondering. maak seker dat die poort korrek is en probeer weer. Gebruik die teksblokkies om direkte opdragte by die arduino in te dien. Die "kaart (opdrag [1], 32, 126, 2, 180)" skaal al die 94 moontlike opdragte, * spasie * tot en met ~, leesbaar deur die arduino in ASCII tot 2 tot 180 vir die servo. enige greep minder as ASCII 32 (spasie) of hoër as 126 (~) is standaard 63 (?) Die spoorstawe bied 'n eaiser -koppelvlak vir direkte opdragte. elke stap stuur 'n reeks opdrag inkrementeel na die arduino.

Stap 6: Wees kreatief

Word kreatief!
Word kreatief!
Word kreatief!
Word kreatief!

Dink aan lekker dinge om hiermee te maak. 'N Paar idees: 1. Gas op afstand vir 'n motor. 2. 3D -kamera -houer 3. onderwater -rover Geniet dit !!

Aanbeveel: