4/3 - 4/5
- Cormac Lynch
- Apr 5, 2023
- 1 min read
Updated: Apr 6, 2023
This week I worked more on code, I finally got the Breakbeam sensors to work with both the pins on the metro mini and the multiplexer, as well as using a display to show the number of sensors that have been activated. To do this I had to restore my code to an older version and add the multiplexer code one line at a time, in order to ensure that it wouldn't stop it from working. I also got the code to work with up to ten sensors, and even though I'm only using six sensors now, I will have more than that in the final product.

I also planned on finishing the PCB this week, but Fusion 360 wasn't working with PCBs or schematics so I was unable to finish that.
Jump Meter Code
#include <Wire.h> // Enable this line if using Arduino Uno, Mega, etc.
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
#include <Adafruit_SH110X.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Adafruit_MCP23X17.h>
Adafruit_MCP23X17 mcp;
Adafruit_7segment matrix = Adafruit_7segment();
Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire);
#define SENSORPIN 3
#define SENSORPIN2 4
#define SENSORPIN3 5
#define SENSORPIN4 6
#define SENSORPIN5 7
#define SENSORPIN6 8
#define SENSORPIN7 9
#define SENSORPIN8 10
#define SENSORPIN9 11
// #define SENSORPIN10 11
// #define SENSORPIN11 12
// #define SENSORPIN12 1
// #define SENSORPIN13 2
// #define SENSORPIN14 3
// #define SENSORPIN15 4
// #define SENSORPIN16 5
// #define SENSORPIN17 6
// #define SENSORPIN18 7
//
int r = 0;
int sensor1 = 0;
int sensor2 = 0;
int sensor3 = 0;
int sensor4 = 0;
int sensor5 = 0;
int sensor6 = 0;
int sensor7 = 0;
int sensor8 = 0;
int sensor9 = 0;
// int sensor10 = 0;
// int sensor11 = 0;
// int sensor12 = 0;
// int sensor13 = 0;
// int sensor14 = 0;
// int sensor15 = 0;
// int sensor16 = 0;
// int sensor17 = 0;
// int sensor18 = 0;
// variables will change:
int sensorState = 0;
int sensorState2 = 0;
int sensorState3 = 0;
int sensorState4 = 0;
int sensorState5 = 0;
int sensorState6 = 0;
int sensorState7 = 0;
int lastState7 = 0;
int sensorState8 = 0;
int lastState8 = 0;
int sensorState9 = 0;
int lastState9 = 0;
// int sensorState10 = 0;
// int lastState10 = 0;
// int sensorState11 = 0;
// int lastState11 = 0;
// int sensorState12 = 0;
// int lastState12 = 0;
// int sensorState13 = 0;
// int lastState13 = 0;
// int sensorState14 = 0;
// int lastState14 = 0;
// int sensorState15 = 0;
// int lastState15 = 0;
// int sensorState16 = 0;
// int lastState16 = 0;
// int sensorState17 = 0;
// int lastState17 = 0;
// int sensorState18 = 0;
// int lastState18 = 0;
void setup() {
matrix.begin(0x70);
mcp.begin_I2C();
for (int i = 2; i <= 12; i++) {
pinMode(i, INPUT_PULLUP);
}
for (int i = 3; i <= 12; i++) {
digitalWrite(i, HIGH);
}
// for (int i = 0; i <= 15; i++) {
// mcp.pinMode(i, INPUT);
// }
// for (int i = 0; i <= 15; i++) {
// mcp.digitalWrite(i, HIGH);
// }
Serial.begin(9600);
}
void loop() {
sensorState = digitalRead(SENSORPIN);
sensorState2 = digitalRead(SENSORPIN2);
sensorState3 = digitalRead(SENSORPIN3);
sensorState4 = digitalRead(SENSORPIN4);
sensorState5 = digitalRead(SENSORPIN5);
sensorState6 = digitalRead(SENSORPIN6);
sensorState7 = digitalRead(SENSORPIN7);
sensorState8 = digitalRead(SENSORPIN8);
sensorState9 = digitalRead(SENSORPIN9);
// sensorState10 = digitalRead(SENSORPIN10);
// sensorState11 = digitalRead(SENSORPIN11);
// sensorState12 = mcp.digitalRead(SENSORPIN12);
// sensorState13 = mcp.digitalRead(SENSORPIN13);
// sensorState14 = mcp.digitalRead(SENSORPIN14);
// sensorState15 = mcp.digitalRead(SENSORPIN15);
// sensorState16 = mcp.digitalRead(SENSORPIN16);
// sensorState17 = mcp.digitalRead(SENSORPIN17);
// sensorState18 = mcp.digitalRead(SENSORPIN18);
if (sensorState == LOW) { // &&
sensor1 = 4;
}
if (sensorState2 == LOW) { //&&
sensor2 = 2;
}
if (sensorState3 == LOW) {
sensor3 = 1;
}
if (sensorState4 == LOW) {
sensor4 = 16;
}
if (sensorState5 == LOW) {
sensor5 = 8;
}
if (sensorState6 == LOW) {
sensor6 = 32;
}
if (sensorState7 == LOW) { // &&
sensor7 = 4;
}
if (sensorState8 == LOW) { //&&
sensor8 = 2;
}
if (sensorState9 == LOW) {
sensor9 = 1;
}
// if (sensorState10 == LOW) {
// sensor10 = 16;
// }
// if (!sensorState11) {
// sensor11 = 8;
// }
// if (!sensorState12) {
// sensor12 = 32;
// }
// if (!sensorState13) { // &&
// sensor13 = 4;
// }
// if (!sensorState14) { //&&
// sensor14 = 2;
// }
// if (!sensorState15) {
// sensor15 = 1;
// }
// if (sensorState16) {
// sensor16 = 16;
// }
// if (!sensorState17) {
// sensor17 = 8;
// }
// if (!sensorState) {
// sensor18 = 32;
// }
r = sensor1 | r;
r = sensor2 | r;
r = sensor3 | r;
r = sensor4 | r;
r = sensor5 | r;
r = sensor6 | r;
r = sensor7 | r;
r = sensor8 | r;
r = sensor9 | r;
// r = sensor10 | r;
// r = sensor11 | r;
// r = sensor12 | r;
// r = sensor13 | r;
// r = sensor14 | r;
// r = sensor15 | r;
// r = sensor16 | r;
// r = sensor17 | r;
// r = sensor18 | r;
Serial.println(r);
if (r == 4) {
Serial.println("1 IN");
matrix.println("1 IN");
matrix.writeDisplay();
}
if (r == 6) {
// Serial.println("2 IN");
matrix.println("2 IN");
matrix.writeDisplay();
}
if (r == 7) {
// Serial.println("3 IN");
matrix.println("3 IN");
matrix.writeDisplay();
}
if (r == 23) {
Serial.println("4 IN");
matrix.println("4 IN");
matrix.writeDisplay();
}
if (r == 31) {
Serial.println("5 IN");
matrix.println("5 IN");
matrix.writeDisplay();
}
if (r == 63) {
Serial.println("6 IN");
matrix.println("6 IN");
matrix.writeDisplay();
}
if (r == 67) {
Serial.println("7 IN");
matrix.println("7 IN");
matrix.writeDisplay();
}
if (r == 69) {
Serial.println("8 IN");
matrix.println("8 IN");
matrix.writeDisplay();
}
if (r == 70) {
Serial.println("9 IN");
matrix.println("9 IN");
matrix.writeDisplay();
}
// if (r == 86) {
// Serial.println("4 IN");
// matrix.println("4 IN");
// matrix.writeDisplay();
// }
// if (r == 94) {
// Serial.println("5 IN");
// matrix.println("5 IN");
// matrix.writeDisplay();
// }
// if (r == 126) {
// Serial.println("6 IN");
// matrix.println("6 IN");
// matrix.writeDisplay();
// }
// if (r == 130) {
// Serial.println("1 IN");
// matrix.println("1 IN");
// matrix.writeDisplay();
// }
// if (r == 132) {
// Serial.println("2 IN");
// matrix.println("2 IN");
// matrix.writeDisplay();
// }
// if (r == 133) {
// Serial.println("3 IN");
// matrix.println("3 IN");
// matrix.writeDisplay();
// }
// if (r == 149) {
// Serial.println("4 IN");
// matrix.println("4 IN");
// matrix.writeDisplay();
// }
// if (r == 157) {
// Serial.println("5 IN");
// matrix.println("5 IN");
// matrix.writeDisplay();
// }
// if (r == 189) {
// Serial.println("6 IN");
// matrix.println("6 IN");
// matrix.writeDisplay();
// }
delay(150);
}
Comentarios