source: rtos_arduino/trunk/arduino_lib/libraries/Ciao/examples/CiaoRestServer/CiaoRestServer.ino@ 224

Last change on this file since 224 was 224, checked in by ertl-honda, 8 years ago

1.7.10のファイルに更新

File size: 3.5 KB
Line 
1/*
2
3 This sketch uses the restserver connector receive rest calls. It allows access to
4 the analog and digital pin of the board via rest calls.
5
6 supported boards: Yun,Tian.
7
8 Possible commands to send from the xmpp client:
9
10 * "/arduino/digital/PIN" -> to read a digital PIN
11 * "/arduino/digital/PIN/VALUE" -> to write a digital PIN (VALUE: 1/0)
12 * "/arduino/analog/PIN/VALUE" -> to write in a PWM PIN(VALUE range: 0 - 255);
13 * "/arduino/analog/PIN" -> to read a analog PIN
14 * "/arduino/servo/PIN/VALUE" -> to write angle in a SERVO PIN(VALUE range: 0 - 180);
15 * "/arduino/mode/PIN/VALUE" -> to set the PIN mode (VALUE: input / output)
16
17 Example:
18 "/arduino/mode/13/output" -> pinMode(13, OUTPUT)
19 "/arduino/digital/13/1" -> digitalWrite(13, HIGH)
20
21
22 NOTE: be sure to activate and configure restserver connector on Linino OS
23 http://labs.arduino.org/Ciao
24
25 created September 2015
26 by andrea[at]arduino[dot]org
27
28 */
29
30#include <Ciao.h>
31#include <Servo.h>
32
33Servo servo;
34
35void setup() {
36
37 Ciao.begin();
38}
39
40void loop() {
41
42 CiaoData data = Ciao.read("restserver");
43 if(!data.isEmpty()){
44 String id = data.get(0);
45 String sender = data.get(1);
46 String message = data.get(2);
47
48 message.toUpperCase();
49
50 String command[3];
51
52 splitString(message,"/",command,3);
53 execute(command,id);
54
55 }
56}
57
58void execute(String cmd[], String id) {
59
60 if (cmd[0] == "DIGITAL") {
61 digitalCommand(cmd,id);
62 }
63 else if (cmd[0] == "ANALOG") {
64 analogCommand(cmd,id);
65 }
66 else if (cmd[0] == "SERVO") {
67 servoCommand(cmd,id);
68 }
69 else if (cmd[0] == "MODE") {
70 setMode(cmd,id);
71 }
72 else
73 Ciao.writeResponse("restserver",id,"sorry, i don't understand :(");
74}
75
76void servoCommand(String cmd[], String id){
77 int pin, value;
78
79 pin = (cmd[1]).toInt();
80
81 if (cmd[2] != "-1") {
82 value = (cmd[2]).toInt();
83 if(value <= 180 && value >=0){
84 servo.attach(pin);
85 servo.write(value);
86 Ciao.writeResponse("restserver",id,"Servo D"+String(pin)+" set to "+String(value)+" degrees");
87 }
88 else
89 Ciao.writeResponse("restserver",id,"Invalid angle value");
90 }
91 else
92 Ciao.writeResponse("restserver",id,"Invalid command");
93}
94
95void digitalCommand(String cmd[], String id) {
96 int pin, value;
97
98 pin = (cmd[1]).toInt();
99
100 if (cmd[2] != "-1") {
101 value = (cmd[2]).toInt();
102 digitalWrite(pin, value);
103 if (value == 1)
104 Ciao.writeResponse("restserver",id,"Pin D"+String(pin)+" ON");
105 else if(value == 0)
106 Ciao.writeResponse("restserver",id,"Pin D"+String(pin)+" OFF");
107 }
108 else if (cmd[2] == "-1") {
109 value = digitalRead(pin);
110 Ciao.writeResponse("restserver",id,"D"+String(pin)+" value = "+String(value));
111 }
112}
113
114void analogCommand(String cmd[], String id) {
115 int pin, value;
116
117 pin = (cmd[1]).toInt();
118
119 if (cmd[2] != "-1") {
120 value =(cmd[2]).toInt();
121 analogWrite(pin, value);
122 Ciao.writeResponse("restserver",id,"D"+String(pin)+" set to analog");
123 }
124 else if (cmd[2] == "-1") {
125 value = analogRead(pin);
126 Ciao.writeResponse("restserver",id,"A"+String(pin)+" value = "+String(value));
127 }
128}
129
130void setMode(String cmd[], String id) {
131 int pin;
132
133 pin = (cmd[1]).toInt();
134
135 if (cmd[2] == "INPUT") {
136 pinMode(pin, INPUT);
137 Ciao.writeResponse("restserver",id," pin D"+String(pin)+" set in INPUT mode");
138 return;
139 }
140
141 if (cmd[2] == "OUTPUT") {
142 pinMode(pin, OUTPUT);
143 Ciao.writeResponse("restserver",id," pin D"+String(pin)+" set in OUTPUT mode");
144 return;
145 }
146 Ciao.writeResponse("restserver",id,"invalid mode");
147}
Note: See TracBrowser for help on using the repository browser.