Სარჩევი:

Arduino თავსატეხი ყუთი: 7 ნაბიჯი
Arduino თავსატეხი ყუთი: 7 ნაბიჯი

ვიდეო: Arduino თავსატეხი ყუთი: 7 ნაბიჯი

ვიდეო: Arduino თავსატეხი ყუთი: 7 ნაბიჯი
ვიდეო: Web Programming - Computer Science for Business Leaders 2016 2024, ივლისი
Anonim
Arduino თავსატეხი ყუთი
Arduino თავსატეხი ყუთი

ამ პროექტისთვის ჩვენ ვაკეთებთ თავსატეხის ყუთს, რომელიც მუშაობს მუსიკასთან. მისი ძირითადი არსი ის არის, რომ ღილაკზე დაჭერისას ის ათავისუფლებს მელოდიას და არდუინო ითვლის რომელი ღილაკები დაჭერილია ისე რომ მან იცის რა არის სწორი და რა არის არასწორი პასუხი.

მარაგები

1 x Arduino uno

1 x 1k Ohm რეზისტორი

5 x 220 Ohm რეზისტორები

1 xPiezo Buzzer

5 x ღილაკი 6x6 მმ

1 x კომპლექტი Jumper მავთულები

1 x პერფ/ზოლის დაფა

1 x solderset

1 x დამოკიდებული

1 x დამჭერი

1 x პატარა უჯრა უჯრა/ხე

1x ცხელი წებოს იარაღი + წებო ჩხირები

1 x 9 ვ ბატარეა + დამჭერი

ცოტა ვურბლა

საღებავი

Ნაბიჯი 1:

გამოსახულება
გამოსახულება

დასაწყისისთვის თქვენ უნდა დააჭიროთ თქვენს ქინძისთავებს თქვენს დაფაზე. ახლა დააკავშირეთ ანალოგი 2 მავთულით დაფის კუთხეში. ჩვენ ვაპირებთ მას დავუკავშიროთ ორი რეზისტორი ხაზში. პირველი არის 10k Ohm რეზისტორი. ამ რეზისტორის მეორე ბოლოში ჩვენ ვაკავშირებთ მავთულს ანალოგურ მიწასთან. მეორე რეზისტორი არის 220 Ohm რეზისტორი, რომელსაც ჩვენ ვუკავშირდებით პირველ ღილაკს. გამოიყენეთ იმავე მნიშვნელობის სხვა რეზისტორი, რათა დააკავშიროთ ღილაკის მეორე ღია მხარე მეორე ღილაკთან. განაგრძეთ მსგავსი ღილაკების დაკავშირება ბოლომდე. ბოლოს თქვენ აიღებთ მავთულს და უკავშირებთ მას ღილაკის შესაბამის დახურულ მხარეს და აერთებთ მას მომდევნო რიგში. თქვენ ახლა გაიმეორებთ იმ პროცესს, რაც რეზისტორებთან გააკეთეთ მხოლოდ უბრალო მავთულხლართებით. შეაერთეთ პირველი ღილაკი თქვენს Arduino– ს ანალოგიურ 3, 3V პორტთან. საერთო ჯამში თქვენ მიიღებთ ერთგვარ ჯვარცმულ მამას, როგორც ქვემოთ არის გამოსახული.

ნაბიჯი 2:

შემდეგ შეაერთეთ ზუზუნში ბორბალზე და მიამაგრეთ ერთი მხარე ციფრულ ადგილზე და მეორე 12 პორტში. გონივრულია უკვე ატვირთოთ შემდეგი კოდი თქვენს Arduino– ში, ასე რომ თქვენ შეგიძლიათ შეამოწმოთ მუშაობს თუ არა ყველაფერი სწორად. თუ ასეა, შეგიძლიათ დაიწყოთ კომპონენტების ერთმანეთთან შედუღება. გააკეთეთ ეს პურიდან ამოღებით და პირდაპირ მავთულხლართებითა და კავშირებით. თუ ფიქრობთ, რომ გჭირდებათ მეტი სიგრძე ღილაკებს შორის, შეგიძლიათ დაამატოთ დამატებითი მავთული რეზისტორებს შორის. პურის დაფა ამ ეტაპზე აღარ არის საჭირო.

