Ciao, sto operando con un nuovo sensore che prima non conoscevo ovvero il sensore suono/voce. Ho cercato su internet e tramite questo sensore si riesce ad esempio a far accendere la luce battendo per un tot di volte le mani. Ho cercato su internet e ho trovato solo uno sketch riguardo questo progetto, solo che sinceramente non ci ho capito molto. Lo sketch è questo:
boolean clapDetected();
int detectClaps(int numClaps);
int TOTAL_CLAPS_TO_DETECT = 2;
int offset = 5;
int CLAP_TIME=5000;
int sensorValue = 0;
int toggleOutput = 1;
int SIZE = 3;
int buffer[3];
int loopIteration = 0;
int average = 0;
int total = 0;
const int inPin0 = A0;
int out = 7; // relè
int readyPin = 13; // Led del pin 13
int deactivated = 5; //Led RGB: rosso
int activated = 6; // Led RGB: verde
const int FINAL_DETECTED = 0, LOST_CONTINUITY = 1, CLAP_NOT_DETECTED = 2;
void setup() {
pinMode(out, OUTPUT);
pinMode(readyPin, OUTPUT);
pinMode(activated, OUTPUT);
pinMode(deactivated, OUTPUT);
}
void loop() {
initialize();
runDetector();
}
void initialize()
{
loopIteration = 0;
total = 0;
average =0;
digitalWrite(out, LOW);
for(int i = 0; i < SIZE; i++)
{
readMic();
buffer = sensorValue;
-
total = total + sensorValue;*
-
average = (total/(i+1));*
-
delay(50);*
-
}*
-
digitalWrite(readyPin, HIGH);*
}
void runDetector() { -
while(true)*
-
{*
-
int clapState = detectClaps(TOTAL_CLAPS_TO_DETECT);*
-
if(clapState == FINAL_DETECTED || clapState == LOST_CONTINUITY)*
-
{*
-
indicateClap(0);*
-
}*
-
}*
}
int detectClaps(int numClaps)
{ -
int clapNum = numClaps;*
-
if(clapNum == 0)*
-
{*
_ toggleOutput *= -1;_ -
indicateClap(clapNum);*
-
return FINAL_DETECTED;*
-
}*
-
readMic();*
-
total = (total - buffer[loopIteration]) + sensorValue;*
-
average = (total/SIZE);*
-
buffer[loopIteration] = sensorValue;*
-
loopIteration = (loopIteration+1)%SIZE;*
-
if(clapDetected())*
-
{*
-
indicateClap(clapNum);*
-
delay(100);*
-
for(int i = 0; i < CLAP_TIME; i++)*
-
{*
-
int clapState = detectClaps(clapNum - 1); *
-
if(clapState == FINAL_DETECTED || clapState == LOST_CONTINUITY)*
-
{*
-
return clapState;*
-
}*
-
}*
-
return LOST_CONTINUITY;*
-
}*
-
return CLAP_NOT_DETECTED;*
}
void indicateClap(int clapNum)
{ -
if(clapNum == 0)*
-
{*
-
if(toggleOutput == 1)*
-
{*
-
digitalWrite(out, HIGH);*
-
digitalWrite(activated, HIGH);*
-
digitalWrite(deactivated, LOW);*
-
}*
-
else*
-
{*
-
digitalWrite(out, LOW);*
-
digitalWrite(activated, LOW);*
-
digitalWrite(deactivated, HIGH);*
-
}*
-
}*
-
delay(110);*
}
boolean clapDetected()
{ -
return sensorValue > average + offset;*
}
void readMic()
{
- sensorValue = analogRead(inPin0); *
}
* ** *
Chi me lo sa spiegare come funziona questo sketch? Inoltre vorrei sapere cosa significa questo funzione: initialize()
Grazie in anticipo