Inhoudsopgave:
- Stap 1: Dingen die je misschien nodig hebt…
- Stap 2: Sluit de hardware aan
- Stap 3: Programmeer de Arduino
- Stap 4: Software installeren
- Stap 5: Gebruik het interfaceprogramma
- Stap 6: wees creatief
Video: Arduino-gebaseerde seriële servocontroller - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:20
Dit is een eenvoudige seriële controller voor meerdere servo's op basis van de Arduino. (mijn eerste instructable ook:))
Het meeste werk hierin kwam van het krijgen van de software om met de Arduino te praten en het maken van een protocol voor de gegevens die moeten worden doorgegeven. Wat betreft het hardware-aspect, ik gebruikte alleen twee servo's (parallax-standaardservo hier.) Een Sparkfun Arduino ProtoShield en een Arduino Duemilanove met ATMEGA328, maar de meeste van deze onderdelen kunnen worden vervangen door vergelijkbare items. Ik bedacht dit project als onderdeel van een RC-systeem, maar het opzetten van de communicatie kostte veel tijd. Als iemand verbeteringen, ideeën of bugs heeft, aarzel dan niet om commentaar te geven. EDIT: Ik heb dit een tijdje geleden geschreven, ik heb het onlangs gepubliceerd.
Stap 1: Dingen die je misschien nodig hebt…
Sommige dingen heb je nodig om dit te bouwen. 1. Arduino-bord (je kiest) 2. twee (of één) servo's 3. jumperdraden 4. Visual Studio 2008 Express -- link (optioneel) 5. Arduino IDE -- link Sorry Linux en Apple fans, mijn programma draait alleen op Windows voor nu, maar je kunt nog steeds handmatig seriële opdrachten naar de Arduino sturen zonder de code te wijzigen.
Stap 2: Sluit de hardware aan
Niets erg ingewikkelds aan deze stap. Sluit gewoon een servo aan op pin 9 en de andere op pin 10.
Stap 3: Programmeer de Arduino
nu kun je de schets uploaden naar de arduino.
Hier is een eenvoudige uitsplitsing van de code: #include Servo myservo; // maak een servo-object om een servo Servo myservo1 te besturen; int inkomendeByte = 0, datacount = 0, teller = 0, gereed = 0; // voor inkomende seriële data char data [10]; const char verifiëren [8] = "ma11hew"; char-opdracht [3]; void setup() { myservo.attach(9); mijnservo1.attach(10); Serieel.begin(38400); // opent seriële poort, stelt datasnelheid in Serial.println ("Hi Arduino Here!"); // toegevoegd om de seriële poort te helpen identificeren Dit stelt alleen de seriële poort en servo's in. int ik; for(i = 0; i<180;i++) { myservo.write(i); vertraging (15); } mijnservo.write(5); for(i = 0; i<180;i++) { myservo1.write(i); vertraging (15); } mijnservo1.write(5); } Eenvoudige veegbeweging om te controleren of de servo's correct werken. void loop() { klaar = 0; teller = 0; while (1==1) { if (Serial.read() != verifieer [teller]) { break; } if (teller == 6) { vertraging (20); command[0] = Serieel.lezen(); command[1] = Serieel.lezen(); //if (Serial.read() == ((command [1] * 12) % 8)) // {ready = 1; //} Serial.println ("opgeslagen opdracht"); } teller ++; vertraging(2); } dit controleert de seriële buffer op de juiste autorisatiereeks en pakt vervolgens twee bytes voor de opdracht. de becommentarieerde if-instructie maakt een geïmproviseerde controlesom mogelijk, maar zou handmatige interfacing moeilijk maken. ready kan worden ingesteld op 0, zodat opdrachten niet worden geparseerd, zoals in het geval van beschadigde gegevens. // doorzoek opdrachten if (ready == 1) { if (command [0] == 'T') { command[0] = 0; Serial.print ("gashendel op pin 9 naar: "); Serial.println(map(opdracht [1], 32, 126, 2, 180), DEC); myservo.write(map(opdracht [1], 32, 126, 2, 180)); } if (opdracht [0] == 'S') { opdracht [0] = 0; Serial.print("gashendel op pin 10 naar: "); Serial.println(map(opdracht [1], 32, 126, 2, 180), DEC); myservo1.write(map(opdracht[1], 32, 126, 2, 180)); } } } de rest van de code is om commando te zoeken naar geldige commando's (T of S.) als een van beide overeenkomt, neemt het de volgende byte en stuurt het naar de servo. meer op de kaart (commando [1], 32, 126, 2, 180) later … de code hier is uitbreidbaar voor alles wat je nodig hebt (bijv. Verlichting, motoren, IR, enz.) Deze code zou prima moeten werken zonder wijzigingen.
Stap 4: Software installeren
Ik heb twee manieren om dit te installeren… nsis-installatieprogramma: Download het onderstaande zelfuitpakkende installatieprogramma en voer het uit. Tijdens de installatie heb je de mogelijkheid om bronnen te installeren. het binaire pakket van het installatieprogramma installeert core c++ dll's zodat het op een computer kan worden uitgevoerd zonder dat visual c++ al is geïnstalleerd. Zodra het installatieprogramma is voltooid, kunt u het uitvoeren vanaf het bureaublad of het startmenu. zip-way (niet-geverifieerd): downloaden en uitvoeren, het zou moeten werken. kan zijn. (Het zip-archief heeft dezelfde mappenstructuur die door het installatieprogramma is gemaakt, zonder bronnen. Ik heb geen machine zonder visuele studio om het op te testen, dus het kan zijn dat het niet werkt.)
Stap 5: Gebruik het interfaceprogramma
Om het programma te gebruiken, selecteert u eerst de baudrate die is gedefinieerd in de Arduino-schets. De ongewijzigde schets is standaard ingesteld op 38400 baud, maar kan worden gewijzigd om aan uw behoeften te voldoen voor zaken als een langzamere radioverbinding. opmerking: baudrates hoger dan 38400 zijn niet erg stabiel geweest, ik denk dat dit komt omdat de uart vol raakt voordat de gegevens kunnen worden verwerkt. Selecteer vervolgens de COM-poort die u wilt gebruiken. het programma is standaard ingesteld op COM4, zorg ervoor dat u dit wijzigt, anders crasht het programma. Klik ten slotte op openen. Als alles goed is gegaan, zal het programma de geselecteerde seriële poort openen met de geselecteerde baudrate. Als dit niet het geval is, zal het programma waarschijnlijk crashen met een onverwerkte uitzondering. controleer of de poort correct is en probeer het opnieuw. Gebruik de tekstvakken om directe opdrachten naar de Arduino te sturen. De "map(command[1], 32, 126, 2, 180)" schaalt alle 94 mogelijke commando's, *spatie* tot ~, leesbaar door de arduino in ASCII tot 2 tot en met 180 voor de servo. elke byte kleiner dan ASCII 32 (spatie) of hoger dan 126 (~) is standaard 63 (?) De trackbars bieden een eenvoudigere interface voor directe opdrachten. elke stap stuurt stapsgewijs een serieel commando naar de arduino.
Stap 6: wees creatief
Bedenk leuke dingen om hiermee te maken. Enkele ideeën: 1. Gashendel op afstand voor een auto. 2. 3D-camerabevestiging 3. onderwaterrover Veel plezier!
Aanbevolen:
Een servocontroller verwijderen: 5 stappen (met afbeeldingen)
Een servocontroller verwijderen: servomotoren zijn erg leuk als u een motorreductor eenvoudig wilt koppelen met een microcontroller. Soms wilt u echter een mooie kleine motorreductor en wilt u zich niet druk maken over de besturingsschakelingen om deze aan te drijven. Op dit soort momenten is het
Het probleem met de Mac Lilypad USB-seriële poort/stuurprogramma oplossen: 10 stappen (met afbeeldingen)
De Mac Lilypad USB seriële poort/stuurprogramma oplossen Probleem: is uw Mac vanaf 2016 minder dan 2 jaar oud? Hebt u onlangs een upgrade uitgevoerd naar het nieuwste besturingssysteem (Yosemite of iets nieuwer)? Werken uw Lilypad USB's/MP3's niet meer? Mijn tutorial zal je laten zien hoe ik mijn Lilypad USB's heb gerepareerd. De fout die ik tegenkwam was gerelateerd
Arduino seriële communicatie: 5 stappen
Arduino seriële communicatie: veel Arduino-projecten zijn afhankelijk van het verzenden van gegevens tussen verschillende Arduino's. Of u nu een hobbyist bent die een RC-auto, een RC-vliegtuig bouwt of een weerstation met een extern display ontwerpt, u moet weten hoe u op betrouwbare wijze overdracht serie
Standalone Arduino 3.3V W / externe 8 MHz klok wordt geprogrammeerd vanaf Arduino Uno via ICSP / ISP (met seriële bewaking!): 4 stappen
Standalone Arduino 3,3 V met externe 8 MHz-klok die wordt geprogrammeerd vanaf Arduino Uno via ICSP / ISP (met seriële bewaking!): Doelstellingen: een stand-alone Arduino bouwen die op 3,3 V van een externe klok van 8 MHz draait. Om het te programmeren via ISP (ook bekend als ICSP, in-circuit serieel programmeren) vanaf een Arduino Uno (draaiend op 5V) Om het bootloader-bestand te bewerken en de
PC RAM-gebruik naar Arduino via seriële poort: 7 stappen
PC RAM-gebruik naar Arduino Via seriële poort: Een vriend van mij heeft me geïnspireerd met zijn kleine Arduino-project. Dit kleine project omvat de Arduino UNO R3, die gegevens leest door een programma gemaakt in Arduino IDE, verzonden naar een seriële poort (USB-poort) door een C#-programma gemaakt in Visual Studio. Zoals dit