Quote:
Originally Posted by Bpk9p4
that would be great. Are you just getting the largest value or how do you have it working?
|
Here is the code:
In robotMap:
Code:
public static I2C pixyi2c;
pixyi2c = new I2C(Port.kOnboard, 0x54);
In Main:
Code:
public static void printPixyStuff(){
byte[] pixyValues = new byte[64];
pixyValues[0] = (byte) 0b01010101;
pixyValues[1] = (byte) 0b10101010;
RobotMap.pixyi2c.readOnly(pixyValues, 64);
if (pixyValues != null) {
int i = 0;
while (!(pixyValues[i] == 85 && pixyValues[i + 1] == -86) && i < 50) {
i++;
}
i++;
if (i > 50)
i = 49;
while (!(pixyValues[i] == 85 && pixyValues[i + 1] == -86) && i < 50) {
i++;
}
char xPosition = (char) (((pixyValues[i + 7] & 0xff) << 8) | (pixyValues[i + 6] & 0xff));
char yPosition = (char) ((pixyValues[i + 9] & 0xff << 8) | pixyValues[i + 8] & 0xff);
char width = (char) ((pixyValues[i + 11] & 0xff << 8) | pixyValues[i + 10] & 0xff);
char height = (char) ((pixyValues[i + 13] & 0xff << 8) | pixyValues[i + 12] & 0xff);
SmartDashboard.putNumber("xPosition", xPosition);
SmartDashboard.putNumber("yPosition", yPosition);
SmartDashboard.putNumber("width", width);
SmartDashboard.putNumber("height", height);
SmartDashboard.putNumber("Raw 5", pixyValues[5]);
}
}
As for your question, we have it just detecting the largest value. There might be a way to access the other data(It might just be as simple as finding the right memory address), but we did not investigate that further. I will be happy to further explain this code(as it is a little complex), but even I forget and would have to look at it a lot. But, if you want info, then I would gladly do it! Also, so people donīt get mad at me, if you use it, give us credit.
