PROJEKT LJUD
PROJEKT LJUD s 1 I det här projektet ska du koppla en krets som innehåller en högtalare och skriva ett program som får högtalaren att spela toner och melodier. Materiel Arduino dator kopplingsdäck högtalare lysdioder (uppgift 6) motstånd 220 Ω (uppgift 6) kopplingssladdar Gör så här 1. Koppla ihop Arduinon med datorn. 2. Koppla samman komponenterna på kopplingsdäcket enligt bilderna nedan. 3. Skriv in programkoden som finns på nästa sida. 4. Prova att din krets och ditt program fungerar som de ska. Elektronik
POWER ANALOG PROJEKT LJUD s 2 USB RESET RESET 3.3V 5V GND GND Vin A0 (D14) A1 (D15) A2 (D16) A3 (D17) A4 (D18) A5 (D19) DIGITAL GND 13 12 ~ 11 ~ 10 9 8 7 ~ 6 ~ 5 4 ~ 3 2 TX 1 RX 0 Beskrivning av elektroniken Högtalarens ena ben är kopplat till jord. Det andra benet är kopplat till Arduinons digitala utgång 8, som styrs av programmet. Programkod // Kod som körs en gång då ett nytt program laddas in i Arduinon void setup() { // tysta högtalaren (som är ansluten till port 8) // pinmode behövs ej då notone gör port 8 till en utgång notone(8); } // Slinga som utförs gång på gång så länge Arduinon är på void loop() { // spela en ton i 1000 millisekunder tone(8, 440, 1000); } // behåll detta läge i 1000 millisekunder // tysta högtalaren notone(8); // behåll detta läge i 1000 millisekunder
PROJEKT LJUD s 3 Beskrivning av programkoden Programmet styr högtalaren så att den spelar en ton med frekvensen 440 Hz (hertz, tonen A) under en sekund. Därefter tystar programmet högtalaren och väntar en sekund innan allt upprepas. Uppgifter Nu har du kopplat, skrivit kod samt kontrollerat att allt fungerar, och det är dags att börja ändra i koden och kretsen. Detta gör du genom att arbeta med uppgifterna nedan. Tänk på att dokumentera ditt arbete och dina resultat enligt instruktionerna i uppgifterna så att din lärare kan se hur du arbetat och vad du lärt dig. 1. För att ändra hastigheten på ljudens växlingar ändrar du värdet i parentesen efter delay(). Värdet anges i millisekunder, tusendelar av en sekund. 1000 ms = 1 s. Ändra i programmet så att tonen blir längre men tystnaden förblir en sekund. Tips! Du behöver ändra värden på två ställen i programmet. Beskriv hur du prövade dig fram, vilka ändringar du gjorde och hur programmet nu fungerar. Använd begreppen tone() och delay(). 2. Ändra i programmet så att både tonen och pausen blir kortare. Beskriv hur du ändrade programmet och hur det fungerar nu. Använd begreppen tone() och delay(). 3. Gå tillbaka till det ursprungliga programmet. Ta bort tystnaden efter tonen, och lägg istället till en ny ton med en annan frekvens. Tips! Frekvensen är det andra värdet av de tre värdena efter tone(). Beskriv hur du ändrade programmet och hur det fungerar nu. Använd begreppet tone() och delay(). Funktionen tone() spelar en ton med hjälp av högtalaren. För att spela tonen behöver tone() information om tre saker: Vilken port är högtalaren ansluten till? I det här programmet är den ansluten till port 8. Vilken frekvens ska ljudet ha? I det här programmet är den 440 Hz. Hur länge ska tonen spelas? I det här programmet spelas den i 1000 ms. Det kanske kan verka konstigt att tonens längd måste anges på två ställen, dels i funktionen tone() och dels i den efterföljande delay()-funktionen. Anledningen till detta är att tone() sätter igång en ton som spelas i 1 000 ms. Ofta vill vi dock att tonen ska få spelas klart innan programmet fortsätter. Med hjälp av delay() får vi då programmet att vänta tills tonen spelat klart. Värdet i delay() ska vara minst lika långt som värdet i tone().
PROJEKT LJUD s 4 4. Utgå från programmet du skapade i uppgift 3 och ändra det så att samma tempo hålls mellan tonerna men att tonerna blir kortare. Detta sätt att spela upp toner kallas på musikspråk för staccato. Beskriv hur du ändrade programmet och hur det nu fungerar. Använd begreppen tone() och delay(). 5. Nu ska du ändra i programmet så att det spelar en melodi. En melodi består i sin enklaste form av tre saker: olika frekvenser ( toner i dagligt tal) tonernas längd mellanrummet mellan tonerna (pauser) Loopen nedan spelar början på Blinka lilla stjärna. Skriv in programmet det och testa hur det låter. void loop() { tone(8, 392, 500); tone(8, 392, 500); tone(8, 587, 500); tone(8, 587, 500); tone(8, 659, 500); tone(8, 659, 500); tone(8, 587, 1000); // vänta en sekund innan melodin upprepas } Eftersom programmet spelar två toner i rad med samma frekvens, är det svårt att höra när den första tonen slutar och den andra börjar. Ändra därför tonens längd i tone() till ett värde som är något kortare än värdet i efterföljande delay(). Så här ser då början av loop() ut: tone(8, 392, 450); tone(8, 392, 450);
PROJEKT LJUD s 5 Prova nu att skriva ett program som spelar en melodi som du själv väljer. Toner till olika melodier kan du söka upp på nätet. Beskriv hur du tänkte, hur du skrev om programmet och hur du löste eventuella problem som uppstod under arbetet. Använd begreppen tone() och delay(). Ton Frekvens (Hz) C 1047 B 888 Bb 932 A 880 Ab 830 G 784 F# 740 F 698 E 659 Eb 622 D 587 Db 554 C 523 B 494 Bb 466 A1 440 Ab 415 G 392 F# 370 F 349 E 330 Eb 311 D 294 Db 277 C 262 6. Lägg till en eller flera lysdioder och ändra i programmet så att de blinkar i takt med ljudet. Tips! Se Projekt Ljus om du glömt hur du får en lysdiod att tändas och släckas. Beskriv hur du tänkte, hur du skrev om programmet och hur du löste eventuella problem som uppstod under arbetet. Dokumentera också kretsen med bild eller skiss. Använd begreppen tone(), delay(), digitalwrite(), HIGH och LOW. 7. Sök på nätet efter hur morsekod fungerar. Därefter ska du med hjälp av högtalaren signalera exempelvis ditt namn. Beskriv hur du skrev om programmet och hur det nu fungerar. Använd begreppen tone() och delay().