Étape 4: Sketch Arduino
En este caso se tomo el ejemplo del pont que viene incluido con el YUN, modificando solamente el pin en el que se conecta el capteur de movimiento.
/*
Exemple de pont Yún Arduino
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/digital/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://www.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 BridgeServer serveur ;
void setup() {/ / pont de démarrage pinMode (6, entrée) ; Bridge.Begin() ;
Attendez la connexion entrante uniquement à partir de localhost / / (nul du réseau externe pourrait relier) server.listenOnLocalhost() ; Server.Begin() ; }
void loop() {/ / obtenir des clients venant de serveur BridgeClient 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}
annuler le processus (client BridgeClient) {/ / 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(BridgeClient 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(BridgeClient 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(BridgeClient 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) ; }