Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Arduino Yun Bridge example
- This example for the Arduino Yun shows how to use the
- Bridge library to access the digital and analog pins
- on the board through REST calls. It demonstrates how
- you can create your own API when using REST style
- calls through the browser.
- Possible commands created in this 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, INPUT)
- * "/arduino/mode/13/output" -> pinMode(13, OUTPUT)
- This example code is part of the public domain
- http://arduino.cc/en/Tutorial/Bridge
- HTML code by naldin
- naldin.net
- xyzturbo.blogspot.com
- */
- #include <Bridge.h>
- #include <YunServer.h>
- #include <YunClient.h>
- // Listen on default port 5555, the webserver on the Yun
- // will forward there all the HTTP requests for us.
- YunServer server;
- void setup() {
- // Bridge startup
- pinMode(13, OUTPUT);
- pinMode(12, OUTPUT);
- digitalWrite(13, LOW);
- Bridge.begin();
- digitalWrite(13, HIGH);
- // Listen for incoming connection only from localhost
- // (no one from the external network could connect)
- server.listenOnLocalhost();
- server.begin();
- }
- void loop() {
- // Get clients coming from server
- YunClient client = server.accept();
- // There is a new client?
- if (client) {
- // Process request
- process(client);
- // Close connection and free resources.
- client.stop();
- }
- delay(50); // Poll every 50ms
- }
- void process(YunClient client) {
- // read the command
- String command = client.readStringUntil('/');
- // is "digital" command?
- if (command == "digital") {
- digitalCommand(client);
- }
- // is "analog" command?
- if (command == "analog") {
- analogCommand(client);
- }
- // is "mode" command?
- if (command == "mode") {
- modeCommand(client);
- }
- }
- void digitalCommand(YunClient client) {
- int pin, value;
- // Enable HTML
- client.println("Status: 200");
- client.println("Content-type: text/html");
- client.println();
- // Read pin number
- pin = client.parseInt();
- // If the next character is a '/' it means we have an URL
- // with a value like: "/digital/13/1"
- if (client.read() == '/') {
- value = client.parseInt();
- digitalWrite(pin, value);
- }
- else {
- value = digitalRead(pin);
- }
- // Send feedback to client
- client.print(F("Pin D"));
- client.print(pin);
- client.print(F(" set to "));
- client.println(value);
- // HTML script
- client.println("<HTML><HEAD><TITLE>xyzturbo.blogspot.com</TITLE></HEAD>");
- client.println("<BR><BR>=======================<BR>");
- client.println("<BR>Liga/Desliga LED pin12:<BR>");
- client.println("<a href='http://arduino.local/arduino/digital/12/1'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/digital/12/0'>desliga</a>");
- client.println("<BR><BR>Brilho do LED pin13:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/13/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/0'>desliga</a>");
- client.println("<BR><BR>Controle Motor 1 pin3:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/3/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/0'>desliga</a>");
- /*
- client.println("<BR><BR>Controle Motor 2 pin9:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/9/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/0'>desliga</a>");
- */
- client.print("<BR></HTML>");
- // Update datastore key with the current pin value
- String key = "D";
- key += pin;
- Bridge.put(key, String(value));
- }
- void analogCommand(YunClient client) {
- int pin, value;
- // Enable HTML
- client.println("Status: 200");
- client.println("Content-type: text/html");
- client.println();
- // Read pin number
- pin = client.parseInt();
- // If the next character is a '/' it means we have an URL
- // with a value like: "/analog/5/120"
- if (client.read() == '/') {
- // Read value and execute command
- value = client.parseInt();
- analogWrite(pin, value);
- // Send feedback to client
- client.print(F("Pin D"));
- client.print(pin);
- client.print(F(" set to analog "));
- client.println(value);
- // HTML script
- client.println("<HTML><HEAD><TITLE>xyzturbo.blogspot.com</TITLE></HEAD>");
- client.println("<BR><BR>=======================<BR>");
- client.println("<BR>Liga/Desliga LED pin12:<BR>");
- client.println("<a href='http://arduino.local/arduino/digital/12/1'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/digital/12/0'>desliga</a>");
- client.println("<BR><BR>Brilho do LED pin13:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/13/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/13/0'>desliga</a>");
- client.println("<BR><BR>Controle Motor 1 pin3:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/3/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/3/0'>desliga</a>");
- /*
- client.println("<BR><BR>Controle Motor 2 pin9:<BR>");
- client.println("<a href='http://arduino.local/arduino/analog/9/255'>liga</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/211'>83%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/169'>67%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/127'>50%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/85'>33%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/42'>17%</a>");
- client.println("<a href='http://arduino.local/arduino/analog/9/0'>desliga</a>");
- */
- client.print("<BR></HTML>");
- // Update datastore key with the current pin value
- String key = "D";
- key += pin;
- Bridge.put(key, String(value));
- }
- else {
- // Read analog pin
- value = analogRead(pin);
- // Send feedback to client
- client.print(F("Pin A"));
- client.print(pin);
- client.print(F(" reads analog "));
- client.println(value);
- // Update datastore key with the current pin value
- String key = "A";
- key += pin;
- Bridge.put(key, String(value));
- }
- }
- void modeCommand(YunClient client) {
- int pin;
- // Read pin number
- pin = client.parseInt();
- // If the next character is not a '/' we have a malformed URL
- if (client.read() != '/') {
- client.println(F("error"));
- return;
- }
- String mode = client.readStringUntil('\r');
- if (mode == "input") {
- pinMode(pin, INPUT);
- // Send feedback to client
- client.print(F("Pin D"));
- client.print(pin);
- client.print(F(" configured as INPUT!"));
- return;
- }
- if (mode == "output") {
- pinMode(pin, OUTPUT);
- // Send feedback to client
- client.print(F("Pin D"));
- client.print(pin);
- client.print(F(" configured as OUTPUT!"));
- return;
- }
- client.print(F("error: invalid mode "));
- client.print(mode);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement