I'm trying to make a game where i can use one Arduino as a controller (the controller is a potentiometer) and the other Arduino sending the signals to the computer. Im trying to figure out communication with two Arduino's so i would like to use two instead of one although using one would be logical and easier. Ive tried looking into I2C but cant seem to figure it out.
-
1Why are you using 2 Arduinos? You could do all of this in just one Arduino.sa_leinad– sa_leinad2016年12月07日 01:55:21 +00:00Commented Dec 7, 2016 at 1:55
-
Please also improve the formatting of your question.sa_leinad– sa_leinad2016年12月07日 01:55:41 +00:00Commented Dec 7, 2016 at 1:55
1 Answer 1
Start by reading the potentiometer. Add a Wire request service function and that makes the Slave:
#include <Wire.h>
const uint8_t controllerAddress = 8;
const int controllerPin = A0;
volatile int controllerValue = 0;
void setup() {
Wire.begin(controllerAddress);
Wire.onRequest(requestEvent);
}
void loop() {
int value = analogRead(controllerPin);
noInterrupts();
controllerValue = value;
interrupts();
}
void requestEvent() {
Wire.write((const uint8_t*) &controllerValue, sizeof(controllerValue));
}
This is minor update of the Arduino Wire Master Reader tutorial. The sketch for the Master is left as an exercise.
Cheers!
-
I would assign 'A0' to controllerPin instead of '0', to avoid any confusing with digital pins: const int controllerPin = A0;Jot– Jot2017年04月06日 06:57:17 +00:00Commented Apr 6, 2017 at 6:57
-
Nice catch. I will fix that.Mikael Patel– Mikael Patel2017年04月06日 18:12:50 +00:00Commented Apr 6, 2017 at 18:12