varighed: 4 timer - kl. 09.00 - 13.00
gruppemedlemmer: Aslak, Ruben og Lars
Målet for i dag var at komme hurtigt igang med arbejdet med lydsensoren (mikrofonen) og dermed hurtigt komme i gang med programmet til den klap-styrede bil. Hjemmefra var der blevet forberedt en test af mikrofonen, baseret på koden fra forrige lektion ('SonicSensorTest.java').
Desværre var der fra starten problemer med Lars' computer og installationen af Java og Eclipse. Computeren kunne ikke kommunikere med NXT'en, noget som også drillede lidt under forrige lektion. Der endte med at gå en hel time tabt, inden vi havde givet op og begyndte at bruge Aslaks computer istedet. Der virkede kommunikationen fint, og vi påbegyndte dagens arbejde.
Først oprettes en ny klasse 'MicrophoneTest.java', baseret på den kode, som var lavet hjemmefra (se forrige afsnit). Denne blev uploadet til NXT'en og vi diskuterede brugen af 'klap' til at teste med. Vi blev enige om, at det er for svært at klappe ensartet gentagne gange, og vi lavede en Matlab funktion, som danner og afspiller en 1000 Hz tone med en varighed på 3 sekunder. Vi udførte en test af mikrofonen med en opstilling, hvor NXT'en, monteret på 'bilen', stod på gulvet i et åbent område, med den pc som afspiller lyden placeret på en kasse, umiddelbart udfor mikrofonen. Testopstillingen vises på følgende billeder.
Resultatet af denne test vises på følgende graf:
Næste punkt var en kørsel af 'SoundCtrCar.java'. Dette program benytter mikrofonen og giver bilen en forudbestemt opførsel afhængigt af de lyde som måtte blive registreret. Koden opererer med en tærskelværdi, som kan ændres efter omstændighederne og benytter klassen 'Locomotion.java', som også blev omtalt under forrige lektion. Ved starten er denne tærskel sat til et lydniveau på 90. Efter opstart begyner bilen at bevæge sig fremad, og fortsætter med dette, indtil en lyd, hvis niveau overstiger tærskelværdien indtræffer. Herefter drejer bilen til venstre, og fortsætter med dette, indtil en lyd, som overstiger tærskelværdien indtræffer. Herefter drejer bilen til højre, og igen indtil en lyd overstiger tærskelværdien. Slutteligt holder bilen stille, og fortsætter med at holde stille indtil den gentager hele bevægelsesmønstret, når en lyd overstiger tærskelværdien endnu engang. Dette kan så fortsætte i det uendelige, eller indtil batteriet løber tørt.
En anden måde at afslutte det omtalte program 'SoundCtrCar.java' er ved at trykke på 'escape'-knappen, men dette fungerer udelukkende, når eksekveringen af koden befinder sig i den yderste while-løkke. Trykkes der på 'escape' imens NXT'en er igang med at eksekvere en af de indre while-løkker, f.eks. at dreje til højre, sker der ingenting. For at kunne stoppe NXT'en på alle tidspunkter af kode-afviklingen, implementerede vi først den "grimme" måde, som vi valgte at kalde den. Den "grimme" måde er, at de indre while-løkker i koden bliver tilføjet en if-sætning, som tester om 'escape' er aktiveret. Er knappen aktiveret, stopper eksekveringen af koden.
Som sidste opgave i dag, arbejdede vi med at implementere en klap-tæller (clap counter), som, på baggrund af vores kendskab til de akustiske aspekter af en lyd af denne type, tæller antallet af disse. Desværre nåede denne kode ikke at blive færdiggjort. Gruppens medlemmer vil forsøge, at arbejde videre på denne kode inden næste lektion.
Afslutningsvis kan det nævnes at den forulykkede pc stadig, ved lab-sessionens afslutning, ikke fungerer mht. kommunikation ml. pc og NXT. Det forventes at det kan være Java, eller Eclipse, som ikke fungerer. Muligvis vil dette også blive rettet op på inden næste lektion.
Ingen kommentarer:
Send en kommentar