Inhoudsopgave:

Een nummer digitaliseren met Arduino: 6 stappen
Een nummer digitaliseren met Arduino: 6 stappen

Video: Een nummer digitaliseren met Arduino: 6 stappen

Video: Een nummer digitaliseren met Arduino: 6 stappen
Video: Webinar Archiveren voor Dummies #6 – Digitaliseren: van foto naar jpeg 2024, November
Anonim
Een nummer digitaliseren met Arduino
Een nummer digitaliseren met Arduino

Ik wilde een project maken dat twee van mijn favoriete onderwerpen combineerde: wetenschap en muziek. Ik dacht aan alle manieren waarop ik deze twee domeinen kon combineren, en ik dacht dat het interessant zou zijn om een Arduino Fur Elise te laten spelen terwijl de toonhoogte van de noot in Hertz wordt weergegeven. Laten we nu beginnen met bouwen!

Je hebt een Arduino Uno of Mega nodig, veel startkabels, een piëzo-zoemer, een breadboard, een 16 * 2 LCD-scherm met alle wisserpinnen op hun plaats en een 10k-potentiometer (je hoort ze misschien ook wel potmeters worden genoemd)). Het is het beste om al deze benodigdheden bij elkaar te krijgen voordat we met de bouw beginnen.

Stap 1: Zet de partituur om in digitale noten: vertragingswaarden

Zet de partituur om in digitale noten: vertragingswaarden
Zet de partituur om in digitale noten: vertragingswaarden

Er zijn twee stappen om een noot digitaal over te schrijven van de partituur naar zijn digitale equivalent. Eerst moeten we de tijd dat de notitie duurt in milliseconden schrijven. Ik heb voor deze taak een online gevonden grafiek gebruikt. Op basis van het feit of een noot een halve noot, kwartnoot, achtste noot, enz. was, transcribeerde ik de nootlengte in milliseconden. Je kunt deze nummers in mijn code zien als de vertraging(); functie en het getal tussen de haakjes is de vertragingswaarde in milliseconden die we in deze stap hebben bepaald.

Stap 2: Zet de muziekpartituur om in digitale noten: Hertz-waarden

Zet de partituur om in digitale noten: Hertz-waarden
Zet de partituur om in digitale noten: Hertz-waarden

Voordat ik aan deze stap begin, wil ik eerst enkele technische termen definiëren. De "waarde" van een noot kan door elkaar worden gebruikt met de woorden "toonhoogte", "waarde" en "noot". Nu moet je elke noot van het nummer uit de partituur lezen. U moet dan elke noot in Hertz vertalen met behulp van een muziek-naar-Hertz-tabel, die u gemakkelijk online kunt vinden. Een ding om te onthouden is dat de middelste C als C4 op de tafel wordt vermeld, en een octaaf hoger is C5, enzovoort. Zodra deze noten allemaal in Hertz zijn getranscribeerd, plaatst u de waarden in de functie toon (x, y, z); waarbij X het pinnummer of const int is, een manier om variabelen te definiëren die ik later zal uitleggen. Y is de Hertz-waarde die u zojuist hebt getranscribeerd en Z is de duur van de noot in milliseconden, afgerond op de dichtstbijzijnde honderdste. De vertraging(); waarden zijn de duur van de noot. Laten we nu het circuit ontwerpen dat de muziek kan afspelen.

Stap 3: Circuitontwerp

Circuit ontwerp
Circuit ontwerp

Nu we alle noten hebben vertaald in digitale waarden die een computer kan begrijpen, is het tijd om het circuit te bouwen. Begin met het nemen van een breadboard en plaats het LCD-scherm met de eerste pin (GND) in rij 14. Plaats de zoemer waar je maar wilt en plaats een potentiometer ernaast. Het doel is om alles op één lijn te brengen, om het rommelig maken van de draden tot een minimum te beperken. Plaats de Arduino naast het breadboard en sluit de 5v-pin aan op de positieve rail van het breadboard en de grondpin op de negatieve rail. Nu zijn we klaar om jumpers tussen de Arduino en de componenten aan te sluiten.

