AVRSH: Ett kommando tolken skal för Arduino/AVR. (5 / 6 steg)

Steg 5: Anpassa skalet




Du är fri att hacka på koden och anpassa det till dina egna behov, om du vill. Om jag hade vetat att jag skulle släppa denna kod, skulle jag har gjort en separat kommando tolken klass och kommandostruktur och bara upprepade genom denna kräver en funktionspekare. Det skulle minska mängden kod, men som det ser ut skalet tolkar kommandoraden och anropar metoden lämplig skal.

Om du vill lägga till i din egen anpassade kommandon, gör följande:

1. lägga till ett kommando i listan parse
Kommando tolken kommer att tolka kommandoraden och ger du kommandot och några argument separat. Argument som skickas som pekare till pekare eller en mängd tips, hur du vill arbeta med dem. Detta finns i shell.cpp. Öppna shell.cpp och hitta metoden ExecCmd i klassen AVRShell.

Du kanske vill lägga till kommandot programminne. Om du gör, lägga till kommandot i progmem.h och progmem.cpp. Du kan lägga till kommandot programminne direkt med hjälp av makrot PSTR(), men du kommer att generera en annan varning av den typ som tidigare nämnts. Återigen, detta är en känd bugg arbetar med C++, men du kan komma runt detta genom att lägga till kommandot direkt i progmem.* files, som jag har gjort. Om du inte lägga till din SRAM användning, kan du lägga till kommandot som jag har illustrerat med kommandot "klocka".

Säga att du ville lägga till ett nytt kommando som kallas "newcmd." Gå till AVRShell::ExecCmd och hitta en lämplig plats att infoga följande kod:

annars om (! strcmp(c,"newcmd")) cmdNewCmd(args);

Detta kommer att lägga till ditt kommando och anropar metoden cmdNewCmd som du ska skriva i nästa steg.

2. Skriv koden anpassat kommando
I samma fil, lägga till din anpassade kommandot kod. Detta är metoden definitionen. Du kommer fortfarande lägga till förklaringen till shell.h. Rättvis tillägga det att andra kommandon. I föregående exempel kan koden se ut ungefär så här:

voidAVRShell::cmdNewCmd(char ** args) {sprintf_P (buff, PSTR ("ditt kommando är % s\r\n",args[0]); WriteRAM(buff);}

Det finns flera saker här. Första är "buff" en 40-tecken array buffert som anges i koden för din användning. Vi använder programmet minne version av sprintf eftersom vi passerar det en PSTR. Du kan använda den vanliga versionen om du vill, men se till att du inte klarar formatet i en PSTR. Dessutom är argumenten i arrayen args. Om du skrivit "newcmd arg1 arg2" kan du få på dessa argument med args [0] och args [1] nedsänkt text. Du kan skicka Max MAX_ARGS argument, som definieras i koden. Känn dig fri att ändra det värdet när du kompilerar om om du behöver många fler argument som ska passeras på en gång.

WriteLine och WriteRAM är globala funktioner som returnerar den UART metoder med samma namn. 2. argumentet att denna funktion är underförstått. Om du klarar ingenting, skrivs kommandotolken efteråt. Om yo passera en 0 som 2: a argument, en snabb skrivs inte. Detta är användbart när du vill skriva flera separata strängar att produktionen innan kommandotolken returneras till användaren.

3. har skalet köra kommandokoden
Du har redan berättat shell testamentsexekutor att utföra metoden cmdNewCmd när du ställer in det nya kommandot, men lägga till filen shell.h till har den förstås av gränssnittsobjekt. Bara lägga till det under det senaste kommandot eller framför det första kommandot eller någonstans där inne.

Och det är det. Kompilera och ladda upp firmware till din Arduino och det nya kommandot är tillgängligt från skalet i Kommandotolken.

Se Steg
Relaterade Ämnen

Hur till installera Google Earth i Linux med ett kommando

installera program i Linux kan vara knepigt ibland för nybörjare. I detta instructable, kan du installera Google Earth med endast ett kommando.Steg 1: Installation Bara gå till terminal, klistra in detta kommando och tryck på RETUR och det kommer att...

Hur man får ett kommando block i minecraft

jag gjort detta i kreativa läge...Steg ett:gå till din kommandofältetSteg två:Skriv in: / ge 137Steg tre:så ska u ha ett kommando block.DU MÅSTE TILLÅTA FUSK FÖR DETTA ARBETE!...

Telnet till din Arduino/AVR!

Häromdagen var jag vill kolla på en av min AVR: s men jag var på övervåningen och Gud vet det var för mycket jobbigt att gå ner till där mikrokontroller var. Men det fanns två inaktiv datorer sitter på övervåningen bredvid min lata rumpa, så jag hade...

En avancerad metod för Arduino & AVR programmering

Detta instructable är ett måste läsa för alla som är bekanta med core AVR chips och Arduino.Tja, mer konkret, när jag läste den instructable kommer du att kunna:1) vet väl skillnaden mellan AVR och Arduino.2) programmering Arduino med WinAVR & använd...

Automatiskt öppna / stänga en låda med ett linjärt ställdon och Arduino

Det finns en enkel glädje i att trycka på en knapp som öppnar en ruta för dig. Visst det finns snabbare och effektivare sätt att öppna en låda, men inget kan jämföras med magiskt i en aktiverings lock. För denna tutorial, kommer vi att göra en låda s...

Gör ett Minecraft gaming tangentbord med en arduino.

Minecraft är ett mycket populärt spel och det är också en av de mest spelade spel. Jag har byggt ett Mini-tangentbord som är dedikerade till att spela Minecraft! Allt du behöver för att bygga detta är en Arduino Leonardo, förfallodatum eller Micro st...

Utveckla ett ATtiny firefly projekt använder Arduino och det är IDE

Jag såg nyligen ett intressant projekt av Karl Lunt som används en ATtiny13 för att efterlikna en firefly (http://www.seanet.com/~karllunt/fireflyLED.html). Detta i sig, är verkligen inte unik, men det fick mig att tänka om en av mina tidiga microcon...

Driva din Arduino/AVR med ett Hand-Cranked batteri

om du någonsin velat driva din Arduino eller AVR från ett batteri för utveckling testning (batterierna har olika makt leverans kvaliteter än, säg, transformerad AC eller ens en reglerad vägg vårta i DC) testning men var trötta för att gå igenom batte...

Hur man analyserar ett fordons CAN-BUS med en Arduino ansluten till en CAN-BUS sköld och fri programvara.

Maskinvara byggd i en tidigare InstructableI en tidigare instructable Ive visas hur du kan sätta ihop hårdvara för att skanna din kan bussen, den instructable kan hittas här.Jag skapade en forumtråd som förklarar lite mer i detalj,http://techtinker.c...

Ge ett hett tips: Skala en $2 Bill från en Pad!

Såvida du är en hård och aldrig tips någon service människor, är du antagligen van vid att sprita ut några tior för vänta personal, en betjänt, concierge eller någon annan tjänst. Du bryter ut plånboken eller dra ut en tuss av räkningar du har stoppa...

Octodogs i ett hav av skal

en av våra favorit måltider är Mac n cheese och korv. För att göra det lite roligare, jag hittade denna idé i en bok och det blev bra!Behöver du kokt korv, en kniv, och senap samt några kokta mac n cheese på en tallrik.Steg 1: bläckfisk: först skär P...

Vattennivån Sensormodul för Arduino AVR ARM STM32 STM8

Grattis till ICStation -teamet! De har utvecklat denna underbara vattennivån Sensormodul av stora ansträngningar. Denna modul med liten storlek och hög kostnadseffektiva är lätt att använda. I denna artikel, kommer att vi använda digital lagring osci...

Att lägga till ICSP header till din Arduino/AVR styrelse

så du kanske har spelat med Arduino's, eller snarare Hackduino. Om du gjort din egen Hackduino eller liknande projekt, kanske du undrar hur du lägger till i ICSP huvudet. I grund och botten gör med ICSP-huvudet att du kan använda en extern programmer...

Arduino AVR programmering sköld

Behöver du ett snabbt och enkelt sätt att programmet AVR marker. Visste du att du kan använda din Arduino och Arduino IDE? Denna Arduino shield gör processen mycket enklare.Du kan:Bränn en bootloader på en ersättare Atmega328 för din UNO.Göra ett fri...

Plug And Play remote relay (hallon och Arduino och läsa sensorer)

Målet var att skapa användarvänliga heltäckande kontroll över eluttag med relä, inklusive (och kanske främst) Web GUI och automation.Som alltid försöker jag använda befintliga lösningar och förlita sig så lite som möjligt på specifika plattformar.En...

Garduino uppgraderingen, nu med mer Twitter!

Ett par månader sedan kom jag över två stora instructables. Först var Garduino, en arduino kontrollerade trädgård som hjälper dig att odla växter i hemmet. Andra var den Tweet-a-watten, ett projekt som lär dig att övervaka ditt hem makt användning me...

Hur man använder ett fotomotstånd (eller fotocell) - Arduino handledning

Ett fotomotstånd eller fotocell är en ljus-kontrollerad variabel resistor. Motståndet av ett fotomotstånd minskar med ökande infallande ljus intensitet. Ett fotomotstånd kan tillämpas i ljuskänsliga detektor kretsar och ljus - och mörk-aktiverat växl...

Hur man styr arduino med ett mail

Det finns många lösningar för att styra en Arduino ombord: web lösningar, desktopen applicering lösningar, lösningar. Men hur mail? Ja, du kan hitta något på nätet men de behöver ethernet sköldar och ofta är Arduino som skickar e-post. Jag kontroll A...

Digital kök väger skala gränssnitt för Arduino

IntroJag utvecklade ett gränssnitt program för Arduino att läsa upp en skala. Det finns inga extra elektronik som behövs, bara två kablar mellan den interna skala elektroniken och Arduino.Se mer här:http://www.avdweb.nl/Arduino/Hardware-interfacing/S...