Finalize better reading of full string over i2c and splitting
This commit is contained in:
parent
aa575f67a3
commit
83a33cc202
|
@ -11,7 +11,11 @@
|
|||
Servo windowWiperServo;
|
||||
|
||||
// This is a variable capable of storing up to 4 items
|
||||
char instruction[4] = "";
|
||||
char instruction[32] = "";
|
||||
|
||||
// Values for the id, and raw value of an instruction
|
||||
char * id;
|
||||
char * raw_value;
|
||||
|
||||
void setup() {
|
||||
// Attach the wiper servo to pin 9
|
||||
|
@ -21,12 +25,12 @@ void setup() {
|
|||
Serial.begin(9600);
|
||||
|
||||
// This is the address the pi will speak to us at
|
||||
Wire.begin(0x8);
|
||||
Wire.begin(0x4);
|
||||
|
||||
// Call receiveEvent when data received
|
||||
Wire.onReceive(receiveEvent);
|
||||
|
||||
Serial.print("Finished Setup.");
|
||||
Serial.println("Finished Setup.");
|
||||
}
|
||||
|
||||
// Just loop to keep the running code alive, and wait for events to happen.
|
||||
|
@ -36,10 +40,27 @@ void loop() {
|
|||
|
||||
// This method runs when we receive a message
|
||||
void receiveEvent(int n) {
|
||||
for (int i = 0; i < n; i++) //n is equal to the number of data bytes received
|
||||
{
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
instruction[i] = Wire.read();
|
||||
instruction[i + 1] = '\0'; //add null after ea. char
|
||||
}
|
||||
|
||||
Serial.print(instruction);
|
||||
//RPi first byte is cmd byte so shift everything to the left 1 pos so temp contains our string
|
||||
for (int i = 0; i < n; ++i)
|
||||
instruction[i] = instruction[i + 1];
|
||||
|
||||
id = strtok (instruction, "-");
|
||||
raw_value = strtok (NULL, "-");
|
||||
|
||||
int value = atoi(raw_value);
|
||||
|
||||
Serial.println(id);
|
||||
Serial.println(value);
|
||||
|
||||
// Switch statements dont work on char *
|
||||
if (strcmp(id,"WIPE") == 0) // if id, and WIPE cancel out
|
||||
{
|
||||
windowWiperServo.write(value);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue