-
-
Save moo-im-a-cow/f55297e521fee16bc2ddd98965973e5a to your computer and use it in GitHub Desktop.
i2c communication and response
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Wire Master Writer | |
| // by Nicholas Zambetti <http://www.zambetti.com> | |
| // Demonstrates use of the Wire library | |
| // Writes data to an I2C/TWI slave device | |
| // Refer to the "Wire Slave Receiver" example for use with this | |
| // Created 29 March 2006 | |
| // This example code is in the public domain. | |
| #include <Wire.h> | |
| void setup() { | |
| Wire.begin(); // join i2c bus (address optional for master) | |
| Serial.begin(9600); // start serial for output | |
| } | |
| byte x = 0; | |
| void loop() { | |
| Wire.beginTransmission(8); // transmit to device #8 | |
| Wire.write("x is "); // sends five bytes | |
| Wire.write(x); // sends one byte | |
| Wire.endTransmission(); // stop transmitting | |
| Wire.requestFrom(8, 6); // request 6 bytes from slave device #8 | |
| while (Wire.available()) { // slave may send less than requested | |
| char c = Wire.read(); // receive a byte as character | |
| Serial.print(c); // print the character | |
| } | |
| Serial.println(); // print the character | |
| x++; | |
| delay(500); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Wire Slave Receiver | |
| // by Nicholas Zambetti <http://www.zambetti.com> | |
| // Demonstrates use of the Wire library | |
| // Receives data as an I2C/TWI slave device | |
| // Refer to the "Wire Master Writer" example for use with this | |
| // Created 29 March 2006 | |
| // This example code is in the public domain. | |
| #include <Wire.h> | |
| void setup() { | |
| Wire.begin(8); // join i2c bus with address #8 | |
| Wire.onReceive(receiveEvent); // register event | |
| Wire.onRequest(requestEvent); // register event | |
| Serial.begin(9600); // start serial for output | |
| } | |
| void loop() { | |
| delay(100); | |
| } | |
| int lastx; | |
| // function that executes whenever data is requested by master | |
| // this function is registered as an event, see setup() | |
| void requestEvent() { | |
| Wire.write("x is "); // sends five bytes | |
| Wire.write(lastx); | |
| // Wire.write("hello "); // respond with message of 6 bytes | |
| // as expected by master | |
| } | |
| // function that executes whenever data is received from master | |
| // this function is registered as an event, see setup() | |
| void receiveEvent(int howMany) { | |
| while (1 < Wire.available()) { // loop through all but the last | |
| char c = Wire.read(); // receive byte as a character | |
| Serial.print(c); // print the character | |
| } | |
| int x = Wire.read(); // receive byte as an integer | |
| lastx=x; | |
| Serial.println(x); // print the integer | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment