// Multiplexer
const byte MUX_ADDR[4] = {A3, A2, A1, A0};
const byte MUX_SELECT[4] = {5, 4, 3, 2};
int MUX_OUTPUT(A5);
const byte MUX_CHANNEL[16][4] = {
{0, 0, 0, 0},
{1, 0, 0, 0},
{0, 1, 0, 0},
{1, 1, 0, 0},
{0, 0, 1, 0},
{1, 0, 1, 0},
{0, 1, 1, 0},
{1, 1, 1, 0},
{0, 0, 0, 1},
{1, 0, 0, 1},
{0, 1, 0, 1},
{1, 1, 0, 1},
{0, 0, 1, 1},
{1, 0, 1, 1},
{0, 1, 1, 1},
{1, 1, 1, 1}
};
int hall_value[8][8];
// Button - Switch
const byte BUTTON_WHITE_SWITCH_MOTOR_WHITE(7);
// **************************************** SETUP
void setup()
{
Serial.begin(9600);
Serial.println("FOR TEST");
Serial.println("PRESS WHITE BUTTON");
Serial.println("+ - - - - - - - -+");
// Multiplexer
for (byte i = 0; i < 4; i++) {
pinMode(MUX_ADDR[i], OUTPUT);
digitalWrite(MUX_ADDR[i], LOW);
pinMode(MUX_SELECT[i], OUTPUT);
digitalWrite(MUX_SELECT[i], HIGH);
}
pinMode(MUX_OUTPUT, INPUT_PULLUP);
// Arcade button - Limit Switch
pinMode(BUTTON_WHITE_SWITCH_MOTOR_WHITE, INPUT_PULLUP);
}
// ***************************************** LOOP
void loop()
{
if (digitalRead(BUTTON_WHITE_SWITCH_MOTOR_WHITE) != HIGH)
{
sensor_status();
sensor_display();
delay(500);
}
}
// ************************************** DISPLAY
void sensor_display() {
Serial.println("+ - - - - - - - - -+");
for (int i = 0; i < 8; i++) {
Serial.print(' ');
Serial.print(8 - i);
Serial.print("| ");
for (int j = 0; j < 8; j++) {
Serial.print(hall_value[7-i][j]);
Serial.print(" ");
}
Serial.println('|');
}
Serial.println("+ - - - - - - - - -+");
Serial.println(" a b c d e f g h");
}
// ************************ STATUS
void sensor_status()
{
// Record the status
byte column = 6;
byte row = 0;
for (byte i = 0; i < 4; i++)
{
digitalWrite(MUX_SELECT[i], LOW);
for (byte j = 0; j < 16; j++)
{
for (byte k = 0; k < 4; k++)
{
digitalWrite(MUX_ADDR[k], MUX_CHANNEL[j][k]);
delay(5);
int hallMeasure = analogRead(MUX_OUTPUT);
hall_value[column][row]=hallMeasure;
}
row++;
if (j == 7) {
column++;
row = 0;
}
}
for (byte l = 0; l < 4; l++) {
digitalWrite(MUX_SELECT[l], HIGH);
}
if (i == 0) column = 4;
if (i == 1) column = 2;
if (i == 2) column = 0;
row = 0;
}
}Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067