Étape 4: Programme d’écriture
Remarque importante : Innovente bibliothèque
Au moment d’écrire ces l’IDE un LinkIt est livré avec la version 1.6.5 de l’IDE Arduino, qui se trouve être un où la bibliothèque innovente que nous utilisons est cassée. Regardez ce Instructable sur comment faire pour remplacer les fichiers innovente avec ceux qui travaillent.
Intro
Je pars du principe que vous avez déjà configuré votre IDE Arduino à travailler avec le One LinkIt, dans le cas contraire, Regardez le « getting started » guide ici.
J’ai joint mon code final de cette étape, vous devriez être capable de lire ainsi que ses observations, d’obtenir une assez bonne idée de comment cela fonctionne. Je vais vous décrire les segments importants ici.
Bibliothèques d’importation
La première étape consiste à inclure les différentes bibliothèques qui vont être utilisées.
Définir des Variables
Ensuite, nous définissons plusieurs variables globales qui seront utilisés dans le programme. Vous verrez qu’un certain nombre d'entre eux est définis comme « char name [x] », ce qui signifie qu’ils sont un tableau de caractères, x qui est utilise pour stocker des choses comme le message texte ou un message d’État.
Setup() fonction
Cette fonction est exécutée une fois quand le jury de bottes.
waitForSim() Function
Le reste du programme ne fonctionnera pas si la carte SIM n’est pas initialisée, alors cette fonction tient simplement l’appareil dans une boucle, en attente de la carte SIM soit prêt (et imprimant de petits points sur l’interface série, afin que vous sachiez que ce n’est pas mort).
receiveSMS() Function
Cette fonction vérifie si il y a un nouveau SMS. S’il y en a un, il est lu, un caractère à la fois et stocké dans la mémoire tampon de smsContent (un tableau de caractères), puis la fonction retourne élevé (vrai/1). S’il n’y a aucun nouveau SMS alors la fonction retourne faible (faux/0). Cela nous permet de l’appeler aussi souvent que nous, comme dans la boucle principale, mais seulement faire quelque chose, s’il y a un nouveau message.
Le « newMessage » boolean est également définie sur TRUE lorsqu’un nouveau message est reçu.
Une fois que le SMS a été lue, il est enlevé avec la commande de la fonction flush().
chargeStatus() Function
Cette fonction crée une ligne de 16 caractères de texte sur l’état de charge.
Lbattery.isCharging() retourne un 1 si la batterie est en charge et un 0 si ce n’est pas.
Lbattery.Level() renvoie 0,33,66 ou 100, selon le niveau de charge actuel de la batterie.
Nous utilisons la fonction « sprintf » pour mettre en forme la sortie des deux fonctions précédentes dans une belle ligne de texte, que nous stockons dans le tableau de caractères statusMessage devant servir à la fonction updateDisplay().
updateDisplay() Function
C’est où tout le contenu généré précédemment est envoyé à l’écran LCD pour l’affichage. Il fera le plus de sens à elle lire et regarder les commentaires en ligne.
La première chose à noter est l’utilisation d’un compteur, qui prend acte de quand l’écran a été mise à jour (en millisecondes, fournies par la fonction de millis() Arduino), et l’actualise uniquement à nouveau si un délai suffisant (scrollInterval).
Le défilement du message sur la 2e ligne est obtenu en enregistrant deux variables :
msgStartChar
Cette variable stocke les caractères du contenu SMS nous imprimons tout d’abord (parce que nous ne pouvons pas monter l’ensemble sms de 160 caractères sur une ligne de 16 caractères)
lcdStartChar
Cette variable stocke où sur l’écran LCD, le message commence, puisque nous voulons que le message pour faire défiler à partir de la droite, il ne peut pas toujours il suffit de commencer sur le premier caractère.
Chaque fois que l’affichage est mis à jour, nous commençons à droite (position 15) et réduire les lcdStartChar jusqu'à ce que le message commence sur le premier caractère (position 0), cela défile efficacement le message laissé.
Une fois le début du message est à l’extrême gauche, il a besoin faire défiler off-screen, donc nous incrémentons la msgStartChar sur chaque mise à jour.