diff options
Diffstat (limited to 'CODE/debug/prewk/IR_seeker')
| -rw-r--r-- | CODE/debug/prewk/IR_seeker/IR_seeker.ino | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/CODE/debug/prewk/IR_seeker/IR_seeker.ino b/CODE/debug/prewk/IR_seeker/IR_seeker.ino new file mode 100644 index 0000000..90c9965 --- /dev/null +++ b/CODE/debug/prewk/IR_seeker/IR_seeker.ino @@ -0,0 +1,205 @@ +#include <Adafruit_MCP23X17.h> + +#define ir1 0 // GPA0 +#define ir2 1 // GPA1 +#define ir3 2 // GPA2 +#define ir4 3 // GPA3 +#define ir5 4 // GPA4 +#define ir6 5 // GPA5 +#define ir7 6 // GPA6 +#define ir8 7 // GPA7 +#define ir9 8 // GPB0 +#define ir10 9 // GPB1 +#define ir11 10 // GPB2 +#define ir12 11 // GPB3 +#define ir13 12 // GPB4 +#define ir14 13 // GPB5 +#define ir15 14 // GPB6 +#define ir16 15 // GPB7 + +int dir1 = 1; // data IR1 +int dir2 = 1; // data IR2 +int dir3 = 1; // etc +int dir4 = 1; +int dir5 = 1; +int dir6 = 1; +int dir7 = 1; +int dir8 = 1; +int dir9 = 1; +int dir10 = 1; +int dir11 = 1; +int dir12 = 1; +int dir13 = 1; +int dir14 = 1; +int dir15 = 1; +int dir16 = 1; + +volatile long IRcount1 = 0; +volatile long IRcount2 = 0; +volatile long IRcount3 = 0; +volatile long IRcount4 = 0; +volatile long IRcount5 = 0; +volatile long IRcount6 = 0; +volatile long IRcount7 = 0; +volatile long IRcount8 = 0; +volatile long IRcount9 = 0; +volatile long IRcount10 = 0; +volatile long IRcount11 = 0; +volatile long IRcount12 = 0; +volatile long IRcount13 = 0; +volatile long IRcount14 = 0; +volatile long IRcount15 = 0; +volatile long IRcount16 = 0; + +// Instance for the first MCP23017 at address 0x20 +Adafruit_MCP23X17 mcp1; + +void setup() { + Serial.begin(9600); + while (!Serial); + Serial.println("MCP23xxx Button Test!"); + + // Initialize first MCP23017 with I2C address 0x20 + if (!mcp1.begin_I2C(0x20)) { + Serial.println("Error initializing MCP23017 at 0x20."); + while (1); + } + + // Configure pins for the first MCP23017 (0x20) + mcp1.pinMode(ir1, INPUT); + mcp1.pinMode(ir2, INPUT); + mcp1.pinMode(ir3, INPUT); + mcp1.pinMode(ir4, INPUT); + mcp1.pinMode(ir5, INPUT); + mcp1.pinMode(ir6, INPUT); + mcp1.pinMode(ir7, INPUT); + mcp1.pinMode(ir8, INPUT); + mcp1.pinMode(ir9, INPUT); + mcp1.pinMode(ir10, INPUT); + mcp1.pinMode(ir11, INPUT); + mcp1.pinMode(ir12, INPUT); + mcp1.pinMode(ir13, INPUT); + mcp1.pinMode(ir14, INPUT); + mcp1.pinMode(ir15, INPUT); + mcp1.pinMode(ir16, INPUT); + + attachInterrupt(digitalPinToInterrupt(ir1), IRtrigger1, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir2), IRtrigger2, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir3), IRtrigger3, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir4), IRtrigger4, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir5), IRtrigger5, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir6), IRtrigger6, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir7), IRtrigger7, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir8), IRtrigger8, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir9), IRtrigger9, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir10), IRtrigger10, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir11), IRtrigger11, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir12), IRtrigger12, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir13), IRtrigger13, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir14), IRtrigger14, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir15), IRtrigger15, CHANGE); + attachInterrupt(digitalPinToInterrupt(ir16), IRtrigger16, CHANGE); + + Serial.println("Looping..."); +} + +void IRtrigger1() { + IRcount1++; +} +void IRtrigger2() { + IRcount2++; +} +void IRtrigger3() { + IRcount3++; +} +void IRtrigger4() { + IRcount4++; +} +void IRtrigger5() { + IRcount5++; +} +void IRtrigger6() { + IRcount6++; +} +void IRtrigger7() { + IRcount7++; +} +void IRtrigger8() { + IRcount8++; +} +void IRtrigger9() { + IRcount9++; +} +void IRtrigger10() { + IRcount10++; +} +void IRtrigger11() { + IRcount11++; +} +void IRtrigger12() { + IRcount12++; +} +void IRtrigger13() { + IRcount13++; +} +void IRtrigger14() { + IRcount14++; +} +void IRtrigger15() { + IRcount15++; +} +void IRtrigger16() { + IRcount16++; +} + + +void loop() { + Serial.print("ir 1 changes: "); + Serial.print(IRcount1); + Serial.print(", ir 2 changes: "); + Serial.print(IRcount2); + Serial.print(", ir 3 changes: "); + Serial.print(IRcount3); + Serial.print(", ir 4 changes: "); + Serial.print(IRcount4); + Serial.print(", ir 5 changes: "); + Serial.print(IRcount5); + Serial.print(", ir 6 changes: "); + Serial.print(IRcount6); + Serial.print(", ir 7 changes: "); + Serial.print(IRcount7); + Serial.print(", ir 8 changes: "); + Serial.print(IRcount8); + Serial.print(", ir 9 changes: "); + Serial.print(IRcount9); + Serial.print(", ir 10 changes: "); + Serial.print(IRcount10); + Serial.print(", ir 11 changes: "); + Serial.print(IRcount11); + Serial.print(", ir 12 changes: "); + Serial.print(IRcount12); + Serial.print(", ir 13 changes: "); + Serial.print(IRcount13); + Serial.print(", ir 14 changes: "); + Serial.print(IRcount14); + Serial.print(", ir 15 changes: "); + Serial.print(IRcount15); + Serial.print(", ir 16 changes: "); + Serial.println(IRcount16); + + volatile long IRcounts[] = {IRcount1, IRcount2, IRcount3, IRcount4, IRcount5, IRcount6, IRcount7, IRcount8, IRcount9, IRcount10, IRcount11, IRcount12, IRcount13, IRcount14, IRcount15, IRcount16}; + long maxCount = IRcounts[0]; + int highessensor = 1; + for (int i = 0; i < 15; ++i) { + if (IRcounts[i] > maxCount) { + maxCount = IRcounts[i]; + highessensor = i + 1; + } + } + Serial.print("Ball is at sensor: "); + Serial.print(highessensor); + Serial.print(", with value of "); + Serial.println(maxCount); + + delay(250); +} |
