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