Inhoudsopgave:
- Stap 1: Arduino-bibliotheken
- Stap 2: Sluit kabels aan op pianotoetsen
- Stap 3: Software installeren: Optie A: Arduino en Hairless MIDI naar Serial Bridge
- Stap 4: Software installeren: Optie B: Arduino en Python
- Stap 5: Software installeren: Optie C: STM32F103C en MIDI Synthesizer-software
- Stap 6: Spelen
Video: Quick Fruit Piano met MIDI - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Dit is een heel eenvoudige piano met capacitieve aanraking. Tik op fruit, blikjes frisdrank, flesjes water, reepjes aluminiumfolie, enz., en je krijgt polyfone pianomuziek van je computer. Nu de software is geschreven, zou het project met de Arduino-versie niet meer dan 10 minuten in beslag moeten nemen.
Jij hebt nodig:
- een Arduino (Mega voor 8 sleutels, Uno voor 6 sleutels) of een black pill STM32F103C8 board ($2 op Aliexpress) plus een UART-naar-USB converter (bijvoorbeeld een Arduino of een CH340)
- USB-kabel
- wat aluminiumfolie
- testclips idealiter, maar jumpers en paperclips zullen het doen (idee daarvoor vanaf hier)
- fruit, of speeldeeg, of stukjes papier met vlakken ingekleurd met een potlood
- computer.
Geen extra componenten nodig, omdat deze code gebruikt uit de briljante ADCTouch-bibliotheek van martin2250 en de Arduino MIDI-commando's via serieel naar de computer stuurt. De audioweergave van de Arduino is ofwel via een meegeleverd python-script op de computer of haarloze midiserial.
Gebruik je het ontwikkelbord STM32F103C8, dan is het nog leuker: de piano wordt een echte USB MIDI-controller, zonder haarloze midiserial.
Opmerking: om schade aan de Arduino/STM32F1 door statische elektriciteit te voorkomen, vooral op een droge dag of op tapijt, raad ik aan de aluminiumfolie of testclips niet aan te raken wanneer het apparaat in werking is. Raak in plaats daarvan het fruit, het deeg enz. aan, waarvan de weerstand enige ESD-bescherming zou moeten bieden
Stap 1: Arduino-bibliotheken
Kies in de Arduino IDE Sketch | Bibliotheek opnemen | Bibliotheek Beheerder. Zoek naar mijn ADCTouchSensor. Installeer de bibliotheek.
Kies vervolgens Bestand | Voorbeelden | ADCTouchSensor | Capacitieve Piano.
Als u een Arduino hebt, sluit u uw Arduino aan op de USB-poort van uw computer en uploadt u de CapacitivePiano-schets naar uw Uno of Mega. De schets stuurt gegevens naar de computer via USB-serieel over welke van de 8 (Mega) of 6 (Uno) capacitieve sensoren is geactiveerd.
Als je een STM32F103C8 hebt, installeer dan eerst de bootloader en stel de Arduino IDE ervoor in (met mijn tak van de addMidiHID-tak) door de eerste drie stappen hier te volgen. Ga dan terug naar Bibliotheekbeheer en zoek naar mijn USBHID_stm32f1-bibliotheek. Installeer het.
Stap 2: Sluit kabels aan op pianotoetsen
Leid draden van de A0-A7 (A0-A5 op Uno) pinnen op uw Arduino of STM32F103C8 naar wat u maar wilt als pianotoetsen. Ik gebruikte bijvoorbeeld jumpers met krokodillenklemmen of testclips die naar stukjes aluminiumfolie gingen waarop ik een blikje frisdrank of een sinaasappel als sleutel zette. De aluminiumfolie kan direct als sleutel worden gebruikt. Of men kan een draad in een stuk fruit of groente of speeldeeg steken.
Stap 3: Software installeren: Optie A: Arduino en Hairless MIDI naar Serial Bridge
U kunt de Hairless MIDI to Serial Bridge (Win/OSX/Linux) downloaden en installeren om de USB-seriële uitgang van de Arduino te koppelen aan de synthesizersoftware van uw computer.
Als je Windows 7 of nieuwer hebt, kun je de ingebouwde Microsoft Wavetable GS Synth gebruiken, dus alles wat je hoeft te installeren is Hairless. Voor sommige andere afspeelsoftware is loopMIDI vereist.
Op andere systemen heb je misschien een MIDI-synthesizer nodig, zoals VirtualMidiSynth of Garageband. Je kunt VirtualMidiSynth ook op Windows gebruiken als je wilt.
Stap 4: Software installeren: Optie B: Arduino en Python
Je kunt ook gewoon een eenvoudig meegeleverd Python-script gebruiken dat MIDI-noten afspeelt.
Zorg ervoor dat Python op je computer is geïnstalleerd. Ofwel 2.7 of 3.x is voldoende.
Zorg ervoor dat het pygame Python-pakket is geïnstalleerd. Als dit niet het geval is, voert u dit uit vanaf de opdrachtregel:
python -m pip installeer pygame
Ontdek welk adres de seriële poort van uw Arduino is. Uw Arduino IDE heeft de seriële poorten vermeld onder Tools | Haven.
In het CapacitivePiano-pakket dat u hebt gedownload, vindt u het music.py-script dat de pc-kant van het project is.
Stap 5: Software installeren: Optie C: STM32F103C en MIDI Synthesizer-software
Als je de STM32F103C hebt, kun je alle software gebruiken die werkt met een MIDI-keyboardcontroller.
Op een computer gebruik ik het Virtual MIDI Piano Keyboard (VMPK). Met de STM32F103C aangesloten, kies Bewerken | MIDI-aansluitingen | Voer MIDI-verbinding in en kies vervolgens Maple MIDI of Diro Synth.
Op een Android-apparaat heb ik met succes (met een USB OTG-kabel) Common Analog Synthesizer en Synth DX7 Piano gebruikt.
Stap 6: Spelen
Sluit de Arduino met de CapacitivePiano-schets aan op de computer. Raak geen van de "knoppen" aan totdat alleen de power-LED brandt, zodat de capacitieve knoppen kunnen worden gekalibreerd.
Voer voor de Hairless-optie de Hairless MIDI-bridge uit, kies de seriële poort in de vervolgkeuzelijst. Kies dan voor een synthesizer. Als u op Windows Microsoft Wavetable GS Synth kiest, zou alles gewoon moeten werken.
Als je in plaats daarvan het Python-script wilt gebruiken, zorg er dan voor dat je in de map bent waar je piano.py hebt, en voer het volgende uit:
python piano.py seriële poort
waarbij seriële poort de seriële poort is van Arduino IDE (bijv. COMx op Windows).
Als je de STM32F103C8 gebruikt, gebruik dan je favoriete MIDI-synthesizersoftware op een computer of mobiel apparaat.
Druk nu op je "knoppen" en veel plezier!
Educatieve ideeën voor kinderen om mee te experimenteren:
- Experimenteer met verschillende items op de aluminiumfolie en kijk welke werken en welke niet - en vertel dan waarom deze wel en andere niet werken.
- Playdough werkt heel goed (en dan heb je niet eens folie en clips nodig - je kunt gewoon draden in de playdough steken, hoewel het er weliswaar uitziet als een bom!).
- Je kunt zelfs een stuk papier en schaduw in gebieden nemen met een potlood (het hoeft niet superdonker te zijn, maar arcering is goed) en deze in te knippen.
- Je kunt een krokodillenklem aan een heel groot metalen voorwerp bevestigen, zoals de rand van een whiteboard, en gigantische sleutels maken.
- Een experiment om te proberen is om een kleinere persoon een krokodillenklem vast te laten houden aan een van de draden, en dan een grotere persoon de hand te laten schudden of de kleinere persoon een high-five te geven, en kijk of dat klopt. Probeer het dan opnieuw met een grotere persoon die hem vasthoudt en een kleinere die hem aanraakt.
Zorg ervoor dat u na elke wijziging van wat op de Arduino is aangesloten, de Arduino reset, door op de "reset"-knop te drukken of door de USB-verbinding opnieuw aan te sluiten (en vervolgens de python-code opnieuw uit te voeren, omdat deze waarschijnlijk zal crashen), om de sensoren opnieuw te kalibreren.
Men kan praten over elektrische capaciteit en capacitieve detectie.
Aanbevolen:
Lazy 7 / Quick Build-editie: 8 stappen (met afbeeldingen)
Lazy 7 / Quick Build-editie: Ja. Nog een. Ik kopieer/plak de informatie die ik hier op Thingiverse heb geplaatst, deze documentatie is alleen echt nodig voor de routering van de ledstrip. Onlangs heb ik de 7 Segment Clock - Small Printers Edition gepubliceerd, het eerste 7-segmentdisplay dat ik voor ons heb gebouwd
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Quick'n'easy lichtgevoelige Bristlebot-mod: 4 stappen
Quick'n'easy Lichtgevoelige Bristlebot-mod: Wat is er leuker dan een Bristlebot? Waarom een lichtgevoelige bristlebot natuurlijk! Wat is een borstelbot? Het is een vibrerende robot gebaseerd op een tandenborstel. Het maakt gebruik van een motor met een ongebalanceerd gewicht (zoals semafoonmotoren) die ervoor zorgt dat de hele