Components:
2No 8x8 LED matrix with MAX7219
1No electec microphone LM393
Attempted functioning:
LED matrix displays a face across the two LED matrix, top one eyes, bottom one mouth.
When sound is detected the IF sensor value = high, loops and displays the animation.
When no sound, ELSE should give a straight line face no animation.
I can see the switch from HIGH / LOW when watching the serial monitor (so hardware works) when running.
Code compiles fine, no warnings, no errors, uploads fine, then loops through the different facial animations, sound input makes no difference. I am quite stuck, can you see anything obviously wrong or offer any pointers please.
Forum and google fu have failed me so far.
Thank you in advance for your time and any pointers you are able to give me.
#include "LedControl.h"
const int digitalInPin = 22; //electrc microphone pin
LedControl lc=LedControl(23,18,5,2); // Pin and # of Displays
unsigned long delayTime=250; // Delay between Frames
void setup()
{
lc.shutdown(0,false); // Wake up display 1
lc.shutdown(1,false); // Wake up display 2
lc.setIntensity(0,5); // Set intensity levels display 1
lc.setIntensity(1,5); // Set intensity levels display 2
lc.clearDisplay(0); // Clear Display 1
lc.clearDisplay(1); // Clear Display 2
Serial.begin(9600); //add noise sensor value
pinMode(digitalInPin, INPUT); //references digital input pin defined, const int digitalInPin = 34;
}
// Put values in arrays
byte face1a[] =
{
B00000000,
B11100111,
B10111101,
B11100111,
B00000000,
B00010100,
B00010000,
B00011000
};
byte face1b[] =
{
B00000000,
B11100111,
B10111101,
B11100111,
B00000000,
B00010000,
B00010000,
B00011000
};
byte face1c[] =
{
B00000000,
B00000000,
B01000010,
B00000000,
B00000000,
B00010000,
B00010000,
B00011000
};
byte face1d[] =
{
B00000000,
B00000000,
B11100111,
B00000000,
B00000000,
B00010000,
B00010000,
B00011000
};
byte face1e[] =
{
B00000000,
B00000000,
B11100111,
B11100111,
B00000000,
B00010000,
B00010000,
B00011000
};
byte face1f[] =
{
B00000000,
B00000000,
B11100111,
B11100111,
B00000000,
B00010000,
B00010000,
B00011000
};
byte face2a[] =
{
B00000000, // First frame of face #2
B00000000,
B00000000,
B00000000,
B00000000,
B00000000,
B01111110,
B00000000
};
byte face2b[] =
{
B00000000,// Second frame of face #2
B00000000,
B00000000,
B01111110,
B01000010,
B01000010,
B01111110,
B00000000
};
byte face2c[] =
{
B00000000, //blankface
B00000000,
B00000000,
B00000000,
B00000000,
B01111110,
B01111110,
B00000000
};
// Take values in Arrays and Display them
void deskface1a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1a[i]);
}
}
void deskface1b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1b[i]);
}
}
void deskface1c()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1c[i]);
}
}
void deskface1d()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1d[i]);
}
}
void deskface1e()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1e[i]);
}
}
void deskface1f()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0,i,face1f[i]);
}
}
void deskface2a()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,face2a[i]);
}
}
void deskface2b()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,face2b[i]);
}
}
void deskface2c()
{
for (int i = 0; i < 8; i++)
{
lc.setRow(1,i,face2c[i]);
}
}
void loop()
{
int sensorValue = digitalRead(digitalInPin);
if(sensorValue == HIGH)
{
// Put #1 frame on both Display
Serial.println("Sound Detected!");
deskface1a();
delay(delayTime);
deskface2a();
delay(delayTime);
// Put #2 frame on both Display
deskface1b();
delay(delayTime);
deskface2b();
delay(delayTime);
// Put #2 frame on both Display
deskface1c();
delay(delayTime);
deskface2b();
delay(delayTime);
// Put #2 frame on both Display
deskface1d();
delay(delayTime);
deskface2b();
delay(delayTime);
// Put #2 frame on both Display
deskface1e();
delay(delayTime);
deskface2b();
delay(delayTime);
// Put #2 frame on both Display
deskface1f();
delay(delayTime);
deskface2b();
delay(delayTime);
}
else
{
// Put #2 frame on both Display
Serial.println("All is quiet on the digital front!");
deskface1b();
delay(delayTime);
deskface2c();
delay(delayTime);
}}
sketch_may23c.ino (3.87 KB)