The two white Esplora Tinkerkit Inputs IN-A and IN-B to the right of the USB cable |
/*
Esplora Tinkerkit Input Read
This sketch shows you how to read the Tinkerkit Inputs on the Arduino Esplora.
Most likely this program will become obsolete when the Arduino team updates the IDE beyond 1.04
Created on 2013-03-24 by Mike Barela
This example is in the public domain, please attribute
*/
#include <Esplora.h>
#if ARDUINO < 105
const byte CH_TINKERKIT_INA = 8; // Add values missing from Esplora.h
const byte CH_TINKERKIT_INB = 9;
const byte INPUT_A = 0;
const byte INPUT_B = 1;
unsigned int readTinkerkitInput(byte whichInput) { // return 0-1023 from Tinkerkit Input A or B
return readChannel(whichInput+CH_TINKERKIT_INA); } // as defined above
unsigned int readChannel(byte channel) { // as Esplora.readChannel is a private function
digitalWrite(A0, (channel & 1) ? HIGH : LOW); // we declare our own as a hack
digitalWrite(A1, (channel & 2) ? HIGH : LOW); //
digitalWrite(A2, (channel & 4) ? HIGH : LOW); // digitalWrite sets address lines for the input
digitalWrite(A3, (channel & 8) ? HIGH : LOW);
return analogRead(A4); // analogRead gets value from MUX chip
}
#endif
void setup() {
// initialize the serial communication:
Serial.begin(9600);
}
void loop() {
// read the sensor into a variable:
unsigned int input_a_value = readTinkerkitInput(INPUT_A);
unsigned int input_b_value = readTinkerkitInput(INPUT_B);
// print the input values to serial monitor
Serial.print("Input A: ");
Serial.print(input_a_value);
Serial.print(", Input B: ");
Serial.println(input_b_value);
// add a delay between readings (not required in general)
delay(1000);
}
The Tinkerkit Inputs are on multiplexer addresses 8 and 9. These are not defined in the esplora.h file as of IDE version 1.04. Also the function used to read an inputs from the multiplexer, readChannel. So these are recreated in the example above. Every second, IN-A and IN-B are read then printed to the serial monitor. As you see in the picture above, the IN-A data pin (center) is connected to +5 volts left pin). The IN-B data pin is connected to the ground pin on the left). This produces 1023 for IN-A and 0 for IN-B. Note: if you have nothing connected to an input, it will return a random value between 0 and 1023 like any analog input.
The two Tinkerkit outputs are to the left of the USB connector and are orange. If you wish to read or write to them it is more straightforward. OUT-B is on Arduino logical pin D11 and OUT-A is on pin D3. These are digital pins but they are pulse width modulation enabled so analogWrite works also. Previous programs on this site have used these connectors to send data, mainly to an xbee. See this one for more.
If you are interested in other Esplora articles on this website, a list is here.
No comments:
Post a Comment