Arduino Terminal (13 / 16 steg)

Steg 13: kod!



När man bygger ett projekt, är programvaran vad knyter projektet samman. Du kunde ha en fantastisk söker terminal, men det gör inte något. Det är inte vad du kom hit att bygga. Du kom hit för ett utbyggbart, arbetande terminal. Och det är vad som kommer att göra.

Bifogat är en länk till Github med lite kod, som har några kommandon. Det gör inte alltför mycket i hur avancerade beräkningar och förutsäga när nästa gång du kommer att falla ner för trappan, men du kan möjligen göra det göra det! Kommandona gå enligt följande:

Hjälp - visar alla kommandon som du kan göra. Exempel: Hjälp

rfile directory/file.extension - utgångar innehållet i en fil till displayen. Lämna de katalog/katalogerna tomt om du bara vill läsa en fil i rotmappen på SD-kortet. Exempel: rfile folder/test.txt

lfile katalog - visar alla filer och kataloger med storlekar att Visa. Storlekarna är till höger om filen, och är en "/" om det är en katalog. Exempel: lfile mapp/another_folder

Återställ - motsvarigheten till att trycka på "Reset" knappen på din Arduino/alla sköldar som kan ha en. Exempel: återställa

cls - rensar skärmen, det tar ca 2,5 sekunder för den att rensa uppifrån och ned och är redo för att skriva kommandon igen.

Obs: För att göra allt arbete, kommer att du behöva installera några bibliotek. Dessa bibliotek är längst ner i detta steg, med min Github sida.


Lägga till kommandon är så enkelt så här:

På linjen ca 138 i Terminal.ino, det finns en funktion som kallas "runCommand(String args)"

Hit går alla dina kommandon. Låt oss titta på kommandot "rfile" på linje 154.

Du borde se något sånt här:

Sträng tmp;
Sträng tmp2;
tmp2 = args;
om (args.indexOf("") > -1) {
tmp = args.substring (args.indexOf(""));
tmp2.replace (tmp, "");
tmp2.replace ("", ""); Först var "-"
tmp = tmp2;
} annat {
tmp = args;
}

...

om (tmp == "rfile") {
om (args.indexOf("") == 5) {
Sträng temp = args.substring(6);
Tft.drawString ("Öppna filen.", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
fileFunct ("Läs", temp);
Temp = "";
} annat {
Tft.drawString ("prova: rfile fil.txt", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
}

}

...

annat {
Tft.drawString ("Okänd!", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
}

Låt oss bryta detta ner till den nakna ben.

Vi börjar med koden i början:

Sträng tmp;
Sträng tmp2;
tmp2 = args;
om (args.indexOf("") > -1) {
tmp = args.substring (args.indexOf(""));
tmp2.replace (tmp, "");
tmp2.replace ("", "");
tmp = tmp2;
} annat {
tmp = args;
}

Till att börja med

Sträng tmp;
Sträng tmp2;

Är bara inställningen variabler, tmp och tmp2. Dessa återställs varje gång ett kommando ã¶verförs genom, därmed förkortat namn, "tillfälligt".

tmp2 = args;

Gör en kopia av vad är matas in när du trycker på ENTER-knappen, som 'argument' skickas som kärnan ingång.

Denna lilla del av koden:

om (args.indexOf("") > -1) {

Kontrollerar att den blankstegstecken index är mer än -1, AKA där är ett blanksteg. Kommandon utan argument har inte detta.

Nu är dags att titta på detta:

tmp = args.substring (args.indexOf(""));
tmp2.replace (tmp, "");
tmp2.replace ("", "");
tmp = tmp2;

Detta, gör i den ordning de linjer, något sånt här:

Ange strängen 'tmp' till allt efter och inklusive blanksteget.

Nästa, få kopia av hela kommandot, tmp2, och ta bort alla argument tecken, så att du är kvar med bara huvudkommandot, utan några argument.

Nu ersätta pesky utrymme tecknet med ingenting.

Ange sedan sträng tmp till värdet av tmp2.

Efter att små block av kod visas:

annat {
tmp = args;
}

Som säger, eftersom det finns ingen args, ange variabeln 'tmp' värde "argumenten" så 'tmp' kan registreras.

Koden är nu redo att kolla vad kommandot är lagt det. Nu dags för nästa block av kod.

om (tmp == "rfile") {
om (args.indexOf("") == 5) {
Sträng temp = args.substring(6);
Tft.drawString ("Öppna filen.", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
fileFunct ("Läs", temp);
Temp = "";
} annat {
Tft.drawString ("prova: rfile fil.txt", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
}

}

Koden:

om (tmp == "rfile") {

Kontrollerar att strängen "tmp' (det viktigaste kommandot blocket) är kommandot"rfile".

Går vidare,

om (args.indexOf("") == 5) {

Ser till att det finns ett utrymme på index för 5, som i det här kommandot är det direkt efter "rfile". Eftersom kodning och nummer börjar vid index 0, bör detta nummer längden på kommandot. Ett exempel på detta skulle vara:

r -> 0

f -> 1

Jag -> 2

l -> 3

e -> 4

[Mellanslag] -> 5

Sträng temp = args.substring(6);

Denna kod skapas en ny sträng, återställa igen varje gång funktionen kommando körs, som är lika med ett heltal mer än antalet som du använde i den sista delen. Ex: Om numret var 5, som man, detta nummer kommer e 6. Detta skapar strängen temp några argument. Ex: om kommandot, rfile mapp, sattes i, temp skulle vara mapp.

Nu, som i följande kod inte behövs för att göra dina egna kommandon med andra funktioner, jag kommer att kortfattat skumma över detta.

Tft.drawString ("Öppna filen.", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
fileFunct ("Läs", temp);
Temp = "";

I ordning, rad för rad, detta är vad koden gör:

Den drar en sträng "Öppna filen." till den sista X- och Y-värde uppsättning.

Detta anger Y-värde för användning av nästa gång något skrivs till skärmen 1 brev (eller 10 pixlar) nedåt.

X-värde är satt till 0, så något skrivs till skärmen, det börjar vid kanten av skärmen.

Detta är den huvudsakliga funktionen av kommandot rfile. Detta är en typen void-funktion, som tar två strängar, som den första har att "läsa", och namnet är temp eller argument.

Detta bara återställer temp, ifall något konstigt händer som är oväntat.

Koden är nu nästan klar för kommandot. Det finns två små delar kvar, som ser ut så här:

annat {
Tft.drawString ("prova: rfile fil.txt", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
}

Som kallas om det finns inga blanksteg, eller den sätts på fel ställe.

Detta visar på skärmen, "försök: rfile fil.txt" i rött, sedan skapar en ny rad.

annat {
Tft.drawString ("Okänd!", getX(), getY(), 1, röd);
setY(getY() + 10);
setX(0);
}

Detta kallas när kommandot är okänd.

Detta visas på skärmen, "Okänd!" i rött, sedan skapar en ny rad.

Tja, det är verkligen det för hur kommandona fungerar, jag kommer snart att lägga till kommentarer hela koden på Github, tala om vad allt betyder.

GitHub:

https://github.com/RubbaBoy/ArduinoTerminal

Obs: Jag kommer att lägga mycket mer funktioner till detta projekt och uppdatera saker, så oroa dig inte om något inte fungerar korrekt, eller vill ha ett nytt kommando.

Bibliotek:

PS/2 tangentbord bibliotek:

http://www.pjrc.com/teensy/arduino_libraries/PS2Ke...

Seeed Studio 2.8'' TFT Touch Shield V1.0 bibliotek:

https://github.com/Seeed-Studio/TFT_Touch_Shield_V...

Seeed Studio Ethernet Shield V2.0

https://github.com/Seeed-Studio/Ethernet_Shield_W5...

Se Steg
Relaterade Ämnen

Arduino nano med Terminal-kontakter!

Är du trött genom att ansluta arduino med hoppare! Här är hur man gör Arduino med Terminal-kontakter.Steg 1: Komponenter som krävs * Koppar klädda styrelse* Järn klorid* borra bitar .8mm* borra pistol* CD-markörSteg 2: Gör ett spår från arduino Termi...

ESP8266 + Arduino + Oled (klient IRC Chat kontroll) del 1

Jag har sett många exempel på hur man fjärrstyra Arduino men kräver överdriven inställningar och när med ethernet LAN eller WLAN-kommunikation i de flesta exemplen fungerar bara på ett lokalt nätverk eller intranät.Jag hade försökt innan ett enkelt s...

Self Balancing PT (hemlagad Segway)

Detta Instructable är avsedd att dela min hobby-projekt: en själv-balansera personlig transport (SBPT), även känd som "hemlagad Segway". Det är ett intressant projekt som kräver en minimal kunskap inom elektronik och några hantverk färdigheter....

Morsealfabetet Encoder/Decoder använder en LinkIt

Detta är det andra projektet använder LinkIt en stiger ombord i den tidigare instructable jag visade dig hur man bygger ett avstånd måttband.I denna tutorial ska jag visa dig hur man gör en Morsekod Encoder/Decoder använder LinkIt en. Resultatet kan...

Automatiserad bil

Detta instructable syftar till att erbjuda en metod för att konvertera en fjärrkontroll bil in i en automatiserad bil. Slutresultatet är ett fordon som kan svara på sin miljö genom en rörelsesensor och således vara kodad att köra genom en viss sökväg...

Enkel parkering Sensor

min bil har endast parkering sensor för motsatsen, så när jag kommer in i garaget finns det inget sätt att veta om jag är nära nog på väggen så att dörren till stänger eller för nära att jag kan slå i väggen med bilen. Så beslutat att bygga en parker...

Arduino seriell UART rullning Visa terminal med en 2.2" TFT

Jag har gjort projekt kring en 2.2" TFT-skärm som använder den ILI9341 förare chipet, denna display kan vara ansluten till och kontrolleras av en Arduino UNO. Som lite av bakgrunden läser du kan hitta min instructable här användbara.Under felsökning...

Python Terminal för billigt Pi Arduino anslutning

Raspberry Pi är en Linux-maskin så finns det förmodligen massor av terminal program för den. Men jag har skrivit en ny i Python, varför jag bry sig? Läste på. Om du gör ett projekt som använder både Pi och Arduino måste du förmodligen ett sätt för tv...

Arduino seriell Terminal Oled med Adafruit SSD1306 bibliotek

Jag använde bibliotek och grafiska Adafruit_GFX Adafruit_SSD1306 jag gjort Arduino plattformen används som seriell terminaloch tecknen fått atravez en mini OLED-skärm, detta är bara den första delen av ett något mer komplext projekt med Arduino och E...

Montering av "Kloka klockan 2" (Arduino-baserad väckarklocka med massor av extra funktioner)

denna handledning visar hur du monterar kitet för Wise klockan 2, ett öppen källkodsprojekt (hårdvara och mjukvara).En komplett Klok klockan 2 kit kan köpas här.Sammanfattningsvis är detta vad Wise klockan 2 kan göra (i den aktuella öppna källa mjukv...

LED Dawn / Sunrise väckarklocka, nattlampa & säkerhet ljus - Arduino kompatibel

som nätterna förlängs successivt under hösten 2011, jag upptäckt glädjen med Arduino och trodde att det skulle vara ett bra sätt att genomföra något som jag har velat ha en lång stund - ett skonsamt sätt att vakna upp på en vintermorgon. Tyvärr, det...

4-i-1 Arduino LCD sköld Version 2

Med detta projekt, har du minst fyra produkter i en eftersom detta kit består av en Arduino Uno, en LCD-skärm, en USB-A till USB-B kabel och alla material som du kommer att behöva utveckla följande fyra projekt: en disk, en termometer, en kondensator...

Arduino lasershow med Full XY kontroll

uppdatering! Se steg 32 ta reda på hur du använder detta projekt med en grön laser! Också - kassan den LaserTweet Instructable att göra detta projekt Visa data från Twitter:Detta projekt använder en Arduino och några billiga högtalare att skapa en ri...

Goodbye Moshi eller hur du kör din laserskrivare på Arduino

Uppdatering 19/04/2016:MarlinKimbra är här!Detta är en av de bästa firmwares baserat på Marlin jag sett på länge, ingen funktion saknas.Men för vårt syfte här är det bara om att vara uppdaterade och få bättre resultat.Kontrollera det sista steget i d...

Arduino-ning Lego Technic gå Kart

Projektet började som en strävan att hitta ett sätt att kombinera Lego Technic chassi byggnad med billiga råvaror elektronik till motorize och fjärrkontroll användarvänlighet det. Jag undervisar robotics workshop och jag behövde en Lego-baserad platt...

Ett trådlöst kontrollerade, Arduino-Powered anslagstavla

bygga själv en trådlöst styrd, Arduino-powered anslagstavla!Här är ett enkelt projekt som skapar en trådlöst programmerbart anslagstavla. XBee moduler använder för att ge en trådlös seriell länk mellan datorn och enheten. Du interagerar med den via e...

Arduino autonoma fordon

Detta är en bil. Fler kommer snart!Steg 1: Klipp ut kroppen.Klipp ut en bit 8 tum (eller 16) plywood. Kontrollera att den har en skåra i mitten för att rymma redskap och hjul och att det är stor nog att passa allt.Steg 2: Lim på motor.Limma på motorn...

Arduino Laser Visa (anpassad från NothingLabs' Instructable)

detta projekt använder en Arduino, ett par högtalare och en laserpekare för att skapa en laser projektor kan spåra ut mönster i ett mörkt rum. För att driva det, har jag cannibalized ett PC ATX nätaggregat kan leverera massor av nuvarande för högtala...

Arduino motoriska kontroll Kit

syftet med projektet är att göra en Arduino motoriska kontroll sköld, som är billigt, ergonomisk och lätt att göra. Jag tänkte, varför inte använda kartong i stället för en pcb, efter alla dess lätt att använda för nästan alla!Motorn ansluts till de...