Prvý zdroják pracuje na princípe signálu ktorý dostane zo zvukového senzora v digitalizovanom signále:
Kód: Vybrať všetko
#define LEDstripW 10
#define LEDstripR 9
#define LEDstripG 8
#define LEDstripB 7
void setup()
{
pinMode(11,INPUT);
pinMode(LEDstripW, OUTPUT);
pinMode(LEDstripR, OUTPUT);
pinMode(LEDstripG, OUTPUT);
pinMode(LEDstripB, OUTPUT);
}
void loop()
{
boolean soundstate = digitalRead(11);
if (soundstate == 1) {
analogWrite(LEDstripW, 100);
delay(100);
}
else{
analogWrite(LEDstripW,0);
}
{
boolean soundstate = digitalRead(11);
if (soundstate == 1) {
analogWrite(LEDstripR, 255);
delay(100);
}
else{
analogWrite(LEDstripR,0);
}
}
{
boolean soundstate = digitalRead(11);
if (soundstate == 1) {
analogWrite(LEDstripG, 255);
delay(100);
}
else{
analogWrite(LEDstripG,0);
}
}
{
boolean soundstate = digitalRead(11);
if (soundstate == 1) {
analogWrite(LEDstripB, 255);
delay(100);
}
else{
analogWrite(LEDstripB,0);
}
}
}
Kód: Vybrať všetko
int LEDstripW = 10;
int LEDstripR = 9;
int LEDstripG = 8;
int LEDstripB = 7;
int LEDstripO = 6;
int LEDstripP = 5;
unsigned long Timer1;
static int whichTwo = 0;
int analogPin = 0;
int strobePin = 4;
int resetPin = 3;
int spectrumValue[7];
int filterValue1 = 965;
const byte NumberOfLeds = 6;
int val = 0;
boolean ledstate = val;
void setup() {
pinMode(analogPin, INPUT);
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
analogReference(DEFAULT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
}
void loop() {
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW);
for (int i = 0; i < 7; i++)
{
digitalWrite(strobePin, LOW);
delayMicroseconds(10);
spectrumValue[i] = analogRead(analogPin);
spectrumValue[i] = constrain(spectrumValue[i], filterValue1, 511);
spectrumValue[i] = map(spectrumValue[i], filterValue1, 511, 0, 127);
digitalWrite(strobePin, HIGH);
}
if (millis() - Timer1 > 500UL)
{
whichTwo = (whichTwo + 1) % NumberOfLeds;
Timer1 = millis();
}
switch (whichTwo)
{
case 0:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripB, 255); }
else
analogWrite(LEDstripB, 0);
break;
case 1:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripO, 255);}
else
analogWrite(LEDstripO, 0);
break;
case 2:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripR, 255);}
else
analogWrite(LEDstripR, 0);
break;
case 3:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripG, 255);}
else
analogWrite(LEDstripG, 0);
break;
case 4:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripP, 255);}
else
analogWrite(LEDstripP, 0);
break;
case 5:
val = (spectrumValue[6]);
ledstate = val;
if (ledstate == 1) {
analogWrite(LEDstripW, 255);}
else
analogWrite(LEDstripW, 0);
break;
}
}
a problém je v tom, že keď chcem aby ten druhý program fungoval ako ten prvý tak ten druhý program rozsvieti niektoré ledky že ostanú svietiť až kým sa cyklus nevráti k podmienke kde sa rozsvecujú, resp. chcel by som aby pri dosiahnutí peaku rozsvietila len jedna ledka