ნაბიჯი 3:

გამოსახულება
გამოსახულება

მას შემდეგ რაც ყველაფერი შედუღდება დროა თავად გააკეთოთ ყუთი. მე გამოვიყენე უჯრების იაფი ნაკრები, როგორც ჩემი საფუძველი. მე უბრალოდ გავჭრა შუაზე სიგრძეზე და ამოვიღე უკანა და გვერდითი მხარე. თქვენ უნდა გქონდეთ ორი c ფორმის ნაჭერი. ერთი მათგანის ერთი მხარე გაჭერით სახურავად. ახლა გადაატრიალეთ ერთი დარჩენილი ნაჭერი ისე, რომ ისინი ერთმანეთთან ერთად მოთავსდეს უნაკლო ყუთში და დააწებოთ ისინი ერთმანეთთან. მას შემდეგ, რაც წებო სწორად დადგით, გახსენით პატარა ხვრელი ყუთის თითოეულ მხარეს ღილაკებისთვის და უფრო დიდი ზუზერისთვის სახურავზე.

ნაბიჯი 4:

გამოსახულება
გამოსახულება
გამოსახულება
გამოსახულება

ახლა თქვენ შეგიძლიათ გადახვიდეთ ყუთზე. მე გავაკეთე ჩემი ყვავილი დიზაინით, რომელიც დაფუძნებულია BOTW– ზე, მაგრამ თქვენ ნამდვილად შეგიძლიათ აირჩიოთ თქვენთვის სასურველი ნებისმიერი დიზაინი. ამის გაკეთების შემდეგ თქვენ შეგიძლიათ განათავსოთ ღილაკები ხვრელების შიგნით და განათავსოთ წებო გლობუსი ღილაკის უკანა მხარეს და მიმდებარე ხეზე. იგივე პრინციპი ვრცელდება ზუზერზე, მაგრამ ჩემი მშვენივრად ჯდება ხვრელში, რაც მას ზედმეტს ხდის. შემდეგ აიღებ ვურბლას და გააცხელებ და გაჭრი, რათა გააკეთო პატარა ღილაკები. ფრთხილად მიამაგრეთ ისინი ღილაკებზე, მაგრამ დარწმუნდით, რომ არ გამოიყენოთ ბევრი წებო, რადგან თქვენ შეიძლება შემთხვევით დაიჭიროთ ღილაკები. ახლა თქვენ შეგიძლიათ დახატოთ ისინი, რათა უფრო მეტად შეერწყას ყუთს.

ნაბიჯი 5:

ბოლოს თქვენ წებოვებით ან ხრახნით, სამაგრს და საკინძებს ყუთზე და სახურავზე აკავშირებთ ორს.

ნაბიჯი 6:

როდესაც თქვენი ყუთი დასრულებულია, თქვენ მხოლოდ უნდა ჩასვათ არდუინო და ბატარეა შიგნით და დახუროთ სახურავი.

ნაბიჯი 7: კოდი

// ეს არის კოდი ზელდას თემატური თავსატეხის/მუსიკალური ყუთისთვის.

// ეს აკავშირებს თქვენს კოდს სხვა ჩანართში შენიშვნების სიასთან

#მოიცავს "მოედნებს.ჰ"

// ეს ცვლადი უზრუნველყოფს, რომ Arduino ხედავს ღილაკის უფრო ხანგრძლივ დაჭერას, როგორც მხოლოდ ერთ დაჭერას

int იგივე = 0;

// აქედან წაიკითხავს თქვენს შეყვანას

int k = 2;

// ეს არის თქვენი გამომავალი პინი

int სპიკერი = 12;

// ქვემოთ მოცემულია ბოლო მელოდიები

int Zelda = {NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_D5, NOTE_A5, NOTE_G5, NOTEB5, NOTE_D5, NOTEB5, NOTE_D5, NOTE_D5, NOTE_D5, NOTEB5, NOTE_D5, NOTE_DE, NOTE_5, NOTEB5, NOTE_D5, NOTE_5, NOTEB5, NOTE4

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_D5, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_A4};

int EponaTime = {4, 4, 1.5, 4, 4, 1.5, 4, 4, 2, 2, 1};

int სარია = {NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_F4, NOTE_A4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_B4, NOTE_C5, NOTE_B4, NOTE44, NOTE_4, NOTE_4, NOTE_4, NOTE4, int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// შენიშვნის ნორმალური ხანგრძლივობა

int BEATTIME = 300;

// მრიცხველი, რომელიც თვალყურს ადევნებს, თუ ჩვენ ვართ გამოსავალში

int მთქმელი = 0;

void setup () {

სერიული.დაწყება (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

ბათილი მარყუჟი () {

// კითხულობს ქინძისთავებიდან შეყვანას

k = analogRead (2);

int p = analogRead (1);

// თუ რაიმე ღილაკზე დაჭერილი არ უნდა იყოს ტონი

თუ (მთხრობელი == 0) {

noTone (12);

}

// თუ წაკითხული მონაცემები შეესაბამება პარამეტრებს გაუშვით აღწერილი ბიტის კოდი

თუ (k> 320 && k <350) {

rechts ();

}

//""

სხვა შემთხვევაში თუ (k 290) {

ბმულები ();

}

//""

სხვა შემთხვევაში თუ (k> 260 && k <280) {

ნაქსოვი ();

}

//""

სხვა შემთხვევაში თუ (k> 240 && k <260) {

ონდერი ();

}

//""

სხვა შემთხვევაში თუ (k> 220 && k <240) {

a ();

}

// თუ ეს ასე არ არის (როდესაც არცერთი ღილაკი არ არის დაჭერილი), გაუშვით ეს კოდი

სხვა {

// გადატვირთეთ იგივე, რომ მისი გამოყენება შესაძლებელია ღილაკზე დაჭერის შემდეგ ჯერზე

იგივე = 0;

// თუ მრიცხველი არის გარკვეულ რიცხვამდე გაუშვით აღწერილი კოდის ბიტი

თუ (მთხრობელი == 166) {

ზელდა ();

}

//""

სხვაგან თუ (მთხრობელი == 386) {

სარია ();

}

//""

სხვა შემთხვევაში (მთხრობელი == 266) {

ეპონა ();

}

//""

სხვა შემთხვევაში თუ (მთხრობელი == 999) {

// შეცვალეთ ეს ტონი შეცდომის აღსანიშნავად

ტონი (სპიკერი, NOTE_C3, BEATTIME);

// აღადგინეთ მრიცხველი 0 -ზე

მთქმელი = 0;

}

}

// შეფერხება შეყვანისას და გამომავალს შორის

დაგვიანება (100);

// ბეჭდავს თქვენი შეყვანის მნიშვნელობებს სერიულ მონიტორში

სერიული. ბეჭდვა (კ);

}

// ეს არის პირველი მელოდია

void zelda () {

// ეს ადგენს მრიცხველს, რომელიც მელოდიის დაკვრისას განახლდება და მას შეუძლია წაიკითხოს და შეწყვიტოს როცა საჭიროა

for (int i = 0; i <sizeof (Zelda); i ++) {

// ამბობს რამდენ ხანს უნდა გაგრძელდეს შენიშვნა

int ZTime = 1000 / ZeldaTime ;

// წარმოქმნის ტონებს

ტონი (სპიკერი, ზელდა , ZTime);

// ქმნის სწორ შეფერხებას

int პაუზა = ZTime * 1.30;

შეფერხება (პაუზა);

// აღადგენს მრიცხველს

მთქმელი = 0;

// ბეჭდავს თქვენი შეყვანის მნიშვნელობებს სერიულ მონიტორში

Serial.println (მთქმელი);

}

}

//""

void epona () {

for (int i = 0; i <sizeof (Epona); i ++) {

int ETime = 1000 / EponaTime ;

ტონი (სპიკერი, Epona , ETime);

int პაუზა = ETime * 1.30;

შეფერხება (პაუზა);

მთქმელი = 0;

Serial.println (მთქმელი);

}

}

//""

void saria () {

for (int i = 0; i <sizeof (სარია); i ++) {

int STime = 1000 / SariaTime ;

ტონი (სპიკერი, სარია , STime);

int პაუზა = დრო * 1.30;

შეფერხება (პაუზა);

მთქმელი = 0;

Serial.println (მთქმელი);

}

}

void rec

hts () {

// თუ ეს უკვე არ იყო დაჭერილი

თუ (იგივე == 0) {

// თუ მრიცხველს ამჟამად აქვს ერთი ამ მნიშვნელობიდან, დაამატეთ მას

თუ (მომხსენებელი == 0 || მთხრობელი == 132 || მთხრობელი == 165 || მთხრობელი == 232 || მთხრობელი == 265 || მთხრობელი == 331 || მთხრობელი == 374) {

მთქმელი = მთხრობელი + 1;

}

// სხვაგვარად დააყენეთ ის 999 -ზე, რათა მოისმინოთ შეცდომის ხმაური

სხვა {

მთქმელი = 999;

}

// დააყენეთ ერთი ისე, რომ არდუინომ არ წაიკითხოს გახანგრძლივებული პრესი მრავალჯერადი დაჭერის სახით

იგივე = 1;

}

// ტონის დაკვრა

სხვა {

ტონი (სპიკერი, NOTE_A4, BEATTIME);

}

// ბეჭდავს თქვენი შეყვანის მნიშვნელობებს სერიულ მონიტორში

Serial.println (მთქმელი); }

//""

ბათილი ბმულები () {

თუ (იგივე == 0) {

თუ (მომხსენებელი == 133 || მთხრობელი == 254 || მთხრობელი == 244 || მთხრობელი == 332 || მთხრობელი == 375 || მთხრობელი == 221) {

მთხრობელი = მთხრობელი + 11;

}

სხვა შემთხვევაში თუ (მთხრობელი == 0) {

მთქმელი = 111;

}

სხვა {

მთქმელი = 999;

}

იგივე = 1;

} სხვა {

ტონი (სპიკერი, NOTE_B4, BEATTIME);

} Serial.println (მთქმელი);

}

//""

void boven () {

თუ (იგივე == 0) {თუ (მთხრობელი == 111 || მთხრობელი == 144 || მთხრობელი == 233) {

მთხრობელი = მთხრობელი + 21;

}

სხვა შემთხვევაში თუ (მთხრობელი == 0) {

მთქმელი = 221;

}

სხვა {

მთქმელი = 999;

}

იგივე = 1;

}

სხვა {

ტონი (სპიკერი, NOTE_D5, BEATTIME);

Serial.println (მთქმელი);

}

}

//""

void onder () {

თუ (იგივე == 0) {

თუ (მთქმელი == 343) {

მთქმელი = მთქმელი + 31;

}

სხვა შემთხვევაში თუ (მთხრობელი == 0) {

მთქმელი = 331;

} სხვა {

მთქმელი = 999;

} იგივე = 1;

} სხვა {

ტონი (სპიკერი, NOTE_F4, BEATTIME);

Serial.println (მთქმელი);

}

}

//""

ბათილია a () {

თუ (იგივე == 0) {

თუ (მთხრობელი == 0) {

მთქმელი = 461;

}

სხვა {

მთქმელი = 999;

}

იგივე = 1;

}

ტონი (სპიკერი, NOTE_D4, BEATTIME);

Serial.println (მთქმელი);

}

გირჩევთ: