Hvordan lage sveipende bevegelser med Arduino

November 25  by Eliza

Du kan lage feiende bevegelser på en servomotor med Arduino. En servomotor sveip fra 0 ° til 179º og deretter tilbake igjen, på en lignende måte til bevegelse av en gammel roterende klokke.

Sweep skisse

Du må ha:

  • En Arduino Uno
  • En servo
  • Jump ledninger

Ledningene for en servo er ekstremt enkelt fordi den kommer med en pen, jordet stikkontakt. Å koble den til Arduino, bruker du bare hoppe ledninger mellom Arduino pins og servokontaktene direkte eller bruke et sett med header pinner for å koble kontakten til din breadboard. Servo har et sett med tre stikkontakter med ledninger koblet til dem, vanligvis rød, svart og hvit.

Hvordan lage sveipende bevegelser med Arduino

Alle beregninger og målinger for å flytte motoren er gjort på kretsene inne servo selv, så alt som trengs er makt og et signal fra Arduino. Red er koblet til 5V på Arduino å drive motoren og kretsene inni den; svart er koblet til GND å jorde servo; og hvitt er koblet til pin 9 for å kontrollere servoer bevegelse.

Fargene på disse ledningene kan variere, så sjekk alltid dataarket eller noe tilgjengelig dokumentasjon for din motor. Andre vanlige farger er rødt (5V), brun (GND) og gul (signal).

Hvordan lage sveipende bevegelser med Arduino

Fullføre krets som beskrevet og åpne Sweep skisse ved å velge Fil → Eksempler → Servo → Sweep. Sweep skisse er som følger:

// Sweep
// By BARRAGAN <http://barraganstudio.com>
// Dette eksempelet kode er i den offentlige sfæren.
#include <Servo .h>
Servo myservo; // Opprette servo objekt for å styre en servo
// Maksimalt åtte servo objekter kan opprettes
int pos = 0; // Variabel til å lagre servo stilling
void setup ()
{
. myservo feste (9); // Settes servo om tappen 9 til servo objektet
}
void loop ()
{
for (pos = 0; pos <180; pos + = 1) // går fra 0 grader til 180 grader
{// I trinn på 1 grad
myservo skrive (pos.); // Fortelle servo å gå til stilling i
// Variabel 'pos'
forsinkelse (15); // Venter 15ms for servo å nå
// Stillingen
}
for (pos = 180; pos> = 1; besittelses = 1) // går fra 180 grader til 0 grader
{
myservo skrive (pos.); // Fortelle servo å gå til stilling i
// Variabel 'pos'
forsinkelse (15); // Venter 15ms for servo å nå
// Stillingen
}
}

Etter at du har funnet skissen, trykker du på Compile-knappen for å sjekke koden. Kompilatoren skal, som alltid, fremheve noen grammatiske feil i rødt i meldingsfeltet når de blir oppdaget.

Hvis skissen kompilerer riktig, klikker du Last opp for å laste opp skisse til styret. Når skissen er ferdig opplasting, bør motoren din begynne å snu bakover og fremover gjennom 180 grader, gjør en dans på bordet.

Hvis ingenting skjer, bør du dobbeltsjekke din ledningsnett:

  • Pass på at du bruker pinne 9 for data (hvit / gul) linje.
  • Sjekk at du har de andre servo ledninger koblet til de riktige pinnene.

Sweep skisse sammenbrudd

Ved starten av denne skissen er et bibliotek med. Dette er servo bibliotek og vil hjelpe deg til å få mye ut av servo med svært lite kompleks kode.

#include <Servo .h>

Den neste linjen gjør en servo objekt. Biblioteket vet å bruke servoer, men trenger du å gi hver enkelt et navn slik at den kan snakke med hverandre servo. I dette tilfellet er det nye Servo objekt kalt myservo.

Ved hjelp av et navn er lik navngi dine variabler; det vil si, de kan være hvilket som helst navn så lenge de er konsekvent i koden din, og du trenger ikke bruke noen navn som er reservert av Arduino språk, for eksempel int eller forsinkelse.

Servo myservo; // Opprette servo objekt for å styre en servo
// Maksimalt åtte servo objekter kan opprettes

Den siste linje i erklæringer er en variabel for å lagre posisjonen til servo.

int pos = 0; // Variabel til å lagre servo stilling

I oppsettet, det eneste elementet for å stille er pinnen antall Arduino pin som kommuniserer med servo. I dette tilfellet er det du bruker pinne 9, men det kan være noen PWM pin.

void setup ()
{
. myservo feste (9); // Settes servo om tappen 9 til servo objektet
}

Sløyfen utfører to enkle handlinger, og begge er for sløyfer. Den første for loop gradvis øker pos variabel fra 0 til 180. På grunn av biblioteket, kan du skrive verdier i grader i stedet for den normale 0 til 255 brukes for PWM-kontroll. Med hver sløyfe, er verdien økt med 1 og sendt til servo ved hjelp av en funksjon som er spesifikk for servo-bibliotek, <servoName> -write (<verdi>).

Etter løkken oppdaterer verdien, oppstår en kort forsinkelse på 15 millisekunder mens servo når den nye plasseringen. I motsetning til andre utganger, etter en servo oppdateres det begynner å bevege seg til sin nye posisjon i stedet for å måtte bli stadig fortalt.

void loop ()
{
for (pos = 0; pos <180; pos + = 1) // går fra 0 grader til 180 grader
{// I trinn på 1 grad
myservo skrive (pos.); // Fortelle servo å gå til stilling i
// Variabel 'pos'
forsinkelse (15); // Venter 15ms for servo å nå
// Stillingen
}

Den andre for sløyfen gjør det samme i motsatt retning, tilbake til servo til sin startstilling.

for (pos = 180; pos> = 1; besittelses = 1) // går fra 180 grader til 0 grader
{
myservo skrive (pos.); // Fortelle servo å gå til stilling i
// Variabel 'pos'
forsinkelse (15); // Venter 15ms for servo å nå
// Stillingen
}
}

Dette er den mest enkle servo eksempel, og det er en god idé å teste om servoen fungerer som den skal.