Агуулгын хүснэгт:
- Алхам 1: Хөгжмийн оноог дижитал тэмдэглэл болгон хөрвүүлэх: үнэ цэнийг хойшлуулах
- Алхам 2: Хөгжмийн оноог дижитал тэмдэглэл болгон хөрвүүлэх: Герцын үнэ цэнэ
- Алхам 3: Хэлхээний дизайн
- Алхам 4: Код байршуулах: Хэрхэн хийх
- Алхам 5: Код байршуулах: Энэ бүхэн юу гэсэн үг вэ?
- Алхам 6: Дууссан !
Видео: Arduino ашиглан дууг дижитал болгох: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Би шинжлэх ухаан, хөгжим гэсэн дуртай хоёр хичээлээ нэгтгэсэн төсөл бүтээхийг хүсч байсан. Би эдгээр хоёр домэйныг нэгтгэх бүх аргыг бодож үзсэн бөгөөд Hertz -д тэмдэглэлийн талбарыг харуулахдаа Arduino -ийн Fur Elise -ийг тоглох нь сонирхолтой байх болно гэж бодсон. Одоо барилга барьж эхэлцгээе!
Танд нэг Arduino Uno эсвэл Mega, олон тооны холбогч кабель, пьезо дуугаруулагч, талхны самбар, бүх арчигч зүү бүхий 16*2 хэмжээтэй LCD дэлгэц, 10 к потенциометр хэрэгтэй болно (та тэдгээрийг потметр гэж нэрлэдэг)). Барилга угсралтын ажлыг эхлүүлэхийн өмнө эдгээр бүх хангамжийг цуглуулах нь дээр.
Алхам 1: Хөгжмийн оноог дижитал тэмдэглэл болгон хөрвүүлэх: үнэ цэнийг хойшлуулах
Тэмдэглэлээс авсан тэмдэглэлийг дижитал эквивалент болгон дижитал хэлбэрээр хөрвүүлэх хоёр алхам байдаг. Нэгдүгээрт, тэмдэглэлийн үргэлжлэх хугацааг миллисекундээр бичих шаардлагатай болно. Би энэ даалгаврыг онлайнаар олсон график ашигласан. Тэмдэглэл нь хагас нот, улирлын тэмдэглэл, найм дахь дэвсгэрт гэх мэт зүйл дээр үндэслэн би мөнгөн тэмдэгтийн уртыг миллисекунд болгон хөрвүүлэв. Та эдгээр тоонуудыг миний код дээр саатал () гэж харж болно; функц ба хаалт доторх тоо нь энэ алхамд бидний тодорхойлсон миллисекундын хоцролтын утга байх болно.
Алхам 2: Хөгжмийн оноог дижитал тэмдэглэл болгон хөрвүүлэх: Герцын үнэ цэнэ
Энэ алхамыг эхлүүлэхийн өмнө зарим техникийн нэр томъёог тодорхойлъё. Тэмдэглэлийн "үнэ цэнэ" -ийг "давирхай", "үнэ цэнэ", "тэмдэглэл" гэсэн үгсээр сольж болно. Одоо та дууны тэмдэглэл бүрийг оноон дээрээс унших хэрэгтэй. Дараа нь та тэмдэглэл бүрийг Hertz хүснэгт рүү хөгжим ашиглан орчуулах хэрэгтэй бөгөөд үүнийг онлайнаар олох боломжтой. Санаж байх ёстой нэг зүйл бол дунд C нь ширээн дээр C4 гэж бичигдсэн бөгөөд илүү өндөр октав нь C5 гэх мэт. Эдгээр тэмдэглэлүүдийг бүгдийг Герц болгон хөрвүүлсний дараа та утгыг функцийн аялгуунд оруулах болно (x, y, z); энд X бол зүү дугаар эсвэл const int, хувьсагчдыг тодорхойлох арга бөгөөд үүнийг дараа тайлбарлах болно. Y нь таны саяхан хөрвүүлсэн Герц утга байх ба Z нь миллисекундээр тэмдэгтийн үргэлжлэх хугацаа нь зуун дахь нарийвчлалтайгаар бөөрөнхийлөнө. Саатал (); утга нь тэмдэглэлийн үргэлжлэх хугацаа байх болно. Одоо хөгжим тоглож чадах хэлхээний загварыг хийцгээе.
Алхам 3: Хэлхээний дизайн
Одоо бид бүх тэмдэглэлийг компьютер ойлгох дижитал утга болгон хөрвүүлсний дараа хэлхээг бий болгох цаг болжээ. Эхлээд талхны самбар аваад LCD дэлгэцийг эхний зүү (GND) 14 -р эгнээнд байрлуул. Зорилго нь бүх зүйлийг эгнүүлэх, утаснуудын түгжрэлийг багасгах явдал юм. Arduino -ийг талхны дэргэд байрлуулж, 5v зүүг талхны эерэг төмөр замд, газрын зүүг сөрөг төмөр замд холбоно. Одоо бид Arduino болон бүрэлдэхүүн хэсгүүдийн хооронд холбогчийг холбоход бэлэн байна.
Одоо LCD дэлгэц дээрх тээглүүр, утсыг хэрхэн яаж холбох талаар ярилцъя.
GND нь газар гэсэн үг бөгөөд энэ нь шууд гүйдлийн сөрөг утас юм. GND -ийг талхны сөрөг төмөр зам руу холбоно уу.
VCC нь Нийтлэг коллектор дахь хүчдэл гэсэн утгатай бөгөөд энд та 5 вольтын тэжээлийн эх үүсвэрээ (эерэг цахилгаан дамжуулагч) холбодог.
VO нь Contrast гэсэн утгатай бөгөөд үүнийг потенциометрийн дунд зүүгээр холбоно уу. Потенциометрийн зүүн зүүг эерэг цахилгаан төмөр замд, баруун талын зүүг газардуулгын төмөр замд холбоно.
RS гэдэг нь Register Select гэсэн утгатай бөгөөд үүнийг Arduino дэлгэцэнд өгөгдлийг хаана хадгалахаа хэлж өгдөг. Энэ зүүг Arduino дээрх 12 -р зүү рүү холбоно уу.
RW гэдэг нь унших/бичих зүү гэсэн товчлол бөгөөд энэ нь Arduino -ийн ашиглан дэлгэцэнд таны харуулахаар төлөвлөсөн зүйлийг харуулж байгаа эсэхийг шалгадаг. Энэ зүүг талхны самбар дээрх сөрөг төмөр замд холбоно уу.
E гэдэг нь идэвхжүүлэх гэсэн утгатай бөгөөд энэ нь LCD дэлгэц дээр аль пикселийг идэвхжүүлэх (асаах) эсвэл идэвхгүй болгох (унтраах) болохыг хэлдэг. Энэ зүүг Arduino pin 11 -тэй холбоно уу.
D4, D5, D6, D7 нь дэлгэц дээр гарч буй тэмдэгтүүд болон үсгүүдийг хянадаг. Тэдгээрийг 5, 4, 3, 2 -р Arduino тээглүүрт холбоно уу.
Пин А, заримдаа LED гэж нэрлэдэг нь арын гэрэлтүүлгийн LED анод юм. Үүнийг эерэг цахилгаан төмөр замд утсаар эсвэл 220 ом эсэргүүцэлтэй холбоно уу. Эсэргүүцэл нь LCD дэлгэцийг удаан хадгалдаг тул илүү сайн ашиглах боломжтой боловч хэрэв төхөөрөмжийг өдөр шөнөгүй ашиглахгүй бол танд резистор хэрэггүй болно.
Pin K, заримдаа бас (ойлгомжгүй байдлаар) LED гэж тэмдэглэсэн нь LED газардуулгын зүү юм. Үүнийг газардуулгын төмөр замд холбоно уу.
Алхам 4: Код байршуулах: Хэрхэн хийх
Arduino -г компьютерийн USB -д залгаарай. Дараах кодыг Arduino IDE програмист ашиглан байршуулна уу.
#оруулах
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
хүчингүй тохиргоо () {
// LCD -ийн багана, мөрийн тоог тохируулах: lcd.begin (16, 2); // Зурвасыг LCD дэлгэц дээр хэвлэх. lcd.print ("Hertz Pitch:!"); саатал (1000); void loop () {// e4 саатал тоглох (600); // 0.6 секундын турш түр зогсоох (10, 329.63, 300); 329.63 "); // LCD дэлгэц дээр" 329.63 "мессежийг харуулах
саатал (350); //.35 секундын хугацаагаар хойшлуулах
lcd.clear (); // LCD -г арилгаж, дараагийн зурвасыг тохируулах // d4# аяыг тоглуулах (10, 311.13, 300); lcd.print ("311.13"); саатал (350); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (350); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (350); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (350); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.66, 300); lcd.print ("293.66"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); // line60 // helpsave // avrdude.failure.eeprom // d3 аяыг тоглуулах (10, 146.83, 300); lcd.print ("146.63"); саатал (350); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); lcd.print ("174.61"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 300); lcd.print ("220"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 900); lcd.print ("246.94"); саатал (1000); lcd.clear ();
// e3 тоглох
ая (10, 164.81, 300); lcd.print ("164.81"); саатал (400); lcd.clear (); // g3# аяыг тоглуулах (10, 207.65, 300); lcd.print ("207.65"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 900); lcd.print ("261.63"); саатал (1000); lcd.clear (); // e ая тоглох (10, 164.81, 300); lcd.print ("164.81"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.66, 300); lcd.print ("293.66"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); // d3 аяыг тоглуулах (10, 146.83, 300); lcd.print ("146.83"); саатал (400); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); // eeprom 20–6 yesno, flash 65–0 noyes lcd.print ("174.61"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 300); lcd.print ("220.0"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 900); lcd.print ("246.94"); саатал (1000); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); lcd.print ("174.61"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.66, 300); lcd.print ("293.66"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 900); lcd.print ("329.63"); саатал (1000); lcd.clear (); // g3 аяыг тоглуулах (10, 196, 300); lcd.print ("196.0"); саатал (400); lcd.clear (); // f4 аяыг тоглуулах (10, 349.23, 300); lcd.print ("349.23"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.23, 300); lcd.print ("329.23"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.63, 900); lcd.print ("293.63"); саатал (1000); lcd.clear (); // e3 аяыг тоглуулах (10, 164.81, 300); lcd.print ("164.81"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.63, 300); lcd.print ("293.63"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 900); lcd.print ("261.63"); саатал (1000); lcd.clear (); // d3 аяыг тоглуулах (10, 146.83, 300); lcd.print ("146.83"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.63, 300); lcd.print ("293.63"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 900); lcd.print ("246.94"); саатал (1000); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (350); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (350); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (350); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (350); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.66, 300); lcd.print ("293.66"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); // d3 аяыг тоглуулах (10, 146.83, 300); lcd.print ("146.83"); саатал (350); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); lcd.print ("174.61"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 300); lcd.print ("220.0"); саатал (400); // b3 lcd.clear () тоглох; ая (10, 246.94, 900); lcd.print ("246.94"); саатал (1000); lcd.clear (); // e3 аяыг тоглуулах (10, 164.81, 300); lcd.print ("164.81"); саатал (400); lcd.clear (); // g#3 аяыг тоглуулах (10, 207.65, 300); lcd.print ("207.65"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 900); lcd.print ("261.63"); саатал (1000); саатал (300); lcd.clear (); // e3 аяыг тоглуулах (10, 164.81, 300); lcd.print ("164.81"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // d4# ая тоглох (10, 311.13, 300); lcd.print ("311.13"); саатал (400); lcd.clear (); // e4 аяыг тоглуулах (10, 329.63, 300); lcd.print ("329.63"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // d4 аяыг тоглуулах (10, 293.66, 300); lcd.print ("293.66"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); // d3 аяыг тоглуулах (10, 146.83, 300); lcd.print ("146.83"); саатал (400); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); lcd.print ("174.61"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 300); lcd.print ("220.0"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 900); lcd.print ("246.94"); саатал (1000); lcd.clear (); // f3 аяыг тоглуулах (10, 174.61, 300); lcd.print ("174.61"); саатал (400); lcd.clear (); // c4 аяыг тоглуулах (10, 261.63, 300); lcd.print ("261.63"); саатал (400); lcd.clear (); // b3 аяыг тоглуулах (10, 246.94, 300); lcd.print ("246.94"); саатал (400); lcd.clear (); // a3 ая тоглох (10, 220, 900); lcd.print ("220.0"); саатал (1000); lcd.clear (); }
Алхам 5: Код байршуулах: Энэ бүхэн юу гэсэн үг вэ?
Зарим функцийг англи хэл дээр тодорхойлъё, ингэснээр та кодыг ойлгох боломжтой болно.
ая (x, y, z); = y Герц давтамжтай, x хадах дуут дохиог z миллисекундээр тоглуулах.
lcd.print ("XYZ"); = LCD дэлгэц дээр XYZ тэмдэгт бүхий мессеж хэвлэх. (жишээ нь Герцын давирхайг харуулах)
саатал (x); = x миллисекундээр түр зогсоох.
const int X = Y = тогтмол хувьсагч X -ийг Y -д зүүж, төхөөрөмжид даалгавар өгөхдөө X эсвэл Y -ийг ашиглана уу.
lcd.clear (); = LCD дэлгэцийг цэвэрлээд шинэ дэлгэцийг дахин тохируулна уу
pinMode (X, OUTPUT); = гаралтын горимд X pin -ийг тохируулна уу
Эдгээр бүх функцийг ойлгосны дараа та дуу орчуулахдаа цуглуулсан өгөгдлөөрөө хувьсагчдыг хялбархан орлуулж, дараа нь өөрийнхөө дууг кодлох боломжтой болно!
Алхам 6: Дууссан !
Та Fur Elise -ийн дүрд тоглодог, Hertz -д тэмдэглэлийн утгыг харуулдаг Arduino -тэй, эсвэл та сонгосон дууныхаа аялгууг тоглодог, харуулахыг хүссэн текстээ харуулсан Arduino -г бүтээсэн болно. Энэхүү гарын авлагад зочилсон танд баярлалаа, танд энэ төслийг Arduino дээр өгөх болно гэж найдаж байна.
Зөвлөмж болгож буй:
Arduino дууг хэрхэн реактив LED болгох вэ: 7 алхам
Arduino дууг хэрхэн реактив LED болгох вэ: Энэ бол Arduino дууг реактив LED болгох маш энгийн заавар юм.Хэрэв танд энэ заавар таалагдсан бол миний сувгийг бүртгүүлээрэй https://www.youtube.com/ZenoModiff
Соник Пи дээр цаасан хөгжим ашиглан дууг хэрхэн кодлох вэ: 5 алхам
Соник Пи дээр хөгжмийн хуудсыг ашиглан дууг хэрхэн кодлох вэ: Энэхүү заавар нь Sonic Pi -д дууны хуудсыг хөгжим ашиглан кодлоход ашиглах үндсэн алхамууд болон кодын хэсгүүдийг тоймлох болно. Дууссан хэсэгтээ амт оруулахыг оролдох өөр хэдэн сая код байдаг тул та мөн y орчимд тоглож байгаарай
Apple -ийн гар утсан дээрх дууг хэрхэн яаж дуут дохио болгох вэ: 5 алхам
Apple -ийн утасны дууг хэрхэн яаж дуут дохио болгох вэ: Хэрэв та ерөнхий дуудлагын аятай цорын ганц хүнээс болж зовж байгаа бол эсвэл үүнийг төлөхийг хүсэхгүй байгаа бол энэ энгийн төсөл танд маш тохиромжтой
Оюун санааны хяналтыг бий болгох гипноз Мөрөөдлийн машиныг хямд болгох: 7 алхам
Оюун санааны хяналттай гипнозын мөрөөдлийн машиныг хямд болгох: Энэ бол үндсэндээ хэд хэдэн нэмэлт функц, зарим ажилтай Flash Nap төсөл юм. Энэ нь бас "Light/Sound" гипнозын машинуудын хамгийн бага хувилбар бөгөөд хэдэн зуун долларын үнэтэй боловч хэрэв танд эд анги байгаа бол энэ машин хэдхэн долларын үнэтэй болно. ХӨТӨЛБӨРГҮЙ
ITunes дууг үнэхээр сайн болгох: 4 алхам
ITunes дууг үнэхээр сайн болгох: Хөгжимөө үнэхээр сайхан болгохын тулд iTunes эквалайзераа тохируулаарай. Хөгжмөө илүү сайхан өнгөрүүлээрэй! Анхаарна уу: Илтгэгчийн тохиргоо болон таны сонсож буй хөгжмөөс хамааран үр дүн нь өөр өөр байдаг