... | ... | @@ -60,7 +60,8 @@ Resultatet af målingerne viser tydelige uhensigtsmæssigheden i manuelt at afl |
|
|
I denne exercise benyttede vi os af klassen DataLogger til at indsamle sensordata om en række forskellige lyde, for at kunne analysere på disse og dermed kunne identificere bestemte lyde, såsom f.eks. et klap. Vi gennemfører tre forskellige eksperimenter, hhv. undersøger vi lydsensorens måling af klap, sinuskurve og tale over varierende afstande. Nedenfor ses den Java kode som blev brugt til at foretage og indsamle målingerne.
|
|
|
|
|
|
*Java kode 1: SoundSensorTest.java*
|
|
|
```Java
|
|
|
|
|
|
``` Java
|
|
|
import lejos.nxt.*;
|
|
|
|
|
|
public class SoundSensorTest {
|
... | ... | @@ -162,9 +163,9 @@ Som det demonstreres i videoen er det ikke muligt at afbryde programmet, mens de |
|
|
I denne øvelse har vi modificeret programmet SoundCtrCar.java, således at det altid kan termineres ved brug af ESCAPE knappen, også selvom programmet befinder sig i den indre while-løkke, der lytter efter høje lyde (>90%). Måden hvorpå vi har opnået dette er ved at implementere en buttonListener, som uafhængigt af while-løkken, lytter på om ESCAPE knappen trykkes, hvorved den terminerer programmet ved at køre System.exit(0).
|
|
|
|
|
|
|
|
|
*Java kode 2: Modificeret SoundCtrCar.java program, der tillader exit vha. ESCAPE knappen. *
|
|
|
*Java kode 2: Modificeret SoundCtrCar.java program, der tillader exit vha. ESCAPE knappen.*
|
|
|
|
|
|
```Java
|
|
|
``` Java
|
|
|
import lejos.nxt.*;
|
|
|
import lejos.util.Delay;
|
|
|
|
... | ... | @@ -239,9 +240,9 @@ Videoen ovenfor demonstrerer det modificerede program, som muliggør at afbryde |
|
|
|
|
|
Inspireret af Sidan Toledo's ovenstående metode til at detektere klap, har vi udviklet og implementeret et program, der gør LEGO-bilen i stand til at detektere klap. Vores implementation forsøger at detektere et hurtigt spike i lydniveau, ved tage gennemsnittet for 8 af de 10 sidste målingerne (30 ms mellem hver måling) og sammenligne med gennemsnittet for de sidste 2 af de 10 målinger. Hvis forskellen mellem de 8 første og 2 sidste målinger er signifikant er vores første kriterie for et klap opfyldt. Vi venter dernæst 300 ms, og måler om lydniveauet er ambient igen - hvis dette er tilfældet er vores andet kriterium opfyldt, og vi har dermed detekteret et klap.
|
|
|
|
|
|
Java kode 3: Vores implementation af klap detektering (se repository for CyclicArray hvis nødvendigt)
|
|
|
*Java kode 3: Vores implementation af klap detektering (se repository for CyclicArray hvis nødvendigt).*
|
|
|
|
|
|
´´´Java
|
|
|
``` Java
|
|
|
import lejos.nxt.*;
|
|
|
import lejos.util.Delay;
|
|
|
|
... | ... | @@ -317,7 +318,7 @@ public class ClapCtrCar implements ButtonListener { |
|
|
System.exit(0);
|
|
|
}
|
|
|
}
|
|
|
´´´
|
|
|
```
|
|
|
|
|
|
*Video 4: Demonstration af vores LEGO bil med ClapCtrCar programmet kørerende*
|
|
|
|
... | ... | |