Changeset 224 for rtos_arduino/trunk/arduino_lib/libraries/Ciao
- Timestamp:
- Apr 30, 2016, 11:29:25 PM (8 years ago)
- Location:
- rtos_arduino/trunk/arduino_lib/libraries/Ciao
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
rtos_arduino/trunk/arduino_lib/libraries/Ciao/examples/CiaoRestClient/CiaoRestClient.ino
r175 r224 3 3 4 4 #define CONNECTOR "rest" 5 #define SERVER_ADDR "192.168. 0.100" // change ip address with your server ip address5 #define SERVER_ADDR "192.168.1.1" // change ip address with your server ip address 6 6 7 int buttonState = LOW; //this variable tracks the state of the button, low if not pressed, high if pressed8 int ledState = -1; //this variable tracks the state of the LED, negative if off, positive if on7 int buttonState; //this variable tracks the state of the button, low if not pressed, high if pressed 8 int ledState = HIGH; //this variable tracks the state of the LED, negative if off, positive if on 9 9 long lastDebounceTime = 0; // the last time the output pin was toggled 10 10 long debounceDelay = 50; // the debounce time; increase if the output flickers 11 String command = "/arduino/mode/13/output"; 12 int previous_value = LOW; 11 13 12 14 void setup() { 13 15 Ciao.begin(); 16 Ciao.write(CONNECTOR, SERVER_ADDR, command); 14 17 pinMode(2, INPUT); 15 18 … … 20 23 //sample the state of the button - is it pressed or not? 21 24 buttonState = digitalRead(2); 22 25 23 26 //filter out any noise by setting a time buffer 24 if ( (millis() - lastDebounceTime) > debounceDelay) { 25 26 //if the button has been pressed, lets toggle the LED from "off to on" or "on to off" 27 if ( (buttonState == HIGH) && (ledState < 0) ) { 28 29 CiaoData data = Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/12/1"); //turn LED on 30 ledState = -ledState; //now the LED is on, we need to change the state 31 lastDebounceTime = millis(); //set the current time 27 if ( (buttonState == HIGH) && (previous_value == LOW) && (millis() - lastDebounceTime) > debounceDelay ) { 28 if (ledState == HIGH){ 29 command = "/arduino/digital/13/0"; 30 ledState = LOW; 32 31 } 33 else if ( (buttonState == HIGH) && (ledState > 0) ) { 34 35 CiaoData data = Ciao.write(CONNECTOR, SERVER_ADDR, "/arduino/digital/12/0"); //turn LED off 36 ledState = -ledState; //now the LED is off, we need to change the state 37 lastDebounceTime = millis(); //set the current time 38 39 if (!data.isEmpty()){ 40 Ciao.println( "State: " + String (data.get(1)) ); 41 Ciao.println( "Response: " + String (data.get(2)) ); 42 } 43 else{ 44 Ciao.println ("Write Error"); 45 } 46 32 else{ 33 command = "/arduino/digital/13/1"; 34 ledState = HIGH; 47 35 } 48 36 37 lastDebounceTime = millis(); //set the current time 38 CiaoData data = Ciao.write(CONNECTOR, SERVER_ADDR, command); 39 if (!data.isEmpty()){ 40 Ciao.println( "State: " + String (data.get(1)) ); 41 Ciao.println( "Response: " + String (data.get(2)) ); 42 } 43 else{ 44 Ciao.println ("Write Error"); 45 } 46 49 47 } 50 48 49 previous_value = buttonState; 50 51 51 } -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/examples/CiaoRestServer/CiaoRestServer.ino
r175 r224 1 1 /* 2 2 3 This sketch uses the xmpp connector to receive command for the MCU from a xmpp client. 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. 4 7 5 8 Possible commands to send from the xmpp client: 6 9 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 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 20 25 created September 2015 21 26 by andrea[at]arduino[dot]org 22 27 23 28 */ 24 29 25 30 #include <Ciao.h> 26 31 #include <Servo.h> … … 35 40 void loop() { 36 41 37 CiaoData data = Ciao.read("restserver"); 38 if(!data.isEmpty()){ 42 CiaoData data = Ciao.read("restserver"); 43 if(!data.isEmpty()){ 39 44 String id = data.get(0); 40 45 String sender = data.get(1); 41 46 String message = data.get(2); 42 47 43 48 message.toUpperCase(); 44 49 45 50 String command[3]; 46 51 47 52 splitString(message,"/",command,3); 48 53 execute(command,id); … … 71 76 void servoCommand(String cmd[], String id){ 72 77 int pin, value; 73 78 74 79 pin = (cmd[1]).toInt(); 75 80 76 81 if (cmd[2] != "-1") { 77 82 value = (cmd[2]).toInt(); … … 85 90 } 86 91 else 87 Ciao.writeResponse("restserver",id,"Invalid command"); 92 Ciao.writeResponse("restserver",id,"Invalid command"); 88 93 } 89 94 90 95 void digitalCommand(String cmd[], String id) { 91 96 int pin, value; 92 97 93 98 pin = (cmd[1]).toInt(); 94 99 95 100 if (cmd[2] != "-1") { 96 101 value = (cmd[2]).toInt(); … … 99 104 Ciao.writeResponse("restserver",id,"Pin D"+String(pin)+" ON"); 100 105 else if(value == 0) 101 Ciao.writeResponse("restserver",id,"Pin D"+String(pin)+" OFF"); 106 Ciao.writeResponse("restserver",id,"Pin D"+String(pin)+" OFF"); 102 107 } 103 108 else if (cmd[2] == "-1") { … … 111 116 112 117 pin = (cmd[1]).toInt(); 113 118 114 119 if (cmd[2] != "-1") { 115 120 value =(cmd[2]).toInt(); … … 127 132 128 133 pin = (cmd[1]).toInt(); 129 134 130 135 if (cmd[2] == "INPUT") { 131 136 pinMode(pin, INPUT); -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/keywords.txt
r175 r224 7 7 ####################################### 8 8 9 Ciao 10 CiaoData 11 Wifi 12 WifiData 9 Ciao KEYWORD3 10 CiaoData KEYWORD3 11 Wifi KEYWORD3 12 WifiData KEYWORD3 13 13 14 14 ####################################### … … 16 16 ####################################### 17 17 18 begin KEYWORD2 19 writeResponse KEYWORD2 20 available KEYWORD2 21 read KEYWORD2 22 write KEYWORD2 23 bool KEYWORD2 18 writeResponse KEYWORD2 19 available KEYWORD2 20 read KEYWORD2 21 write KEYWORD2 24 22 23 ####################################### 24 # Constants (LITERAL1) 25 ####################################### -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/library.properties
r175 r224 1 1 name=Ciao 2 version= 1.02 version=0.0.3 3 3 author=Arduino srl 4 4 maintainer=Arduino srl<info@arduino.org> -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/Ciao.h
r175 r224 30 30 31 31 #include <Arduino.h> 32 #include <Stream.h> 32 33 #include "lib/CiaoData.h" 33 34 #if defined(__AVR_ATmega328P__) 34 #include "lib/rest.h"35 35 #include "lib/SC16IS750.h" 36 #include "lib/espduino.h"37 #else38 #include <Stream.h>39 36 #endif 40 37 … … 44 41 #define BAUDRATE 250000 45 42 #elif defined(ARDUINO_ARCH_SAMD) 46 #define BAUDRATE 11520043 #define BAUDRATE 4000000 47 44 #endif 48 45 … … 55 52 CiaoData parse( String, String); 56 53 void println(String log){}; 57 #if defined(__AVR_ATmega32U4__)58 54 CiaoClass(Stream &_stream); 59 #elif defined(ARDUINO_ARCH_SAMD)60 CiaoClass(Serial_ stream);61 #endif62 55 63 56 private: 64 57 void dropAll(); 65 58 bool started; 66 #if defined(__AVR_ATmega32U4__)67 59 Stream &stream; 68 #elif defined(ARDUINO_ARCH_SAMD)69 Serial_ stream;70 #endif71 60 }; 72 61 … … 80 69 } 81 70 #elif defined(ARDUINO_ARCH_SAMD) 82 SerialCiaoClass(Serial_ serial)83 : CiaoClass( serial){84 // Empty 71 SerialCiaoClass(Serial_ &_serial) 72 : CiaoClass(_serial), serial(_serial) { 73 // Empty 85 74 } 86 75 #endif … … 93 82 HardwareSerial &serial; 94 83 #elif defined(ARDUINO_ARCH_SAMD) 95 Serial_ serial;84 Serial_ &serial; 96 85 #endif 97 86 }; … … 103 92 #else 104 93 105 // class CiaoData { 106 // public: 107 108 // char* get(int index){ 109 // return msg_split[index]; 110 // } 111 112 // public: 113 // char* msg_split[3]; 114 115 // }; 94 class ArduinoWifiClass : public WifiData 95 { 116 96 117 class CiaoClass { 97 public: 98 void begin(); 99 100 boolean connected(); 101 void connect(char* , char*); 102 103 void powerON(); 104 void powerOFF(); 105 106 107 }; 108 109 class CiaoClass : public WifiData 110 { 118 111 public: 119 112 void begin(); … … 124 117 CiaoData write( char*, char*, String ); // ârestâ, âhostnameâ, âStringoneâ, 125 118 CiaoData write( char*, char*, String, char*); // ârestâ, âhostnameâ, âStringoneâ, âmethodâ 126 127 void print(String str);128 void println(String str);129 119 130 120 }; 121 122 131 123 extern CiaoClass Ciao; 124 extern ArduinoWifiClass Wifi; 132 125 133 126 #endif -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/Ciao.cpp
r175 r224 24 24 */ 25 25 26 #include "Ciao.h"27 26 28 27 #if defined(__AVR_ATmega32U4__) || defined(ARDUINO_ARCH_SAMD) 29 28 30 #if defined(__AVR_ATmega32U4__) 29 #include "Ciao.h" 30 31 31 CiaoClass::CiaoClass(Stream &_stream) : 32 32 stream(_stream), started(false) { 33 33 // Empty 34 34 } 35 #elif defined(ARDUINO_ARCH_SAMD)36 CiaoClass::CiaoClass(Serial_ stream){37 // Empty38 }39 #endif40 35 41 36 void CiaoClass::begin() { … … 60 55 } 61 56 do{ 62 #if defined(__AVR_ATmega32U4__)63 57 stream.print(F("run-ciao\n")); //start bridge python 64 58 stream.readStringUntil(END_TX_CHAR); 65 #endif66 59 delay(3000); 67 60 stream.println("ciao;r;status"); //check if bridge python is running -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/SC16IS750.cpp
r175 r224 27 27 #define WIRE Wire 28 28 29 30 WifiData::WifiData(uint8_t prtcl, uint8_t addr_sspin) 31 { 32 protocol = prtcl; 33 if ( protocol == SC16IS750_PROTOCOL_I2C ) { 34 device_address_sspin = (addr_sspin>>1); 35 } else { 36 device_address_sspin = addr_sspin; 37 } 29 WifiData::WifiData() 30 { 31 device_address_sspin = (SC16IS750_ADDRESS_AA >> 1); 38 32 peek_flag = 0; 39 33 } … … 41 35 void WifiData::begin(uint32_t baud) 42 36 { 43 //Serial.println("1111111111111111"); 37 44 38 if ( protocol == SC16IS750_PROTOCOL_I2C) { 45 //Serial.println("22222222222222");46 39 WIRE.begin(); 47 40 } -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/SC16IS750.h
r175 r224 104 104 #define SC16IS750_PROTOCOL_I2C (0) 105 105 #define SC16IS750_PROTOCOL_I2C (0) 106 #define END "<!--~-->" 106 #define DELIMITER "<!--~-->" 107 #define EOL '\0' 107 108 108 109 class WifiData : public Stream 109 110 { 110 111 public: 111 WifiData(uint8_t prtcl = SC16IS750_PROTOCOL_I2C, uint8_t addr = SC16IS750_ADDRESS_AD);112 WifiData(); 112 113 void begin(uint32_t baud); 113 114 int read(); -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/espduino.cpp
r175 r224 188 188 } 189 189 190 ESP::ESP(Stream *serial , int chip_pd):191 _serial(serial) , _chip_pd(chip_pd)190 ESP::ESP(Stream *serial): 191 _serial(serial) 192 192 { 193 193 _debugEn = false; … … 195 195 } 196 196 197 ESP::ESP(Stream *serial, Stream* debug, int chip_pd): 198 _serial(serial), _debug(debug), _chip_pd(chip_pd) 199 { 200 _debugEn = true; 201 //_serial = _debug; 202 init(); 203 } 197 204 198 void ESP::enable() 205 199 { -
rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/espduino.h
r175 r224 92 92 { 93 93 public: 94 ESP(Stream *serial, Stream* debug, int chip_pd);95 ESP(Stream *serial , int chip_pd);94 //ESP(Stream *serial, Stream* debug, int chip_pd); 95 ESP(Stream *serial); //ok 96 96 Stream *_debug; 97 97
Note:
See TracChangeset
for help on using the changeset viewer.