Laten we het nu hebben over de pinnen op het LCD-scherm en hoe ze te bedraden.

GND staat voor aarde, dit is de negatieve draad in gelijkstroom. Sluit GND aan op de negatieve rail van het breadboard.

VCC staat voor Voltage at the Common Collector, hier sluit je je 5-volt stroombron (de positieve stroomrail) op aan.

VO staat voor Contrast, sluit deze aan op de middelste pin van de potmeter. Sluit de linker pin van de potentiometer aan op de positieve stroomrail en de rechter pin op de grondstroomrail.

RS staat voor Register Select, en dit wordt door de Arduino gebruikt om het display te vertellen waar gegevens moeten worden opgeslagen. Verbind deze pin met pin 12 op de Arduino.

RW staat voor Read/Write pin, die de Arduino gebruikt om te controleren of het scherm laat zien wat je hebt geprogrammeerd om te laten zien. Verbind deze pin met de negatieve rail op het breadboard.

E staat voor Enable, wat het LCD-scherm vertelt welke pixels moeten worden ingeschakeld (inschakelen) of uitgeschakeld (uitschakelen). Verbind deze pin met Arduino pin 11.

D4, D5, D6 en D7 zijn display-pinnen die de tekens en letters besturen die worden weergegeven. Verbind ze met respectievelijk Arduino-pinnen 5, 4, 3 en 2.

Pin A, soms aangeduid als LED, is de LED-anode voor de achtergrondverlichting. Sluit deze met een draad of met een weerstand van 220 ohm aan op de positieve stroomrail. De weerstand is beter voor langer gebruik omdat het het LCD-scherm ontziet, maar als het apparaat niet dag en nacht wordt gebruikt, heb je de weerstand niet nodig.

Pin K, soms ook (verwarrend) aangeduid als LED, is de LED-aardpin. Sluit deze aan op de grondstroomrail.

Stap 4: Code uploaden: How-To

Sluit uw Arduino aan op de USB van uw computer. Upload de volgende code met behulp van de Arduino IDE-programmeur.

#erbij betrekken

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

ongeldige setup() {

// stel het aantal kolommen en rijen van het LCD-scherm in: lcd.begin (16, 2); // Druk een bericht af op het LCD-scherm. lcd.print("Hertz Pitch:!"); vertraging (1000); void loop() {// speel e4 vertraging (600);// pauzeer 0,6 seconden toon (10, 329,63, 300);// speel e naar de zoemer op pin 10, laatste voor 0,3 seconden lcd.print(" 329.63");//toon een bericht op LCD "329.63"

vertraging (350);//vertraging voor.35 seconden

lcd.clear();//clear LCD en reset voor volgende bericht // speel d4# tone (10, 311.13, 300); lcd.print("311.13"); vertraging (350); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (350); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (350); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (350); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.66, 300); lcd.print("293.66"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // speel d3 tone (10, 146.83, 300); lcd.print("146.63"); vertraging (350); lcd.wissen(); // speel f3-toon (10, 174.61, 300); lcd.print("174.61"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 300); lcd.print("220"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 900); lcd.print("246.84"); vertraging (1000); lcd.wissen();

// speel e3

toon (10, 164,81, 300); lcd.print("164.81"); vertraging (400); lcd.wissen(); // speel g3# toon (10, 207.65, 300); lcd.print("207.65"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 900); lcd.print("261.63"); vertraging (1000); lcd.wissen(); // speel een toon (10, 164.81, 300); lcd.print("164.81"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.66, 300); lcd.print("293.66"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.wissen(); // speel d3-toon (10, 146.83, 300); lcd.print("146.83"); vertraging (400); lcd.wissen(); // speel f3-toon (10, 174.61, 300); //eeprom 20--6 yesno, flash 65-0 noyes lcd.print ("174.61"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 300); lcd.print("220.0"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 900); lcd.print("246.84"); vertraging (1000); lcd.wissen(); // speel f3-toon (10, 174.61, 300); lcd.print("174.61"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.66, 300); lcd.print("293.66"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 900); lcd.print("329.63"); vertraging (1000); lcd.wissen(); // speel g3-toon (10, 196, 300); lcd.print("196.0"); vertraging (400); lcd.wissen(); // speel f4-toon (10, 349.23, 300); lcd.print("349.23"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.23, 300); lcd.print("329.23"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.63, 900); lcd.print("293.63"); vertraging (1000); lcd.wissen(); // speel e3-toon (10, 164.81, 300); lcd.print("164.81"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.63, 300); lcd.print("293.63"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 900); lcd.print("261.63"); vertraging (1000); lcd.wissen(); // speel d3-toon (10, 146.83, 300); lcd.print("146.83"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.63, 300); lcd.print("293.63"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 900); lcd.print("246.84"); vertraging (1000); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (350); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (350); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (350); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (350); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.66, 300); lcd.print("293.66"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.wissen(); // speel d3-toon (10, 146.83, 300); lcd.print("146.83"); vertraging (350); lcd.wissen(); // speel f3-toon (10, 174.61, 300); lcd.print("174.61"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 300); lcd.print("220.0"); vertraging (400); // speel b3 lcd.clear(); toon (10, 246,94, 900); lcd.print("246.84"); vertraging (1000); lcd.wissen(); // speel e3-toon (10, 164.81, 300); lcd.print("164.81"); vertraging (400); lcd.wissen(); // speel g#3 toon (10, 207.65, 300); lcd.print("207.65"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 900); lcd.print("261.63"); vertraging (1000); vertraging (300); lcd.wissen(); // speel e3-toon (10, 164.81, 300); lcd.print("164.81"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel d4# toon (10, 311.13, 300); lcd.print("311.13"); vertraging (400); lcd.wissen(); // speel e4-toon (10, 329.63, 300); lcd.print("329.63"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel d4-toon (10, 293.66, 300); lcd.print("293.66"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.wissen(); // speel d3-toon (10, 146.83, 300); lcd.print("146.83"); vertraging (400); lcd.wissen(); // speel f3-toon (10, 174.61, 300); lcd.print("174.61"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 300); lcd.print("220.0"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 900); lcd.print("246.84"); vertraging (1000); lcd.wissen(); // speel f3-toon (10, 174.61, 300); lcd.print("174.61"); vertraging (400); lcd.wissen(); // speel c4-toon (10, 261.63, 300); lcd.print("261.63"); vertraging (400); lcd.wissen(); // speel b3-toon (10, 246.94, 300); lcd.print("246.84"); vertraging (400); lcd.wissen(); // speel a3-toon (10, 220, 900); lcd.print("220.0"); vertraging (1000); lcd.wissen(); }

Stap 5: Code uploaden: wat betekent dat allemaal?

Laten we enkele functies in het Engels definiëren, zodat u de code kunt begrijpen.

toon (x, y, z); = speel een toon af met een toonhoogte van y Hertz, tot een zoemer op pin x, gedurende z milliseconden.

lcd.print("XYZ"); = print een bericht met de karakters XYZ naar het LCD-scherm. (bijv. toon de Hertz-pitch)

vertraging (x); = pauze voor x milliseconden.

const int X=Y = stel een constante variabele X in op pin Y en gebruik X of Y om taken aan het apparaat toe te wijzen.

lcd.wissen(); = wis het LCD-scherm en reset voor een nieuwe weergave

pinMode(X, UITGANG); = stel pin X in voor uitvoermodus

Als je al deze functies eenmaal begrijpt, kun je de variabelen gemakkelijk vervangen door de gegevens die je verzamelt bij het vertalen van een nummer, en dan kun je je eigen nummer coderen!

Stap 6: Klaar!

Afgewerkt!!!
Afgewerkt!!!
Afgewerkt!!!
Afgewerkt!!!

Je hebt ofwel een Arduino die Fur Elise speelt en de nootwaarden in Hertz weergeeft, of je hebt een Arduino gemaakt die de melodie van het gekozen nummer speelt en de tekst weergeeft die je wilde laten zien. Bedankt voor het bezoeken van deze tutorial, en ik hoop je dit project op de Arduino.

Aanbevolen: