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

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

ライブラリを Arduino IDE 1.7.9 にupdate

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