Étape 5: Codage dans Arduino Yun
Créer un fichier .ino dans Arduino, collez le code ci-dessous, puis enregistrez-les. Je l’ai nommé « Bridge.ino ».
Avant de télécharger les codes sur Arduino Yun, allez dans l’onglet « Outils » et sélectionnez « Arduino Yun » sous « Office », sélectionnez le port avec ttyl et usb dedans sous « Port ». Puis cliquez sur le bouton-> pour télécharger les codes suivants sur notre Arduino Yun.
Voici les codes.
/ * Ce code est une modification basée sur l’exemple de l’Arduino Yún pont
Cet exemple pour l’Arduino Yún montre comment utiliser la bibliothèque de pont pour les broches analogiques et numériques sur la carte d’accès via des appels de repos. Il montre comment vous pouvez créer votre propre API lors de l’utilisation des appels de style reste à travers le navigateur.
Commandes possibles créés dans cette shetch :
* "/ arduino/numérique/13" -> digitalRead(13) * "/ arduino/digital/13/1" -> digitalWrite (13, HIGH) * "/ arduino/analog/2/123" -> analogWrite (2, 123) * "/ arduino/analog/2" -> analogRead(2) * « / arduino/mode/13/input » -> pinMode (13, entrée) * "/ arduino / / 13/sortie en mode" -> pinMode (sortie 13)
Cet exemple de code fait partie du domaine public
http://Arduino.cc/en/Tutorial/Bridge
*/
#include #include #include
Écouter le port par défaut 5555, le serveur Web Yún / / sera avant il toutes le requêtes HTTP vous envoyez YunServer serveur ;
void setup() {/ / pont de démarrage pinMode (13, sortie); digitalWrite (13, faible) ; Bridge.Begin() ;
Attendez la connexion entrante uniquement à partir de localhost / / (nul du réseau externe pourrait relier) server.listenOnLocalhost() ; Server.Begin() ; Serial.Begin(9600) ;
}
---pont---/ / obtenir des clients venant de serveur YunClient client = server.accept() ;
Il y a un nouveau client ? Si (client) {/ / processus demande process(client) ;
Lien étroit et libérer les ressources. client.Stop() ; }
Delay(50) ; Sondage tous 50ms
}
//-------------------------bridge------------------
annuler le processus (client YunClient) {/ / lire la command String = client.readStringUntil('/') ;
est la commande « digital » ? Si (commande == « digital ») {digitalCommand(client);}
est la commande « analogique » ? Si (commande == « analogique ») {analogCommand(client);}
est la commande « mode » ? Si (commande == "mode") {modeCommand(client);}}
void digitalCommand(YunClient client) {int pin, valeur ;
Lire NIP numéro NIP = client.parseInt() ;
Si le caractère suivant est un « / », cela signifie que nous avons une URL / / avec une valeur comme: « / digital/13/1 » si (client.read() == « / ») {valeur = client.parseInt() ; digitalWrite (goupille, value);} else {valeur = digitalRead(pin);}
Envoyez vos commentaires à client.print client F ("Pin D") ; client.Print(pin) ; client.Print F ("valeur") ; client.println(value) ;
Clé de magasin de données de mise à jour avec la clé de chaîne de valeur NIP actuelle = « D » ; tige de clé += ; Bridge.put (clé, String(value)) ; }
void analogCommand(YunClient client) {int pin, valeur ;
Lire NIP numéro NIP = client.parseInt() ;
Si le caractère suivant est un « / », cela signifie que nous avons une URL / / avec une valeur comme: « / analog/5/120 » si (client.read() == « / ») {/ / lire la valeur et exécuter la commande valeur = client.parseInt() ; analogWrite (pin, valeur) ;
Envoyez vos commentaires à client.print client F ("Pin D") ; client.Print(pin) ; client.Print (F ("set to analog")) ; client.println(value) ;
Clé de magasin de données de mise à jour avec la clé de chaîne de valeur NIP actuelle = « D » ; tige de clé += ; Bridge.put (clé, String(value)) ; } else {/ / lire la valeur de broche analogique = analogRead(pin) ;
Envoyez vos commentaires à client.print client F "(goupille A") ; client.Print(pin) ; client.Print (F ("lectures analogique")) ; client.println(value) ;
Clé de magasin de données de mise à jour avec la clé de chaîne de valeur NIP actuelle = « A » ; tige de clé += ; Bridge.put (clé, String(value)) ; } }
void modeCommand(YunClient client) {int pin ;
Lire NIP numéro NIP = client.parseInt() ;
Si le caractère suivant n’est pas un « / » nous avons une URL incorrecte si (client.read()! = « / ») {client.println(F("error")) ; return;}
Mode de chaîne = client.readStringUntil('\r') ;
Si (mode == « input ») {pinMode (broche, saisir); / / envoyer vos commentaires au client client.print (F ("Pin D")); client.print(pin) ; client.print (F ("configuré en entrée!")); return;}
Si (mode == « sortie ») {pinMode (pin, sortie); / / envoyer vos commentaires au client client.print (F ("Pin D")); client.print(pin) ; client.print (F ("configuré en sortie!")); return;}
client.Print (F ("error : invalid mode")) ; client.Print(mode) ; }