LED Cube spektrumanalysator (3 / 4 steg)
Steg 3: Den Arduino skissen - del ett
Så när man tittar från vinkeln som visas ovan, har du sju vertikala kolumner, alla med fyra nivåer av lysdioder. Styrkan på varje frekvens kan alltså delas upp i fyra nivåer, och sedan lämpliga lysdioderna påslagen.
Efter detta görs för varje band, alla lampor är avstängda och processen upprepas.
För enkelhetens skull har jag använt kubens Arduino bibliotek att aktivera lysdioderna, vilket också gör skissen lättare att genomskåda. Den första exemplet skissen används endast en färg.
// ----------------------------------------------------------------------------------------------------------------------
Freetronics CUBE4: och MSGEQ7 spektralanalysator
MSGEQ7 strobe på A4, reset på D5, signal till A0
#include "SPI.h"
#include "Cube.h"
Kub kub;
int res = 5; återställa stiften på D5
int kvar [7]. lagra bandet värden i dessa matriser
int band;
void setup()
{
pinMode (res, produktionen); återställa
pinMode (A4, OUTPUT); strobe
digitalWrite(res,LOW);
digitalWrite(A4,HIGH);
Cube.BEGIN (-1, 115200);
Serial.BEGIN(9600);
}
void readMSGEQ7()
Funktionen för att läsa 7 band equalizers
{
digitalWrite (res, hög);
digitalWrite (res, låg);
för (band = 0; bandet < 7; bandet ++)
{
digitalWrite(A4,LOW); strobe stift på sköld - sparkar IC upp till det nästa bandet
delayMicroseconds(30); //
vänster [band] = analogRead(0); lagra bandet behandlingen
digitalWrite(A4,HIGH);
}
}
void loop()
{
readMSGEQ7();
för (band = 0; bandet < 7; bandet ++)
{
div varje band styrka i fyra lager, varje band då en av de udda diagonalerna
musikband ett ~ 63 Hz
om (lämnade [0] > = 768) {
Cube.set (3,3,3, blå);
}
annat
om (lämnade [0] > = 512) {
Cube.set (3,3,2, blå);
}
annat
om (lämnade [0] > = 256) {
Cube.set (3,3,1, blå);
}
annat
om (lämnade [0] > = 0) {
Cube.set (3,3,0, blå);
}
bandet två ~ 160 Hz
om (lämnade [1] > = 768)
{
Cube.set (3,2,3, blå);
Cube.set (2,3,3, blå);
}
annat
om (lämnade [1] > = 512)
{
Cube.set (3,2,2, blå);
Cube.set (2,3,2, blå);
}
annat
om (lämnade [1] > = 256)
{
Cube.set (3,2,1, blå);
Cube.set (2,3,1, blå);
}
annat
om (lämnade [1] > = 0)
{
Cube.set (3,2,0, blå);
Cube.set (2,3,0, blå);
}
bandet tre ~ 400 Hz
om (lämnade [2] > = 768)
{
Cube.set (3,1,3, blå);
Cube.set (2,2,3, blå);
Cube.set (1,3,3, blå);
}
annat
om (lämnade [2] > = 512)
{
Cube.set (3,1,2, blå);
Cube.set (2,2,2, blå);
Cube.set (1,3,2, blå);
}
annat
om (lämnade [2] > = 256)
{
Cube.set (3,1,1, blå);
Cube.set (2,2,1, blå);
Cube.set (1,3,1, blå);
}
annat
om (lämnade [2] > = 0)
{
Cube.set (3,1,0, blå);
Cube.set (2,2,0, blå);
Cube.set (1,3,0, blå);
}
fyra-bandet ~ 1 kHz
om (lämnade [3] > = 768)
{
Cube.set (3,0,3, blå);
Cube.set (2,1,3, blå);
Cube.set (1,2,3, blå);
Cube.set (0,3,3, blå);
}
annat
om (lämnade [3] > = 512)
{
Cube.set (3,0,2, blå);
Cube.set (2,1,2, blå);
Cube.set (1,2,2, blå);
Cube.set (0,3,2, blå);
}
annat
om (lämnade [3] > = 256)
{
Cube.set (3,0,1, blå);
Cube.set (2,1,1, blå);
Cube.set (1,2,1, blå);
Cube.set (0,3,1, blå);
}
annat
om (lämnade [3] > = 0)
{
Cube.set (3,0,0, blå);
Cube.set (2,1,0, blå);
Cube.set (1,2,0, blå);
Cube.set (0,3,0, blå);
}
bandet fem ~ 2,5 kHz
om (left [4] > = 768)
{
Cube.set (2,0,3, blå);
Cube.set (1,1,3, blå);
Cube.set (0,2,3, blå);
}
annat
om (left [4] > = 512)
{
Cube.set (2,0,2, blå);
Cube.set (1,1,2, blå);
Cube.set (0,2,2, blå);
}
annat
om (left [4] > = 256)
{
Cube.set (2,0,1, blå);
Cube.set (1,1,1, blå);
Cube.set (0,2,1, blå);
}
annat
om (left [4] > = 0)
{
Cube.set (2,0,0, blå);
Cube.set (1,1,0, blå);
Cube.set (0,2,0, blå);
}
bandet sex ~ 6.25 kHz
om (lämnade [5] > = 768)
{
Cube.set (1,0,3, blå);
Cube.set (0,1,3, blå);
}
annat
om (lämnade [5] > = 512)
{
Cube.set (1,0,2, blå);
Cube.set (0,1,2, blå);
}
annat
om (lämnade [5] > = 256)
{
Cube.set (1,0,1, blå);
Cube.set (0,1,1, blå);
}
annat
om (lämnade [5] > = 0)
{
Cube.set (1.0.0, blå);
Cube.set (0.1.0, blå);
}
bandet sju ~ 16 kHz
om (lämnade [6] > = 768)
{
Cube.set (0,0,3, blå);
}
annat
om (lämnade [6] > = 512)
{
Cube.set (0,0,2, blå);
}
annat
om (lämnade [6] > = 256)
{
Cube.set (0.0.1, blå);
}
annat
om (lämnade [6] > = 0)
{
Cube.set (0,0,0, blå);
}
}
nu klart KUBEN, eller om det är för långsam - upprepa processen men inaktivera lysdioder
Cube.all(Black);
}
// ----------------------------------------------------------------------------------------------------------------------
och en snabb video demonstration: