Created
May 28, 2016 12:06
-
-
Save squix78/0f472c82f8d4ea7a4aa8ebd0f040a687 to your computer and use it in GitHub Desktop.
This file contains 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
// Wii Remote IR sensor test sample code by kako http://www.kako.com | |
// modified output for Wii-BlobTrack program by RobotFreak http://www.letsmakerobots.com/user/1433 | |
// modified for http://DFRobot.com by Lumi, Jan. 2014 | |
// Adapted 2016 by D. Eichhorn for ESP8266 http://blog.squix.ch | |
#include <Wire.h> | |
int IRsensorAddress = 0xB0; | |
//int IRsensorAddress = 0x58; | |
int slaveAddress; | |
int ledPin = 13; | |
boolean ledState = false; | |
byte data_buf[16]; | |
int i; | |
int Ix[4]; | |
int Iy[4]; | |
int s; | |
void Write_2bytes(byte d1, byte d2) | |
{ | |
Wire.beginTransmission(slaveAddress); | |
Wire.write(d1); Wire.write(d2); | |
Wire.endTransmission(); | |
} | |
void setup() | |
{ | |
slaveAddress = IRsensorAddress >> 1; // This results in 0x21 as the address to pass to TWI | |
Serial.begin(115200); | |
pinMode(ledPin, OUTPUT); // Set the LED pin as output | |
Wire.begin(D5, D6); | |
// IR sensor initialize | |
Write_2bytes(0x30,0x01); delay(10); | |
Write_2bytes(0x30,0x08); delay(10); | |
Write_2bytes(0x06,0x90); delay(10); | |
Write_2bytes(0x08,0xC0); delay(10); | |
Write_2bytes(0x1A,0x40); delay(10); | |
Write_2bytes(0x33,0x33); delay(10); | |
delay(100); | |
} | |
void loop() | |
{ | |
ledState = !ledState; | |
if (ledState) { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); } | |
//IR sensor read | |
Wire.beginTransmission(slaveAddress); | |
Wire.write(0x36); | |
Wire.endTransmission(); | |
Wire.requestFrom(slaveAddress, 16); // Request the 2 byte heading (MSB comes first) | |
for (i=0;i<16;i++) { data_buf[i]=0; } | |
i=0; | |
while(Wire.available() && i < 16) { | |
data_buf[i] = Wire.read(); | |
i++; | |
} | |
Ix[0] = data_buf[1]; | |
Iy[0] = data_buf[2]; | |
s = data_buf[3]; | |
Ix[0] += (s & 0x30) <<4; | |
Iy[0] += (s & 0xC0) <<2; | |
Ix[1] = data_buf[4]; | |
Iy[1] = data_buf[5]; | |
s = data_buf[6]; | |
Ix[1] += (s & 0x30) <<4; | |
Iy[1] += (s & 0xC0) <<2; | |
Ix[2] = data_buf[7]; | |
Iy[2] = data_buf[8]; | |
s = data_buf[9]; | |
Ix[2] += (s & 0x30) <<4; | |
Iy[2] += (s & 0xC0) <<2; | |
Ix[3] = data_buf[10]; | |
Iy[3] = data_buf[11]; | |
s = data_buf[12]; | |
Ix[3] += (s & 0x30) <<4; | |
Iy[3] += (s & 0xC0) <<2; | |
for(i=0; i<4; i++) | |
{ | |
if (Ix[i] < 1000) | |
Serial.print(""); | |
if (Ix[i] < 100) | |
Serial.print(""); | |
if (Ix[i] < 10) | |
Serial.print(""); | |
Serial.print( int(Ix[i]) ); | |
Serial.print(","); | |
if (Iy[i] < 1000) | |
Serial.print(""); | |
if (Iy[i] < 100) | |
Serial.print(""); | |
if (Iy[i] < 10) | |
Serial.print(""); | |
Serial.print( int(Iy[i]) ); | |
if (i<3) | |
Serial.print(","); | |
} | |
Serial.println(""); | |
delay(15); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment