Hello everyone,
I am trying to make a led equalizer with 7x3 cascaded 4017’s and an msgeq7 chip. Ive got everything working hardware wise, but the code ive been using is too slow too keep the leds ‘‘on’’, which results in a flikker because the loop can’t rotate fast enough.
I am using one resetpin and one clockpin for each one of the 7 msgeq7’s output values.
There must be some way i can improve my beginner programming, so i was hoping some of you would be kind enough to help me out to get the loop to rotate faster.
Cheers,
Nick
int analogPin = A0; // read from multiplexer using analog input 0
int strobePin = 8; // strobe is attached to digital pin 2
int MSGResetPin = 9; // reset is attached to digital pin 3
int spectrumValue; // to hold a2d values
int clockPin = 52;
int clockPin1 = 50;
int clockPin2 = 48;
int clockPin3 = 46;
int clockPin4 = 44;
int clockPin5 = 42;
int clockPin6 = 40;
int resetPin = 53;
int resetPin1 = 51;
int resetPin2 = 49;
int resetPin3 = 47;
int resetPin4 = 45;
int resetPin5 = 43;
int resetPin6 = 41;
void setup()
{
pinMode(analogPin, INPUT);
pinMode(strobePin, OUTPUT);
pinMode(MSGResetPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(clockPin1, OUTPUT);
pinMode(clockPin2, OUTPUT);
pinMode(clockPin3, OUTPUT);
pinMode(clockPin4, OUTPUT);
pinMode(clockPin5, OUTPUT);
pinMode(clockPin6, OUTPUT);
pinMode(resetPin, OUTPUT);
pinMode(resetPin1, OUTPUT);
pinMode(resetPin2, OUTPUT);
pinMode(resetPin3, OUTPUT);
pinMode(resetPin4, OUTPUT);
pinMode(resetPin5, OUTPUT);
pinMode(resetPin6, OUTPUT);
analogReference(DEFAULT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
}
void loop()
{
digitalWrite(MSGResetPin, HIGH);
digitalWrite(MSGResetPin, LOW);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var1 = 0; var1 < PWMvalue; var1 = var1 + 1) {
clock();
}
reset();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue1 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var2 = 0; var2 < PWMvalue1; var2 = var2 + 1) {
clock1();
}
reset1();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue2 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var3 = 0; var3 < PWMvalue2; var3 = var3 + 1) {
clock2();
}
reset2();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue3 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var4 = 0; var4 < PWMvalue3; var4 = var4 + 1) {
clock3();
}
reset3();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue4 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var5 = 0; var5 < PWMvalue4; var5 = var5 + 1) {
clock4();
}
reset4();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue5 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var6 = 0; var6 < PWMvalue5; var6 = var6 + 1) {
clock5();
}
reset5();
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW);
spectrumValue = analogRead(analogPin);
int PWMvalue6 = spectrumValue / 40; // scale analogRead's value to Write's 255 max
for (int var7 = 0; var7 < PWMvalue6; var7 = var7 + 1) {
clock6();
}
digitalWrite(strobePin, HIGH);
reset6();
}
void clock() {
digitalWrite(clockPin, HIGH);
delay(1);
digitalWrite(clockPin, LOW);
}
void clock1() {
digitalWrite(clockPin1, HIGH);
delay(1);
digitalWrite(clockPin1, LOW);
}
void clock2() {
digitalWrite(clockPin2, HIGH);
delay(1);
digitalWrite(clockPin2, LOW);
}
void clock3() {
digitalWrite(clockPin3, HIGH);
delay(1);
digitalWrite(clockPin3, LOW);
}
void clock4() {
digitalWrite(clockPin4, HIGH);
delay(1);
digitalWrite(clockPin4, LOW);
}
void clock5() {
digitalWrite(clockPin5, HIGH);
delay(1);
digitalWrite(clockPin5, LOW);
}
void clock6() {
digitalWrite(clockPin6, HIGH);
delay(1);
digitalWrite(clockPin6, LOW);
}
void reset() {
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW);
}
void reset1() {
digitalWrite(resetPin1, HIGH);
digitalWrite(resetPin1, LOW);
}
void reset2() {
digitalWrite(resetPin2, HIGH);
digitalWrite(resetPin2, LOW);
}
void reset3() {
digitalWrite(resetPin3, HIGH);
digitalWrite(resetPin3, LOW);
}
void reset4() {
digitalWrite(resetPin4, HIGH);
digitalWrite(resetPin4, LOW);
}
void reset5() {
digitalWrite(resetPin5, HIGH);
digitalWrite(resetPin5, LOW);
}
void reset6() {
digitalWrite(resetPin6, HIGH);
digitalWrite(resetPin6, LOW);
}