Arduino UNO Command Line Interface: Snel & Betrouwbaar
Onderdelen en benodigdheden
| Arduino UNO | 1 |
Over dit project
Er komt een moment dat je de waarde van een sensor wilt uitlezen of je robot een commando wilt geven zoals "beweeg links". Misschien wil je de runtime-waarde van een variabele opvragen of een digitale potentiometer instellen. Wat je nodig hebt is een commandoregelinterface (CLI).
Hier is een eenvoudige, snelle en zeer geheugenefficiënte Command Line Interface (CLI) die je in wenige minuten in je eigen code kunt knippen en plakken. Commando's bestaan uit een naam gevolgd door meerdere argumenten. Het ondersteunt zelfs backspace tijdens het typen.
Snel overzicht
Elke sketch heeft een loop()-functie. Deze kan zo simpel zijn als het onderstaande voorbeeld. Het roept twee routines aan in een apart tabblad genaamd CommandLine.h.
De Loop-functie
Wat het doet: Elke keer dat loop() draait, controleert het of er een commando binnenkomt via de seriële poort via getCommandLineFromSerialPort(). Wanneer een volledig commando is ontvangen en gekopieerd naar de commandobuffer, roept loop() DoMyCommand() aan om het juiste commando uit te voeren.
Indiepen in CommandLine.h
Het bestand CommandLine.h bevat alle benodigde code. Elke regel die je moet aanpassen is gemarkeerd met //Modify here. Het bevat twee voorbeeldcommando's: add en sub en laat zien hoe ze worden aangeroepen vanuit DoMyCommand.
Dieper kijken
In CommandLine.h worden <string.h> en <stdlib.h> ingeladen. We gebruiken strtok() voor tokenisering en atoi() voor ASCII-naar-integer conversie.
Er is een handige macro print2 voor debugging:
#define print2(x,y) (Serial.print(x), Serial.println(y))
Gebruik: print2("myVar = ", myVar); print "myVar = 25" als myVar 25 is.
getCommandLineFromSerialPort() assembleert een commando regel vanuit de seriële poort. Elke keer dat het wordt aangeroepen, leest het van de seriële poort en slaat de invoer op in de globale buffer CommandLine[]. Wanneer het een return-teken bereikt, retourneert het true.
DoMyCommand() bepaalt welke functie de gebruiker aanvraagt en roept deze aan.
Add en Sub commando's
Elke commando-functie is verantwoordelijk voor het parsen van zijn eigen argumenten. De voorbeelden add en sub gebruiken numerieke argumenten. Er is ook readWord voor tekstuele argumenten.
De snelste manier om te starten
Maak een nieuw tabblad in de Arduino IDE, plak CommandLine.h erin, en je kunt direct add en sub commando's typen in de Serial Monitor.
Code
Eenvoudige Command Line Interpreter voor Arduino
Zie de commentaren in het artikel of in de code om een eenvoudige commandoregel toe te voegen aan je Arduino-sketch.
Je kunt commando's toevoegen zoals:
add 5, 10subtract 10, 5
Of wat je ook nodig hebt. De volledige code is te lang om hier weer te geven, maar beschikbaar in de originele bron.
Productieproces
- Betrouwbare Draadloze Oprit-sensor voor Lange Opritten – Eenvoudige Raspberry Pi Integratie
- Goedkope Infrarood Nabijheidssensor voor Raspberry Pi Met Alleen Digitale Pins
- ANDY – De Multifunctionele Humanoïde Robot
- Simple Pi Robot – Bouw een 2-WD Autonome Rover met Raspberry Pi
- Staalband Slitterlijnen: Van Banden naar Precisie Strengten
- Top Cut-to-Length Lijn Fabrikanten: Uitgebreide Gids
- C# Comments Onder de Loep: Types, Best Practices en XML Documentatie
- C#-interfaces onder de knie: definitie, implementatie en praktische use cases
- Commandoregel Argumenten in C: Een Praktische Gids
- C# Interfaces Beheersen: Contracten voor Robuust Objectgeoriënteerd Programmeren
- Java interfaces meesteren: concepten, implementatie en best practices