Stap 3: De Arduino schets - deel één
Dus bij het zoeken van de hoek zoals hierboven, je zeven verticale kolommen, elk met vier niveaus voor de LEDs hebt. De sterkte van elke frequentie kan dus worden onderverdeeld in vier niveaus, en vervolgens de juiste LED's ingeschakeld.
Nadat dit is gedaan voor elke band, alle van de LED's zijn uitgeschakeld en het proces herhaalt.
Omwille van de eenvoud heb ik van de kubus Arduino library gebruikt om het activeren van de LED's, waardoor ook de schets gemakkelijker te doorgronden. De eerste schets van het voorbeeld gebruikt slechts één kleur.
// ----------------------------------------------------------------------------------------------------------------------
Freetronics CUBE4: en MSGEQ7 spectrum analyser
MSGEQ7 stroboscoop op A4, reset op D5, signaal in A0
#include "SPI.h"
#include "Cube.h"
Kubus kubus;
int res = 5; Reset pinnen op D5
int links [7]; band waarden opslaan in deze arrays
int de band;
VOID Setup
{
pinMode (res, OUTPUT); Reset
pinMode (A4, uitvoer); Stroboscoop
digitalWrite(res,LOW);
digitalWrite(A4,HIGH);
Cube.begin (-1, 115200);
Serial.begin(9600);
}
VOID readMSGEQ7()
Functie te lezen 7 band equalizers
{
digitalWrite (res, hoge);
digitalWrite (res, laag);
voor (band = 0; band < 7; band ++)
{
digitalWrite(A4,LOW); Strobe pin op het schild - kicks de IC tot de volgende band
delayMicroseconds(30); //
links [band] = analogRead(0); opslaan van band-lezing
digitalWrite(A4,HIGH);
}
}
void loop
{
readMSGEQ7();
voor (band = 0; band < 7; band ++)
{
div elke band sterkte in vier lagen, elke band vervolgens één van de oneven diagonalen
een band ~ 63 Hz
Als (links [0] > = 768) {}
Cube.set (3,3,3, blauw);
}
anders
Als (links [0] > = 512) {}
Cube.set (3,3,2, blauw);
}
anders
Als (links [0] > = 256) {}
Cube.set (3,3,1, blauw);
}
anders
Als (links [0] > = 0) {}
Cube.set (3,3,0, blauw);
}
band twee ~ 160 Hz
Als (links [1] > = 768)
{
Cube.set (3,2,3, blauw);
Cube.set (2,3,3, blauw);
}
anders
Als (links [1] > = 512)
{
Cube.set (3,2,2, blauw);
Cube.set (2,3,2, blauw);
}
anders
Als (links [1] > = 256)
{
Cube.set (3,2,1, blauw);
Cube.set (2,3,1, blauw);
}
anders
Als (links [1] > = 0)
{
Cube.set (3,2,0, blauw);
Cube.set (2,3,0, blauw);
}
band drie ~ 400 Hz
Als (left [2] > = 768)
{
Cube.set (3,1,3, blauw);
Cube.set (2,2,3, blauw);
Cube.set (1,3,3, blauw);
}
anders
Als (left [2] > = 512)
{
Cube.set (3,1,2, blauw);
Cube.set (2,2,2, blauw);
Cube.set (1,3,2, blauw);
}
anders
Als (left [2] > = 256)
{
Cube.set (3,1,1, blauw);
Cube.set (2,2,1, blauw);
Cube.set (1,3,1, blauw);
}
anders
Als (left [2] > = 0)
{
Cube.set (3,1,0, blauw);
Cube.set (2,2,0, blauw);
Cube.set (1,3,0, blauw);
}
band vier ~ 1 kHz
Als (links [3] > = 768)
{
Cube.set (3,0,3, blauw);
Cube.set (2,1,3, blauw);
Cube.set (1,2,3, blauw);
Cube.set (0,3,3, blauw);
}
anders
Als (links [3] > = 512)
{
Cube.set (3,0,2, blauw);
Cube.set (2,1,2, blauw);
Cube.set (1,2,2, blauw);
Cube.set (0,3,2, blauw);
}
anders
Als (links [3] > = 256)
{
Cube.set (3,0,1, blauw);
Cube.set (2,1,1, blauw);
Cube.set (1,2,1, blauw);
Cube.set (0,3,1, blauw);
}
anders
Als (links [3] > = 0)
{
Cube.set (3,0,0, blauw);
Cube.set (2,1,0, blauw);
Cube.set (1,2,0, blauw);
Cube.set (0,3,0, blauw);
}
band vijf ~ 2,5 kHz
Als (left [4] > = 768)
{
Cube.set (2,0,3, blauw);
Cube.set (1,1,3, blauw);
Cube.set (0,2,3, blauw);
}
anders
Als (left [4] > = 512)
{
Cube.set (2,0,2, blauw);
Cube.set (1,1,2, blauw);
Cube.set (0,2,2, blauw);
}
anders
Als (left [4] > = 256)
{
Cube.set (2,0,1, blauw);
Cube.set (1,1,1, blauw);
Cube.set (0,2,1, blauw);
}
anders
Als (left [4] > = 0)
{
Cube.set (2,0,0, blauw);
Cube.set (1,1,0, blauw);
Cube.set (0,2,0, blauw);
}
band zes ~ 6,25 kHz
Als (links [5] > = 768)
{
Cube.set (1,0,3, blauw);
Cube.set (0,1,3, blauw);
}
anders
Als (links [5] > = 512)
{
Cube.set (1,0,2, blauw);
Cube.set (0,1,2, blauw);
}
anders
Als (links [5] > = 256)
{
Cube.set (1,0,1, blauw);
Cube.set (0,1,1, blauw);
}
anders
Als (links [5] > = 0)
{
Cube.set (1,0,0, blauw);
Cube.set (0,1,0, blauw);
}
band zeven ~ 16 kHz
Als (links [6] > = 768)
{
Cube.set (0,0,3, blauw);
}
anders
Als (links [6] > = 512)
{
Cube.set (0,0,2, blauw);
}
anders
Als (links [6] > = 256)
{
Cube.set (0,0,1, blauw);
}
anders
Als (links [6] > = 0)
{
Cube.set (0,0,0, blauw);
}
}
nu duidelijk van de kubus, of als dat te traag - Herhaal dit proces maar LEDs uitschakelen
Cube.all(Black);
}
// ----------------------------------------------------------------------------------------------------------------------
en een snelle video demonstratie: