When settling speakers in to place, you are idealizing that you will always sit dead center .. yet in our more lethargic reality, we lounge off-center. As consequence, you cease being the center of the speaker array .. until now ..
Notations 1. Intended to create an app with MIT App Inventor .. how-ever .. per the previous HaD FP (Voice Kitchen Faucet) .. it was decided to employ an alternative favored open source (-ish) voice command software http://voiceattack.com purely as demonstration. 2. Adding additional speakers merely requires copy-paste and if-statement modifications .. tho ideally a more advanced 'find' function upon installation would be coded. 3. Variances of % may depend on wattage (See #4) 4. Higher voltage systems would subsequently require HV digital potentiometers (AD7376) 5. Why is this .. not already a thing?!
Codelings
// Center Surround Sound // Speaker NodeMCU Code // Vije Miller
void loop() { // Active LED digitalWrite(led, LOW); // Check WiFiClient client = server.available(); if (!client) { return; } // Wait while (!client.available()) { delay(1); } // Read String query = client.readStringUntil('\r'); client.flush(); if (query.indexOf("/center") != -1) { center(); } if (query.indexOf("/left_center") != -1) { left_center(); } if (query.indexOf("/right_center") != -1) { right_center(); } if (query.indexOf("/left_off_set") != -1) { left_off_set(); } if (query.indexOf("/right_off_set") != -1) { right_off_set(); } delay(1); }
void center() { digitalWrite(led, HIGH); // Zero All Speakers if (wiper < peak) { for (i = wiper; i < peak; i++) { pot.increase(1); delay(5); } } else if (wiper > peak) { for (i = wiper; i > peak; i--) { pot.decrease(1); delay(5); } } }
void left_center() { digitalWrite(led, HIGH); // 1 = Decrease -15 // 2 = Increase +15 if (dip == 1) { int lc = 60 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } else if (dip == 2) { int lc = 90 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } }
void right_center() { digitalWrite(led, HIGH); // 1 = +15 // 2 = -15 if (dip == 1) { int lc = 90 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } else if (dip == 2) { int lc = 60 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } }
void left_off_set() { digitalWrite(led, HIGH); // 1 = -25 // 2 = +25 if (dip == 1) { int lc = 50 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } else if (dip == 2) { int lc = 100 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } }
void right_off_set() { digitalWrite(led, HIGH); // 1 = +25 // 2 = -25 if (dip == 1) { int lc = 100 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } else if (dip == 2) { int lc = 50 if (wiper < lc) { for (i = wiper; i < lc; i++) { pot.increase(1); delay(5); } } else if (wiper > lc) { for (i = wiper; i > lc; i--) { pot.decrease(1); delay(5); } } } }