Indholdsfortegnelse:

Arduino -baseret seriel servo -controller: 6 trin
Arduino -baseret seriel servo -controller: 6 trin

Video: Arduino -baseret seriel servo -controller: 6 trin

Video: Arduino -baseret seriel servo -controller: 6 trin
Video: #271 ARDUINO 03.1 Управление Сервоприводом (решаем проблемы) 2024, November
Anonim
Arduino baseret seriel servo controller
Arduino baseret seriel servo controller
Arduino -baseret seriel servo -controller
Arduino -baseret seriel servo -controller

Dette er en simpel seriel controller til flere servoer baseret på Arduino. (min første instruerbare også:))

Det meste af arbejdet i dette kom fra at få softwaren til at tale med arduinoen og lave en protokol for, at dataene skulle blive videregivet. Hvad angår hardware -aspektet, var alt, hvad jeg brugte, to servoer (Parallax standard servo her.) En Sparkfun Arduino ProtoShield og en Arduino Duemilanove med ATMEGA328, men de fleste af disse dele kan erstattes med lignende varer. Jeg tænkte på dette projekt som en del af et RC -system, men oprettelsen af kommunikationen tog meget tid. Hvis nogen har forbedringer, ideer eller fejl, er du velkommen til at kommentere. EDIT: Jeg skrev dette for et stykke tid siden, kom lige til at udgive det for nylig.

Trin 1: Ting du måske har brug for …

Ting du måske har brug for…
Ting du måske har brug for…
Ting du måske har brug for…
Ting du måske har brug for…

Nogle ting skal du bruge for at bygge dette. 1. Arduino board (du vælger) 2. to (eller en) servoer 3. jumperwires 4. Visual Studio 2008 Express - link (valgfrit) 5. Arduino IDE - link Beklager Linux og Apple fans, mit program kører kun på Windows nu, men du kan stadig manuelt sende serielle kommandoer til arduinoen uden at ændre koden.

Trin 2: Tilslut hardware

Tilslut hardware
Tilslut hardware

Intet meget komplekst til dette trin. Bare tilslut den ene servo til pin 9 og den anden til pin 10.

Trin 3: Programmer Arduino

Programmer Arduino
Programmer Arduino

nu kan du uploade skitsen på arduinoen.

Her er en simpel opdeling af koden: #include Servo myservo; // oprette servoobjekt for at styre en servo Servo myservo1; int incomingByte = 0, datakonto = 0, tæller = 0, klar = 0; // for indgående serielle data char data [10]; const char verificere [8] = "ma11hew"; char kommando [3]; ugyldig opsætning () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // åbner seriel port, indstiller datahastighed Serial.println ("Hej Arduino her!"); // tilføjet for at hjælpe med at identificere den serielle port Dette konfigurerer bare den serielle port 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 fejebevægelse for at kontrollere, at servoerne fungerer korrekt. void loop () {ready = 0; tæller = 0; mens (1 == 1) {if (Serial.read ()! = verificer [tæller]) {pause; } hvis (tæller == 6) {forsinkelse (20); kommando [0] = Serial.read (); kommando [1] = Serial.read (); // hvis (Serial.read () == ((kommando [1] * 12) % 8)) // {ready = 1; //} Serial.println ("gemt kommando"); } tæller ++; forsinkelse (2); } dette kontrollerer den serielle buffer for den korrekte autorisationsstreng og tager derefter to bytes til kommandoen. kommenterede, hvis erklæringen giver mulighed for en midlertidig kontrolsum, men ville gøre manuel grænseflade vanskelig. ready kan indstilles til 0, så kommandoer vil ikke blive analyseret, f.eks. i tilfælde af beskadigede data. // søg gennem kommandoer hvis (klar == 1) {hvis (kommando [0] == 'T') {kommando [0] = 0; Serial.print ("gasregulering på pin 9 til:"); Serial.println (map (kommando [1], 32, 126, 2, 180), DEC); myservo.write (kort (kommando [1], 32, 126, 2, 180)); } hvis (kommando [0] == 'S') {kommando [0] = 0; Serial.print ("gasregulering på pin 10 til:"); Serial.println (map (kommando [1], 32, 126, 2, 180), DEC); myservo1.write (kort (kommando [1], 32, 126, 2, 180)); }}} resten af koden er at søge kommandoen efter gyldige kommandoer (T eller S.) hvis en af disse matcher den tager den næste byte og sender den til servoen. mere på kortet (kommando [1], 32, 126, 2, 180) senere … koden her kan udvides til alt hvad du måtte have brug for (f.eks. lys, motorer, IR osv.) Denne kode skulle fungere fint uden ændringer.

Trin 4: Installer software

Installer software
Installer software

Jeg har to måder at installere dette … nsis installationsprogram på: Download det selvudpakkende installationsprogram herunder og kør det. Du har mulighed for at installere kilder under installationen. installationsprogrammets binære pakke installerer core c ++ dll'er, så den kan køres på en computer, uden at visuel c ++ allerede er installeret. Når installationsprogrammet er færdigt, kan du køre det fra skrivebordet eller startmenuen. zip -vej (ubekræftet): Download og kør, det burde fungere. måske. (ZIP -arkivet har den samme mappestruktur oprettet af installationsprogrammet, uden kilder. Jeg har ikke en maskine uden visuelt studie til at teste det, så det virker muligvis ikke.)

Trin 5: Brug grænsefladeprogrammet

Brug grænsefladeprogrammet
Brug grænsefladeprogrammet
Brug grænsefladeprogrammet
Brug grænsefladeprogrammet

For at bruge programmet skal du først vælge den baudhastighed, der er defineret i arduino -skitsen. Den umodificerede skitse er som standard 38400 baud, men kan ændres, så den passer til dine behov for ting som f.eks. Et langsommere radioforbindelse. Bemærk: baudhastigheder højere end 38400 har ikke været særlig stabile, jeg tror, det skyldes, at uart fyldes op, før dataene kan behandles. Vælg derefter den COM -port, der skal bruges. programmet er som standard COM4, sørg for at ændre det, eller programmet vil gå ned. Klik til sidst på åben. Hvis alt gik godt, åbner programmet den valgte serielle port med den valgte baudhastighed. Hvis ikke, vil programmet sandsynligvis gå ned med en ubehandlet undtagelse. Sørg for, at porten er korrekt, og prøv igen. Brug tekstboksene til at indsende direkte kommandoer til arduinoen. "Kortet (kommando [1], 32, 126, 2, 180)" skalerer alle de 94 mulige kommandoer, * mellemrum * til ~, som kan læses af arduinoen i ASCII til 2 til 180 for servoen. enhver byte mindre end ASCII 32 (mellemrum) eller over 126 (~) er som standard 63 (?) Sporbjælkerne giver en eaiser -grænseflade til direkte kommandoer. hvert trin sender en seriel kommando til arduino trinvist.

Trin 6: Bliv kreativ

Bliv kreativ!
Bliv kreativ!
Bliv kreativ!
Bliv kreativ!

Tænk på fede ting at lave med dette. Nogle ideer: 1. Fjernregulering til en bil. 2. 3D -kameraholder 3. undervandsrover Hav det sjovt !!

Anbefalede: