Innehållsförteckning:

Arduino -baserad seriell servokontroller: 6 steg
Arduino -baserad seriell servokontroller: 6 steg

Video: Arduino -baserad seriell servokontroller: 6 steg

Video: Arduino -baserad seriell servokontroller: 6 steg
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Juli
Anonim
Arduino -baserad seriell servokontroller
Arduino -baserad seriell servokontroller
Arduino -baserad seriell servokontroller
Arduino -baserad seriell servokontroller

Detta är en enkel seriell styrenhet för flera servon baserad på Arduino. (min första instruerbara också:))

Det mesta av arbetet i detta kom från att få programvaran att prata med arduino och skapa ett protokoll för att data ska överföras. När det gäller hårdvaruaspekten var allt jag använde två servon (Parallax standard servo här.) En Sparkfun Arduino ProtoShield och en Arduino Duemilanove med ATMEGA328, men de flesta av dessa delar kan ersättas med liknande föremål. Jag tänkte på det här projektet som en del av ett RC -system, men att konfigurera kommunikationen tog mycket tid. Om någon har några förbättringar, idéer eller buggar får du gärna kommentera. EDIT: Jag skrev det här för ett tag sedan, fick precis publicera det nyligen.

Steg 1: Saker du kan behöva …

Saker du kan behöva …
Saker du kan behöva …
Saker du kan behöva …
Saker du kan behöva …

Vissa saker du behöver för att bygga detta. 1. Arduino -kort (du väljer) 2. två (eller en) servon 3. bygelkablar 4. Visual Studio 2008 Express - länk (tillval) 5. Arduino IDE - länk Tyvärr Linux- och Apple -fans, mitt program körs bara på windows för tillfället, men du kan fortfarande manuellt skicka seriella kommandon till arduino utan att ändra koden.

Steg 2: Anslut maskinvaran

Anslut hårdvaran
Anslut hårdvaran

Inget särskilt komplicerat för detta steg. Anslut bara en servo till stift 9 och den andra till stift 10.

Steg 3: Programmera Arduino

Programmera Arduino
Programmera Arduino

nu kan du ladda upp skissen på arduino.

Här är en enkel uppdelning av koden: #include Servo myservo; // skapa servoobjekt för att styra en servoservo myservo1; int incomingByte = 0, datakonto = 0, räknare = 0, redo = 0; // för inkommande seriedata char data [10]; const char verifiera [8] = "ma11hew"; char kommando [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // öppnar seriell port, ställer in datahastighet Serial.println ("Hej Arduino här!"); // läggs till för att identifiera den seriella porten. Detta ställer bara in serieporten och servon. int i; för (i = 0; i <180; i ++) {myservo.write (i); fördröjning (15); } myservo.write (5); för (i = 0; i <180; i ++) {myservo1.write (i); fördröjning (15); } myservo1.write (5); } Enkel svepande rörelse för att verifiera att servon fungerar korrekt. void loop () {ready = 0; räknare = 0; medan (1 == 1) {if (Serial.read ()! = verifiera [räknare]) {break; } if (räknare == 6) {fördröjning (20); kommando [0] = Serial.read (); kommando [1] = Serial.read (); // if (Serial.read () == ((kommando [1] * 12) % 8)) // {ready = 1; //} Serial.println ("sparat kommando"); } räknare ++; fördröjning (2); } detta kontrollerar den seriella bufferten efter rätt auktorisationssträng och tar sedan två byte för kommandot. kommenterade if -uttalandet möjliggör en provisorisk kontrollsumma men skulle göra manuellt gränssnitt svårt. ready kan ställas in på 0 så att kommandon inte tolkas, till exempel vid skadad data. // söka igenom kommandon if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("gasreglage på stift 9 till:"); Serial.println (map (kommando [1], 32, 126, 2, 180), DEC); myservo.write (karta (kommando [1], 32, 126, 2, 180)); } if (kommando [0] == 'S') {kommando [0] = 0; Serial.print ("gasreglage på stift 10 till:"); Serial.println (map (kommando [1], 32, 126, 2, 180), DEC); myservo1.write (karta (kommando [1], 32, 126, 2, 180)); }}} resten av koden är att söka kommando efter giltiga kommandon (T eller S.) om en av matchningarna tar nästa byte och skickar den till servon. mer på kartan (kommando [1], 32, 126, 2, 180) senare … koden här är utbyggbar för vad du än behöver (t.ex. lampor, motorer, IR, etc.) den här koden borde fungera bra utan ändringar.

Steg 4: Installera programvara

Installera programvara
Installera programvara

Jag har två sätt att installera detta … nsis -installationsprogram: Ladda ner det självutdragande installationsprogrammet nedan och kör det. Du kommer att ha möjlighet att installera källor under installationen. installationsprogrammets binära paket installerar core c ++ dll så att det kan köras på en dator utan att visuellt c ++ redan är installerat. När installationsprogrammet är klart kan du köra det från skrivbordet eller startmenyn. zip -sätt (ej verifierat): Ladda ner och kör, det borde fungera. kanske. (Zip -arkivet har samma mappstruktur som skapats av installationsprogrammet, utan källor. Jag har inte en maskin utan visuell studio för att testa den så det kanske inte fungerar.)

Steg 5: Använd gränssnittsprogrammet

Använd gränssnittsprogrammet
Använd gränssnittsprogrammet
Använd gränssnittsprogrammet
Använd gränssnittsprogrammet

För att använda programmet, välj först den överföringshastighet som definieras i arduino -skissen. Den omodifierade skissen är som standard 38400 baud men kan ändras för att passa dina behov för saker som en långsammare radiolänk. notera: överföringshastigheter högre än 38400 har inte varit särskilt stabila, jag tror att det beror på att uart fylls innan data kan bearbetas. Välj sedan den COM -port som ska användas. programmet som standard är COM4, var noga med att ändra det annars kraschar programmet. Slutligen, klicka på öppna. Om allt gick bra öppnar programmet den valda serieporten med vald baudhastighet. Om inte kommer programmet troligtvis att krascha med ett obehandlat undantag. se till att porten är korrekt och försök igen. Använd textrutorna för att skicka direktkommandon till arduinoen. "Kartan (kommando [1], 32, 126, 2, 180)" skalar alla 94 möjliga kommandon, * mellanslag * till ~, läsbara av arduino i ASCII till 2 till 180 för servon. vilken byte som är mindre än ASCII 32 (mellanslag) eller över 126 (~) är som standard 63 (?) Spårstängerna tillhandahåller ett eaiser -gränssnitt för direktkommandon. varje steg skickar ett seriellt kommando till arduino stegvis.

Steg 6: Bli kreativ

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

Tänk på coola saker att göra med detta. Några idéer: 1. Fjärrgasreglage för en bil. 2. 3D -kamerafäste 3. undervattensrover Ha kul !!

Rekommenderad: