Arduino Terminal (13 / 16 étapes)

Étape 13 : Code !

Lorsque vous générez un projet, le logiciel est ce qui lie le projet. Vous pourriez avoir une borne de recherche incroyable, mais il ne fait rien. Ce n'est pas ce que vous êtes arrivé à construire. Vous êtes venu ici pour un terminal de travail extensible. Et c’est ce qui se passe à faire.

Un lien vers Github avec un code, qui a un peu de commandes est jointe. Il ne fait pas trop beaucoup dans les modes de calculs avancés et prédire quand la prochaine fois que vous tomberez en bas des escaliers, mais vous pourriez éventuellement faire faire ! Les commandes vont comme suit :

aide - affiche toutes les commandes, vous pouvez le faire. Exemple : aider

rfile directory/file.extension - renvoie le contenu d’un fichier à l’écran. Les répertoire/répertoires laisser en blanc si vous voulez juste pour lire un fichier dans le dossier racine de la carte SD. Exemple : rfile folder/test.txt

Répertoire de lfile - affiche tous les fichiers et répertoires avec des tailles d’affichage. Tailles sont à droite du fichier et est un « / » si c’est un répertoire. Exemple : lfile dossier/another_folder

reset - revient à appuyer sur le "Reset" bouton sur votre Arduino/tout boucliers qui peuvent avoir un. Exemple : Réinitialiser

cls - efface l’écran, il prend environ 2,5 secondes pour lui passer de haut en bas et est prêt à taper des commandes à nouveau.

Remarque : Pour que tout fonctionne, vous devrez installer certaines bibliothèques. Ces bibliothèques sont au bas de cette étape, avec ma page Github.


Ajout de commandes sont aussi simples comme suit :

À la ligne environ 138 du Terminal.ino, il y a une fonction appelée "runCommand(String args)"

C’est où toutes vos commandes. Penchons-nous sur la commande « rfile » à la ligne 154.

Vous devriez voir quelque chose comme ceci :

 String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); // first was " -" tmp = tmp2; } else { tmp = args; } ... if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } } ... else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } 

Brisons cette jusqu'à l’os à nu.

Nous allons commencer par le code au début :

 String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); tmp = tmp2; } else { tmp = args; } 

Pour commencer,

 String tmp; String tmp2; 

Sont juste définition des variables, tmp et tmp2. Ceux-ci sont réinitialisés chaque fois qu’une commande est passée à travers, d'où le nom abrégé, « temporaire ».

 tmp2 = args; 

Effectue une copie de ce qui est entré lorsque vous appuyez sur la touche ENTER, comme « args » est passé comme le noyau d’entrée.

Ce petit morceau de code :

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

Vérifie que l’index du caractère espace est plus de -1, alias là est un caractère d’espace. Commandes sans arguments n’aura pas cela.

Maintenant passons à la regarder ceci :

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

Ceci, dans l’ordre des lignes, fait quelque chose comme ceci :

Définissez la chaîne « tmp » sur tout après et dont le caractère espace.

Ensuite, obtenir une copie de la commande entière, tmp2 et supprimer les caractères de l’argument, alors vous êtes laissé avec juste la commande principale, sans arguments.

Maintenant, remplacez ce caractère espace embêtants avec rien.

Ensuite, définissez le tmp de String à la valeur de tmp2.

Après ce petit bloc de code, vous verrez :

 else { tmp = args; } 

Qui dit, parce qu’il n’y a aucun args, définissez la variable « tmp » à la valeur de « args » donc « tmp » peut être enregistré.

Le code est maintenant prêt pour vérifier quelle commande est-il mis. Maintenant le temps pour le bloc de code suivant.

 if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } } 

Le code :

 if (tmp == "rfile") { 

Vérifie que la chaîne 'tmp' (le bloc de commande principale) est la commande « rfile ».

Passer,

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

Fait qu’il y a un espace à l’index de 5, qui, dans cette commande, c’est juste après « rfile ». Étant donné que les numéros de codage et de commencent à l’index 0, ce nombre devrait être la longueur de la commande. Un exemple de ceci serait :

r -> 0

f -> 1

J’ai -> 2

l -> 3

e -> 4

[Espace] -> 5

 String temp = args.substring(6); 

Ce code crée une nouvelle chaîne, encore une fois remise à zéro chaque fois que la fonction de la commande est exécutée, qui est égal à un nombre entier supérieur au nombre que vous avez utilisé dans la dernière partie. Ex : Si on comptait 5, comme nous le faisions, ce nombre sera e 6. Cela crée le temp de la chaîne d’arguments. Ex: si la commande, le dossier rfile, a été conçue, temp serait dossier.

Maintenant, comme le code suivant n’est pas nécessaire pour faire vos propres commandes avec d’autres fonctions, je sera brièvement survoler ceci.

 Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; 

Dans l’ordre, ligne par ligne, c’est ce que le code :

Il dessine une chaîne « Ouverture fichier. » à la dernière X et Y valeur définie.

Cette commande définit la valeur de Y pour une utilisation de la prochaine fois que quelque chose est écrit dans la lettre de l’écran 1 (ou 10 pixels) vers le bas.

La valeur de X est définie sur 0, alors la prochaine fois que quelque chose est écrit à l’écran, ça commence au bord de l’écran.

C’est la fonction principale de la commande rfile. Il s’agit d’une fonction de type void, ce qui prend deux chaînes, dont l’une doit être « lu », et le nom du fichier est temp ou les arguments.

Juste, cela réinitialise le temp, au cas où quelque chose de bizarre passe qui est inattendu.

Maintenant, le code est presque fini pour cette commande. Il y a deux petites pièces à gauche, qui ressemble à ceci :

 else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } 

Qui est appelée si il n’y a aucun caractère d’espace, ou qu’il est mis au mauvais endroit.

Cela permet d’afficher sur l’écran, "essayez : rfile fichier.txt" en rouge, puis crée une nouvelle ligne.

 else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } 

C’est appelée lorsque la commande est inconnue.

Cela affiche sur l’écran, « Inconnu! » en rouge, puis crée une nouvelle ligne.

Eh bien, c’est vraiment tout pour comment fonctionnent les commandes, je vais bientôt ajouter commentaires partout dans le code sur Github, en disant que tout ce que signifie.

GitHub :

https://github.com/RubbaBoy/ArduinoTerminal

Note : J’ai allons ajouter beaucoup plus de fonctions à ce projet et mise à jour des choses, donc ne vous inquiétez pas si quelque chose ne fonctionne correctement, ou veulent une nouvelle commande.

Bibliothèques :

Bibliothèque de clavier PS/2 :

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

Seeed Studio 2.8'' TFT tactile bouclier V1.0 Library :

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

Seeed Studio Ethernet Shield V2.0

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

Articles Liés

ESP8266 + Arduino + Oled (contrôle Client de Chat IRC) partie 1

ESP8266 + Arduino + Oled (contrôle Client de Chat IRC) partie 1

J'ai vu beaucoup d'exemples de comment contrôler l'Arduino à distance, mais nécessitent des paramètres excessifs et quelle aide LAN ethernet ou communication WLAN dans la plupart des exemples ne fonctionne que sur un réseau local ou l'intranet.J'avai
Arduino alimenté Binary Clock

Arduino alimenté Binary Clock

cette instructable vous aidera à construire une horloge binaire de l'Arduino.  L'idée d'orignial pour cette instructable a été conçue par Daniel Andrade.  Mon instructable utilise des composants montés en surface, mais peut facilement être adapté pou
Un routeur intelligent avec visualisation de connexion WiFi

Un routeur intelligent avec visualisation de connexion WiFi

Ici partager mon dernier projet, un routeur avec coque en acrylique et certains voyants.Ce routeur est le dessous de fonctions :Que vous sachiez combien d'appareils avait relié à votre routeurVous montrer la vitesse nette en temps réel par une couleu
Mise en route avec la Intel® Galileo Gen2 Development board

Mise en route avec la Intel® Galileo Gen2 Development board

Ce tutoriel explique comment démarrer avec la carte Intel® Galileo Gen2.Intel® Galileo Gen 2 development board est un microcontrôleur basé sur le processeur d'applications Intel® Quark™ SoC X 1000, un système de marque Intel® Pentium® 32 bits sur une
SmartSwitch vert futuriste

SmartSwitch vert futuriste

Vue d'ensembleNous utilisons des interrupteurs d'éclairage tous les jours. Cependant, peu réalisons-nous combien d'énergie est gaspillée quand un interrupteur est allumé inutilement. Rarement dans certaines entreprises, vous verriez un PIR motion sen
Rechargeable Bluetooth Pan et Tilt Laser Controller

Rechargeable Bluetooth Pan et Tilt Laser Controller

J'ai toujours souhaité faire un contrôleur de laser avec servos depuis quelques années en arrière. Alors un jour, j'ai acheté mon premier deux servomoteurs sur Ebay et j'ai pensé pourquoi pas, j'ai réaliser mon rêve devenu réalité... Voici donc, laRe
ESP8266 Client IRC Chat (contrôle Web) - partie terminale série 1

ESP8266 Client IRC Chat (contrôle Web) - partie terminale série 1

Ce qui est IRC ?IRC (Internet Relay Chat) est un protocole de communication en temps réel basé sur des discussions permettant de texte entre deux ou plusieurs personnes. Elle diffère de la messagerie instantanée aux utilisateurs ne devraient pas avoi
TurtleDuino objet évitement Robot

TurtleDuino objet évitement Robot

Bonjour, dans ce instructable je vais vous montrer étape par étape comment construire le TurtleDuino, un robot d'évitement d'objet, avec un microcrontroller Arduino UNO à bord. J'ai conçu le TurtleDuino à l'aide de matériel de la quincaillerie (Home
Sélection des composants PC DIY

Sélection des composants PC DIY

/ * Style Definitions * / table. MsoNormalTable {mso-style-name: « Table Normal »; mso-tstyle-rowband-taille: 0; mso-tstyle-colband-taille: 0; mso-style-noshow:yes ; mso-style-parent: "";" mso-rembourrage-alt: 0 à 5.4pt 0 à 5.4pt ; mso-para
LinkIt un contrôle : La voie du GATT

LinkIt un contrôle : La voie du GATT

Dans mon dernier instructable, j'ai montré comment explorer la puissance de BLE en un LinkIt. Dans celui-ci, nous allons utiliser les profils de BLE du GATT pour communiquer avec un LinkIt. Plus précisément, nous allons utiliser profils BLE du GATT p
Capteur de stationnement simple

Capteur de stationnement simple

ma voiture a seulement parking capteur pour l'inverse, donc quand j'entre dans le Garage il n'y a aucun moyen de savoir si je suis assez proche au mur afin de permettre à la porte de fermer ou de trop près que je peux frapper le mur avec la voiture.
Terminal de Python pour pas cher Pi Arduino connexion

Terminal de Python pour pas cher Pi Arduino connexion

Le Raspberry Pi est une machine Linux donc il n'y a probablement une tonne d'applications de terminal pour elle. Mais j'ai écrit une nouvelle en Python, j'ai pourquoi ? Lire la suite. Si vous faites un projet qui utilise la Pi et l'Arduino, vous deve
Arduino Serial Terminal Oled avec bibliothèque Adafruit SSD1306

Arduino Serial Terminal Oled avec bibliothèque Adafruit SSD1306

J'ai utilisé la bibliothèque et les graphiques Adafruit_GFX Adafruit_SSD1306 que j'ai fait la plateforme Arduino utilisée comme terminal sérieet les caractères reçus atravez un mini écran OLED, ce n'est que la première partie d'un projet un peu plus
Défilement d’UART serial Arduino afficher terminal en utilisant un TFT 2.2"

Défilement d’UART serial Arduino afficher terminal en utilisant un TFT 2.2"

J'ai fait des projets basés autour d'un écran TFT 2.2" qui utilise le pilote ILI9341, cet affichage peut être connecté à et contrôlé par un Arduino UNO. Comme un peu de fond, je vous entends peut trouver mon instructable ici utile.Lors du débogage d'