Sequencer

Spela beats och ändra sekvensen i realtid. Detta är i stort sett allt du behöver för att bli en hip-hop artist. Det, och att kunna rappa. Men det är en helt annan kurs.

Material

  • 1 Arduino Uno
  • 1 Education-sköld
  • 1 mikro-SD-kort
  • 1 8 ohms högtalare
  • 4 680 ohms resistorer
  • 1 220 ohms resistor
  • 1 470 ohms resistor
  • 1 1.2k ohms resistor
  • 1 svart labbkabel
  • 7 färgade labbkablar
  • 4 svarta hårda kablar
  • 4 färgade hårda kablar
  • Sequencer-kit

 

Instruktioner

  1. Fäst skölden på Arduinons ovansida.
  2. Trä en skalad ände på en svart kabel genom de två hålen på ena sidan av varje hjärta.
  3. Montera Sequencer-bordet.
  4. Trä en resistor genom hålen på varje hjärtbricka (220 ohm, 470 ohm, 680 ohm och 1.2k ohm). Sätt fast ett handtag på varje hjärta.
  5. Koppla tre 680 ohms resistorer över kopplingsdäckets mittengap.
  6. Koppla en sida av resistorerna till 5V.
  7. Koppla den andra sidan av resistorerna till analoga pin A1 till A3. (Analoga pin A4 har en inbyggd resistor på skölden, därför behöver du inte koppla en resistor där.)
  8. Koppla tre färgade labbkablar från sequencerbordet till A1, A2 och A3 via kopplingsdäcket och den fjärde kablen direkt till A4.
  9. Koppla de svarta kablarna från sequencerbordet till GND.
  10. Ta de förinspelade ljudfilerna med namnen ’seq0.wav’, ’ seq1.wav’, ’seq2.wav’, ’seq3.wav, ’seq4.wav’ och flytta dem till mikro-SD-kortets rotkatalog. Du hittar dem genom att gå till Sketch>Show Sketch Folder.
  11. Placera 8-ohms högtalaren i sequencerbordet.
  12. Koppla in 8-ohms högtalaren i ljuduttaget och placera mikro-SD-kortet i Arduinons mikro-SD-fack
  13. Koppla Arduinon till datorn och ladda upp exemplet Sequencer.

Kod

Hitta koden i File>Examples>EducationShield>Block3-Magic>Projects>Sequencer

Så fungerar det

  • EducationShield- och SD-biblioteken inkluderas.
  • Player-objektet player deklareras.
  • Variablerna som har med analoga pins att göra deklareras, analog_pins[] och pin_count.
  • Char-arrayn filename[] deklareras och tilldelas mallfilnamnet ”seq0.wav”.
  • I setup() initialiseras seriekommunikationen.
  • Player-objektet initialiseras.
  • I loop() upprepas en for loop lika många gånger som värdet på pin_count, en gång för varje analoga sensor.
  • Vid varje upprepning i for-loopen deklareras variabeln slot_value och tilldelas det avlästa analoga värdet från analog_pins[i]. I första upprepningen är i lika med 0 vilket betyder att det analoga värdet avläses från analoga pin A4.
  • Variabeln sequence deklareras och tilldelas värdet som returneras från getSeq()
  • Programmet hoppar till funktionen getSeq() och slot_value skickas till funktionen.
  • I getSeq() kontrollerar en if-else-sats inom vilket spann det avlästa analoga värdet, analogVal, befinner sig.
  • Beroende på resultatet från if-else-satsen returneras ett nummer mellan 1 och 4 från funktionen getSeq(). Om analogVal inte befinner sig inom något av spannen returneras 0.
  • Programmet hoppar tillbaka till loop() där sequence tilldelas det returnerade värdet.
  • Den fjärde bokstaven i filename[] ersätts med värdet av sequence.
  • Filnamnet skrivs ut till serieporten så att du kan läsa det i seriemonitorn.
  • Ljudfilen spelas upp.
  • ”=======” skrivs ut till serieporten.
  • loop() fortsätter upprepas.

Problemlösning

  • Hänvisa till illustrationerna och dubbelkolla alla dina kopplingar. Var noga med att skölden och kablarna är ordentligt kopplade.
  • Om du har problem med att spela upp ljudfilerna, se referenssidan för Player.
  • Dubbelkolla så att du använder rätt resistorer. Se referenssidan för resistorer och Ohms lag för att se hur du kontrollerar det.

Lär genom att göra

  • Spela in dina egna wav-ljud och namnge dem ’seq0.wav¨, ’seq1.wav’, ’seq2.wav’, ’seq3.wav’ och ’seq4.wav’. De bör all vara lika långa för bästa resultat och ’seq0.wav’ bör vara tyst. Se referenssidan för att förbereda wav-ljud för detaljer.