Raspberry Pi Pico är ett billigt mikrokontrollerkort som gör det enkelt för nybörjare att komma igång med elektronikprojekt och lära sig koda.
För detta projekt kommer du att lära dig hur man läser en analog signal från en potentiometer och omvandlar den till en PWM (pulsbreddsmodulering) signal för att manipulera frekvensen, eller tonen, av en summer med hjälp av MicroPython koda.
Vilka delar behövs?
Detta projekt är baserat på Kitronik Inventor's Kit för Raspberry Pi Pico. Alla nödvändiga elektroniska komponenter ingår i satsen; men dessa är vanliga komponenter som du kan ha liggande:
- Piezo element summer
- Roterande potentiometer
- 7x hane-hane bygeltrådar
- Raspberry Pi Pico med lödda GPIO-huvudstift
- Bakbord
Om du är ny på pulsbreddsmodulering (PWM) och potentiometrar, kolla först in vår guide på hur man använder en potentiometer med din Raspberry Pi Pico, som beskriver hur man använder den för att justera ljusstyrkan på en LED med PWM.
Obligatorisk montering
En bygelkabel (gul på bilden) ansluter den vänstra sidan av potentiometern till den positiva (+) skenan på brödbrädan. En annan bygelkabel ansluter den högra sidan av potentiometern till den negativa (-) sidan av breadboard. Från mittstiftet på potentiometern måste du dra en bygelkabel till GP26/A0-stiftet på Pico.
Piezo-summern måste ha en tråd som går från dess negativa ben till den negativa breadboard-skenan och sedan en annan anslutning från dess positiva ben till GP15-stiftet på Raspberry Pi Pico.
Du måste också dra en bygelkabel från ett GND-stift på Pico till den negativa skenan på brödbrädan för att jorda den. En annan bygelkabel kommer att ansluta 3V3 Out-stiftet på Pico till den positiva skenan på breadboarden för att driva komponenterna.
Skapa koden
Du kan hämta koden från MUO GitHub-förråd. Ladda ner MicroPython-filen med namnet piezo-buzzer.py och ladda sedan detta till din Pico via en USB-ansluten dator som kör Thonny IDE. Kolla hur man gör komma igång med MicroPython på Raspberry Pi Pico för detaljer.
De olika delarna av koden gör följande:
- Överst importerar vi det som krävs maskin, matematik, och tid MicroPython-moduler.
- A summer variabeln tilldelas sedan till pin GP15 som en PWM-utgång.
- A potentiometer variabeln tilldelas analog-till-digital-omvandlaren (ADC) på Picos GP26/A0-stift.
- Vi definierar a skala() funktion som använder matematiska funktioner för att omvandla räckvidden för potentiometerrörelsen till en utsignal för summern.
- De medan: Sant oändlig loop läser potentiometerns ingång och använder sedan skala funktion för att konvertera den. Efter att ha kontrollerat att den inte har förändrats för mycket från föregående frekvens, skickar den sedan den beräknade frekvens till summern med PWM (pulsbreddsmodulering).
Sammanfattningsvis är det hundratals pulser som skickas per sekund och summertonen kommer att skifta mellan 120Hz och 5kHz när potentiometern vrids medurs eller moturs. Att rotera potentiometern ändrar spänningen som läses av Picos analoga ingångsstift, som i sin tur används för att justera summerfrekvensen med PWM.
Kör koden från Thonny (klicka på spelikonen eller tryck F5 på ditt tangentbord) och prova det själv. Kommer några kodändringar att påverka fysiska resultat efter din första körning? Till exempel, vad händer om du ändrar räckvidd (0 till 65535)? Den här delen av koden finns precis nedanför medan det är sant: där den frekvens är definierad.
Ställa in tonen
Om du känner dig äventyrlig, kanske du vill prova att använda summern för att generera musikaliska toner med martinkooij's pi-pico-toner bibliotek på GitHub. Som standard kommer detta bibliotek att generera sinusvågor; fyra tongeneratorer kan köras på fyra olika Pico-stift som du kan välja. Observera att detta projekt är baserat på C++ med Raspberry Pi Pico SDK, snarare än MicroPython, men fullständiga instruktioner ges i GitHub readme.
The Buzz of Pico Electronics
Grattis: du har lärt dig hur man läser den analoga ingången från en potentiometer och omvandlar den till en PWM-signal för att styra en summerton. En potentiometer är en mångsidig inmatningsenhet för elektronik. En piezo-summer är en annan praktisk komponent: med tillägg av en PIR infraröd rörelsesensor, till exempel, kan du upptäcka närvaron av inkräktare och slå larm.