INHOUDSOPGAWE:
- Stap 1: Dinge wat u moontlik nodig het …
- Stap 2: Koppel die hardeware aan
- Stap 3: Programmeer die Arduino
- Stap 4: Installeer sagteware
- Stap 5: Gebruik die koppelvlakprogram
- Stap 6: Wees kreatief
Video: Arduino -gebaseerde seriële servobestuurder: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:28
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 …
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
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
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
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
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
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:
Verwyder 'n servobestuurder: 5 stappe (met foto's)
Verwyder 'n servobestuurder: Servomotors is baie pret as u 'n ratmotor maklik met 'n mikrobeheerder wil koppel. Soms wil u egter 'n mooi motor met 'n klein ratkas hê, en u wil u nie aan die stuurkringe steur nie. Op sulke tye is dit
Seriële kommunikasie van Arduino: 5 stappe
Seriële kommunikasie van Arduino: Baie Arduino -projekte maak staat op die oordrag van data tussen verskeie Arduino's, of u nou 'n stokperdjie is wat 'n RC -motor, 'n RC -vliegtuig bou of 'n weerstasie met 'n afstandskerm ontwerp, u moet weet hoe om betroubaar te wees dra seria oor
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur ICSP / ISP (met seriële monitering!): 4 stappe
Onafhanklike Arduino 3.3V W / eksterne 8 MHz -klok wat van Arduino Uno geprogrammeer word deur middel van ICSP / ISP (met seriële monitering!): Doelstellings: Om 'n selfstandige Arduino te bou wat op 3.3V van 'n 8 MHz eksterne klok werk. Om dit via ISP (ook bekend as ICSP, in-circuit seriële programmering) te programmeer vanaf 'n Arduino Uno (loop by 5V) Om die selflaaiprogram te wysig en te verbrand
Seriële UDP/IP -gateway vir Arduino Gebaseer op ESP8266 Shield: 8 stappe
Seriële UDP/IP -gateway vir Arduino Gebaseer op ESP8266 Shield: Ek het reeds in 2016 hierdie instruksies gepubliseer "Hoe om jou eie Wifi -gateway te maak om jou Arduino aan IP -netwerk te koppel". Aangesien ek 'n paar kodeverbeterings aangebring het en ek steeds hierdie oplossing gebruik, is daar egter 'n paar ESP8266 -skilde
Ultrasoniese radar met behulp van Arduino Nano en seriële plotter: 10 stappe
Ultrasoniese radar met behulp van Arduino Nano en Serial Plotter: In hierdie instruksies leer ons oor die basiese beginsels van 'n servobiblioteek, sowel as die opstel van die ultrasoniese sensor en dit as 'n radar gebruik. die uitvoer van hierdie projek sal op die seriële plottermonitor sigbaar wees