/*#include <elapsedMillis.h>
elapsedMillis timeSinceInputHigh;
// Pin definitions
const int inputPins[] = {2, 3, 4, 5, 6, 7};
const int outputPins[] = {8, 9, 10, 11, 12, 13};
bool inputState[6] = {0};
void setup() {
// Set input pins as input
for (int i = 0; i < 6; i++) {
pinMode(inputPins[i], INPUT_PULLUP);
}
// Set output pins as output
for (int i = 0; i < 6; i++) {
pinMode(outputPins[i], OUTPUT);
}
}
void loop() {
// Check all input pins
for (int i = 0; i < 6; i++) {
if (digitalRead(inputPins[i]) == HIGH) {
if (!inputState[i]) {
inputState[i] = true;
digitalWrite(outputPins[i], HIGH);
timeSinceInputHigh = 0;
}
else {
if (timeSinceInputHigh >= 40) {
digitalWrite(outputPins[i], !digitalRead(outputPins[i]));
if (timeSinceInputHigh >= 44) {
timeSinceInputHigh = 0;
}
}
}
}
else {
digitalWrite(outputPins[i], LOW);
inputState[i] = false;
}
}
}*/
#include <elapsedMillis.h>
elapsedMillis timeSinceLastInput;
// Pin definitions
const int inputPins[] = {19, 18, 5, 17, 0, 2};
const int outputPins[] = {33, 25, 26, 27, 14, 12};
bool inputState[6] = {0};
void setup() {
// Set input pins as input
for (int i = 0; i < 6; i++) {
pinMode(inputPins[i], INPUT_PULLUP);
}
// Set output pins as output
for (int i = 0; i < 6; i++) {
pinMode(outputPins[i], OUTPUT);
}
}
void loop() {
// Check all input pins
for (int i = 0; i < 6; i++) {
if (digitalRead(inputPins[i]) == LOW) {
if (!inputState[i]) {
inputState[i] = true;
digitalWrite(outputPins[i], HIGH);
delay(40);
digitalWrite(outputPins[i], LOW);
timeSinceLastInput = 0;
}
else {
if (timeSinceLastInput > 4) {
digitalWrite(outputPins[i], !digitalRead(outputPins[i]));
timeSinceLastInput = 0;
}
}
}
else {
digitalWrite(outputPins[i], LOW);
inputState[i] = false;
}
}
}
/*#include <elapsedMillis.h>
elapsedMillis timeSinceInputHigh;
// Pin definitions
const int inputPins[] = {2, 3, 4, 5, 6, 7};
const int outputPins[] = {8, 9, 10, 11, 12, 13};
bool inputState[6] = {0};
void setup() {
// Set input pins as input with internal pullup
for (int i = 0; i < 6; i++) {
pinMode(inputPins[i], INPUT_PULLUP);
}
// Set output pins as output
for (int i = 0; i < 6; i++) {
pinMode(outputPins[i], OUTPUT);
}
}
void loop() {
// Check all input pins
for (int i = 0; i < 6; i++) {
if (digitalRead(inputPins[i]) == LOW) { // inversed logic since using pullup
if (!inputState[i]) {
inputState[i] = true;
digitalWrite(outputPins[i], HIGH);
timeSinceInputHigh = 0;
}
else {
if (timeSinceInputHigh >= 40) {
digitalWrite(outputPins[i], !digitalRead(outputPins[i]));
if (timeSinceInputHigh >= 44) {
timeSinceInputHigh = 0;
}
}
}
}
else {
digitalWrite(outputPins[i], LOW);
inputState[i] = false;
}
}
}*/