Mundarija:

Tugmachali kalitlarga ega Arduino pianino: 3 qadam
Tugmachali kalitlarga ega Arduino pianino: 3 qadam

Video: Tugmachali kalitlarga ega Arduino pianino: 3 qadam

Video: Tugmachali kalitlarga ega Arduino pianino: 3 qadam
Video: Control XY-1250 10-50V 60A 3000W PWM motor Speed controller using Arduino 2024, Iyul
Anonim
Arduino pianino tugmachalari bilan
Arduino pianino tugmachalari bilan
Arduino pianino tugmachalari bilan
Arduino pianino tugmachalari bilan

Yaratgan: Haotian Ye

Sharh

Bu sakkizta tugmachali kalitlarga ega pianino taxtasi, bu sizga bitta oktavani (Do Re Mi Fa So La Si Do) ijro etishga imkon beradi va shu oktavada siz o'zingiz yoqtirgan qo'shiqlarni ijro etishga urinib ko'rishingiz mumkin. Ushbu loyihani boshlashdan oldin bilishingiz kerak bo'lgan ba'zi muhim bilimlar mavjud.

Birinchidan, biz pianino uchun asosiy notalarning chastotalarini bilishimiz kerak.

Chastotalar quyida keltirilgan:

Chastotasi - 261 Gts

Qayta - 294 Gts

Mi - 329 gigagertsli

Faoliyati - 349 Gts

Shunday qilib - 392 Gts

Chastotasi - 440 Gts

Si - 493 Gts

Chastotasi - 523 Gts

Ikkinchidan, men sizga Li's Electronic Store -dan sotib olinadigan qismlar yordamida sxemani qanday qurishni ko'rsataman. Nihoyat, men Arduino taxtasiga yuklanishi kerak bo'lgan kodni taqdim etaman va tushuntiraman.

Sizga kerak bo'ladigan qismlar:

Arduino Uno R3 (Mahsulot raqami: 10997)

USB A - B kabeli M/M (Mahsulot raqami: 29861)

10K qarshilik * 8 (Mahsulot raqami: 91516)

Tugmachaning turli xil ranglari * 8 (Mahsulot raqami: 3124, 31242, 31243, 31245, 31246)

Mini dinamik (Mahsulot raqami: 41680)

Non paneli (Mahsulot raqami: 106861)

Jumper simlari (Mahsulot raqami: 21801)

1 -qadam: 1 -qadam: O'chirish tizimini yaratish

1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish
1 -qadam: O'chirish tizimini yaratish

Birinchidan, barcha tugmachali kalitlarni va mini karnayni birma -bir joylashtiring va ularni bir qatorga moslang. Keyin har bir tugmachaning pinlarini erga ulang. Ikkinchidan, har bir tugma tugmachasining musbat quvvati va boshqa pinlari orasidagi 10k rezistorni ulang. Va bu ustunni Arduino platasidagi 2-9-pinlarga ulang. Bundan tashqari, erni topraklama pimiga va Arduino -dagi 3,3v pinli musbat quvvatga ulang. Nihoyat, mini dinamikni Arduino 10 -piniga ulang.

2 -qadam: 2 -qadam: Kod va tushuntirish

Quyidagi kod men yozgan narsadir

const int qora = 2;

const int oq = 3;

const int qizil = 4;

const int yashil = 5;

const int ko'k = 6;

const int black2 = 7;

const int green2 = 8;

const int red2 = 9;

const int speaker = 10; // Barcha tugmachalarni va karnayni arduino signal pimlari bilan bog'lang

int chastotasi = {262, 294, 330, 349, 392, 440, 493, 523}; // qator bir oktavaning barcha chastotalarini o'z ichiga oladi

bo'sh o'rnatish () {

// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying:

pinMode (qora, INPUT);

pinMode (oq, Kirish);

pinMode (qizil, INPUT);

pinMode (yashil, Kirish);

pinMode (ko'k, INPUT);

pinMode (qora2, Kirish);

pinMode (yashil2, Kirish);

pinMode (qizil2, Kirish);

pinMode (dinamik, OUTPUT);

ohang (karnay, 2000);

Serial.begin (9600);

}

void loop () {

// qayta ishga tushirish uchun asosiy kodingizni bu erga qo'ying:

agar (digitalRead (qora) == LOW) // "DO" tugmachasini bosganingizda

{ohang (karnay, chastota [0], 50);

kechikish (50);

noTone (karnay);}

aks holda, "digitalRead (oq) == LOW) //" RE "tugmachasini bosganingizda

{ohang (karnay, chastota [1], 50);

kechikish (50);

noTone (karnay);}

aks holda, "digitalRead (qizil) == LOW) //" MI "tugmachasini bosganingizda

{ohang (karnay, chastota [2], 50);

kechikish (50);

noTone (karnay);}

aks holda, "digitalRead (yashil) == LOW) //" FA "tugmachasini bosganingizda

{ohang (karnay, chastota [3], 50);

kechikish (50);

noTone (karnay);}

aks holda, "digitalRead (ko'k) == LOW) //" SO "tugmachasini bosganingizda

{ohang (karnay, chastota [4], 50);

kechikish (50);

noTone (karnay);}

aks holda ("DigitalRead (black2) == LOW) //" LA "tugmachasini bosganingizda

{ohang (karnay, chastota [5], 50);

kechikish (50);

noTone (karnay);}

aks holda "digitalRead (green2) == LOW) //" SI "tugmachasini bosganingizda

{ohang (karnay, chastota [6], 50);

kechikish (50);

noTone (karnay);}

aks holda, "digitalRead (red2) == LOW) //" DO "tugmachasini bosganingizda

{ohang (karnay, chastota [7], 50);

kechikish (50);

noTone (karnay);}

boshqa // hech narsani bosmaganda

noTone (karnay);

}

Birinchidan, biz barcha tugmachalarni va dinamikni Arduino -dagi 2 dan 10 gacha bo'lgan pin deb e'lon qilishimiz kerak. Har bir kalit bitta eslatmani ifodalaydi. Keyin, barcha chastotalarni ichkariga kiritish uchun bitta qatordan foydalaning. Keyingi, If and else iborasi, men Arduino -ga qaysi tugmachali tugmachani bosishimni bildirish uchun ishlataman.

Nihoyat, Arduino kartasini kompyuterga yoki noutbukga USB -A -B kabeli bilan ulang. Kodni yuklamasdan oldin, siz hali ham Arduino dasturini yuklab olishingiz va standart sozlamalarni bajarishingiz kerak. Asboblar -> Kengash -> Arduino/Genuino Uno -ni tanlang; Keyin biz Arduino kartasiga ulangan aloqa portini tanlashimiz kerak. Asboblar -> Port -ni tanlang, keyin qaysi port nomi "(Arduino/Genuino Uno) deb belgilangan bo'lsa, tanlang. Keyin kodni Arduino kartasiga yuklashingiz mumkin.

Tavsiya: