Oke even kort de situatie. Ik ben bezig een apparaat te maken met arduino. Als er veel geluid in de microfoon(sensor) komt dan draait er een spoeltje op een stepper motor naar 500 stappen. Als weinig tot geen geluid meer is blijft de stepper motor staan, of gaat de stepper motor naar 0 stappen.
Nu heb ik in principe alles "werkend". Maar dit komt omdat ik NA het draaien aan de spoel een delay van 10 seconden heb gezet, ik wil namelijk dat de spoel minimaal 10 seconden blijft staan. Dan mag er weer gemeten worden of er veel of weinig geluid is.
Schematisch gaat dit dus fout:
1. spoel gaat OF 10 seconden op 500 staan OF 10 seconden op 0 staan.
2. 1 milliseconde meetmoment
3. spoel gaat OF 10 seconden op 500 staan OF 10 seconden op 0 staan.
4. 1 milliseconde meetmoment
In de code gebruik ik vooral if statements, maar ik kom er niet uit en zou graag een zetje willen..
Waar ik zelf aan zit te denken is het gemiddelde van 10 seconden meten en als het geluidsniveau hoog is optie A en wanneer het geluidsniveau (over 10 sec) laag was optie B
Code ziet er momenteel zo uit:
Nu heb ik in principe alles "werkend". Maar dit komt omdat ik NA het draaien aan de spoel een delay van 10 seconden heb gezet, ik wil namelijk dat de spoel minimaal 10 seconden blijft staan. Dan mag er weer gemeten worden of er veel of weinig geluid is.
Schematisch gaat dit dus fout:
1. spoel gaat OF 10 seconden op 500 staan OF 10 seconden op 0 staan.
2. 1 milliseconde meetmoment
3. spoel gaat OF 10 seconden op 500 staan OF 10 seconden op 0 staan.
4. 1 milliseconde meetmoment
In de code gebruik ik vooral if statements, maar ik kom er niet uit en zou graag een zetje willen..
Waar ik zelf aan zit te denken is het gemiddelde van 10 seconden meten en als het geluidsniveau hoog is optie A en wanneer het geluidsniveau (over 10 sec) laag was optie B
Code ziet er momenteel zo uit:
Arduino:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| void loop() { int micValue1 = analogRead(micPin = A0); Serial.println(micValue1); delay(1); int micValue2 = analogRead(micPin = A0); Serial.println(micValue1); if(micValue2-micValue1>1){ digitalWrite(ledPin, HIGH); functieStepperLaag(); } else { digitalWrite(ledPin,LOW); functieStepperHoog(); } } //Met hieronder dus de losse functies met Stepper naar 0 en 500 stappen |