m33600

I2C ESP8266 as Master

May 15th, 2016
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. //I2c code from: http://www.berryjam.eu/2014/07/advanced-arduino-i2c-communication/
  2. // (c) 2014 Ignas Gramba
  3. #include <ESP8266WiFi.h>
  4. #include <ESP8266WebServer.h>
  5. #include <Wire.h>
  6.  
  7. ESP8266WebServer webserver(80);
  8.  
  9. #define SlaveDeviceId 9
  10. int value;
  11. int pinValue;
  12.  
  13. void handleRoot() {
  14. String arg0 = String(webserver.arg(0));
  15. String arg1 = String(webserver.arg(1));
  16. if (webserver.arg(0) == "1") {
  17. pinValue = setPin(); // slave toggles led
  18. }
  19.  
  20. if (webserver.arg(0) == "2") {
  21. value = getValue(); // slave reads analog
  22. }
  23. String val = String(value);
  24. String pin = String(pinValue);
  25. String htmlDoc = "<!DOCTYPE html>";
  26. htmlDoc += "<html>";
  27. htmlDoc += "<head>";
  28. htmlDoc += "<title>TWI . Demo</title>";
  29. htmlDoc += "</head>";
  30. htmlDoc += "<body>";
  31. htmlDoc += "<br>Toggle led <a href='/?led=1'>click</a><br>";
  32. htmlDoc += "<br>Raed analog value <a href='/?led=2'>click</a><br>";
  33. htmlDoc += "<br>";
  34. htmlDoc += "pinStatus=" + pin + " Analog value=" + val;
  35. htmlDoc += "<br>";
  36. htmlDoc += "</body>";
  37. htmlDoc += "</html>";
  38. webserver.send(200, "text/html", htmlDoc);
  39. }
  40.  
  41. void handleNotFound() {
  42. webserver.send(404, "text/plain", "Page not found ...");
  43. }
  44.  
  45. void setup() {
  46. Serial.begin(115200);
  47. Wire.begin(0, 2); // join i2c bus sda,scl
  48. WiFi.begin("xxx", "yyyyy");
  49. delay(10);
  50. while (WiFi.status() != WL_CONNECTED) {
  51. delay(500);
  52. Serial.print(".");
  53. }
  54. Serial.println("");
  55. Serial.println("WiFi connected");
  56.  
  57. delay(100);
  58. webserver.on("/", handleRoot);
  59. webserver.onNotFound(handleNotFound);
  60. webserver.begin();
  61. Serial.println("Web server has started on: ");
  62. Serial.print(WiFi.localIP());
  63. }
  64.  
  65. void loop() {
  66. webserver.handleClient();
  67. }
  68.  
  69. int setPin() {
  70. Wire.beginTransmission(SlaveDeviceId);
  71. Wire.write(8); // Transfer command ("8") to set pin command
  72. Wire.endTransmission(); // Moved up here by frippe75
  73. delay(100);
  74. // GET RESPONSE
  75. int receivedValue = 0;
  76. Wire.requestFrom(SlaveDeviceId, 2);
  77. receivedValue = Wire.read() << 8 | Wire.read(); // combine two bytes into integer
  78. int error = Wire.endTransmission();
  79. Serial.println(error);
  80. return receivedValue;
  81. }
  82.  
  83. int getValue() {
  84. Wire.beginTransmission(SlaveDeviceId);
  85. Wire.write(1); // Transfer command ("1") to get X sensor value;
  86. Wire.endTransmission(); // Moved up here by frippe75
  87. delay(100);
  88. // GET RESPONSE
  89. int receivedValue1 = 0;
  90. Wire.requestFrom(SlaveDeviceId, 2);
  91. receivedValue1 = Wire.read() << 8 | Wire.read(); // combine two bytes into integer
  92. int error = Wire.endTransmission();
  93.  
  94. return receivedValue1;
  95. } - See more at: http://www.esp8266.com/viewtopic.php?f=29&t=5564#sthash.KH305HAg.dpuf
Advertisement
Add Comment
Please, Sign In to add comment