Tentang proyek ini
MESIN PENJUAL PRIBADI
Proyek ini adalah langkah demi langkah membangun mesin penjual otomatis pribadi. Mesin penjual otomatis dapat diisi dengan makanan ringan favorit Anda atau dapat dibawa ke kantor sehingga Anda dapat berbagi beberapa suguhan dengan tim Anda. Lihat dan beri tahu saya pendapat Anda.
Membangun Mesin :
Saya akan mengacu pada diagram mesin di seluruh teks ini, jadi silakan merujuk ke diagram untuk klarifikasi/pemahaman.
Dimensi mesin adalah 21"L x 18"D x 24 1/4"H (Dimensi Kotak)
2 panel 18"D x 23 3/4"H (Sisi)
2 panel 21"W x 18"D (Atas &Bawah)
2 panel 21"W x 24 1/4"H (Depan &Belakang)
Dinding pembatas berukuran 18"D x 23 3/4"H
Rak Internal berukuran 13"L x 12"D (dikalikan 2, rak atas dan bawah)
Rak berukuran 8” terpisah 13” lebar 12” dalam
Setiap blok biru pada diagram panel adalah titik pemasangan ”W x ”H sedalam panel
Pasang kotak seperti yang ditunjukkan pada diagram dan di sini menggunakan pemblokiran 3/4" di setiap titik persimpangan. Perhatikan bahwa dinding samping berada di atas pelat bawah dan di bawah pelat atas. Dinding perimeter harus berukuran 21"W dengan 24 1/4"H.
Dinding Pembagi perlu diatur sebelum dipasang. Ukur dari atas 16 1/4" dan pasang pemblokiran di sana untuk rak bawah. Ukur 8 1/4" dari atas dan pasang pemblokiran untuk rak paling atas. Selesaikan langkah-langkah ini di dinding kiri (melihat dari depan mesin) sehingga Anda dapat memasang sekat untuk rak atas dan bawah.
**** Perhatikan bahwa rak paling bawah harus dipasang terlebih dahulu jika tidak, mengamankan ke pemblokiran akan sangat sulit.
Setelah pemblokiran dipasang untuk rak, gunakan panel 13" x 12" dan pasang satu di setiap set pemblokiran. Ini akan secara otomatis mengatur dinding pembagi di tempat yang tepat. Kemudian kencangkan pemblokiran di bagian atas dan bawah sisi kanan dinding pembatas. Kemudian kencangkan ke panel atas dan bawah Ini akan benar-benar memastikan struktur Anda.
Pasang panel belakang dan bersiaplah untuk pemasangan motor. Pastikan Anda memiliki roda kumparan yang dicetak sehingga Anda dapat mengukurnya dan mengatur lubang bor Anda. Ukur roda dan tambahkan 1/4" ke ketinggian sehingga akan meninggalkan ruang untuk kumparan berputar. Anda mungkin ingin menyesuaikan ini sesuai kebutuhan tergantung pada bahan Anda. Ukur lebih dari 6 1/2" di rak untuk menandainya Tengah. Ukur lebih dari 3 1/4" untuk menemukan bagian tengah setiap bagian rak. Gunakan pengukuran ketinggian yang Anda rekam beberapa saat yang lalu untuk menemukan titik bor. Bor lubang yang memungkinkan Anda menyambungkan roda ke motor tanpa menggosok poros roda papan. Selesaikan pemasangan motor dan kencangkan pengencang.
Menyiapkan relai motor:
Hubungkan pin sebagai berikut. Gunakan chip L293D (takik ke kiri) (Dalam diagram rangkaian) sehingga Anda dapat mengontrol relai. Ini akan memungkinkan Anda menghubungkan motor ke sumber listrik.
(Mulai dari Kiri ke Kanan)
Pin 1 terhubung ke pin soket 10 pada pengontrol (Dalam diagram rangkaian)
Pin2 terhubung ke pin soket 9 pada pengontrol (Dalam diagram sirkuit)
Pin 3 terhubung ke sisi positif relai (dengan 3 pin menghadap Anda, pin di kiri) (Dalam diagram rangkaian)
Pin 4 terhubung ke ground 12V pada papan tempat memotong roti (Dalam diagram sirkuit)
Pin 5 Tidak digunakan (Dalam diagram sirkuit)
Pin 6 terhubung ke sisi Ground pada relai (dengan 3 pin menghadap Anda, pin di kanan) (Dalam diagram sirkuit)
Pin 7 terhubung ke pin soket 8 pada pengontrol (Dalam diagram rangkaian)
Pin 8 terhubung ke +12V pada papan tempat memotong roti (Dalam diagram sirkuit)
Hubungkan pin tengah pada relai ke +12V pada papan tempat memotong roti (Dalam diagram sirkuit)
Hubungkan kembali pin kanan pada relai (dengan 3 pin menghadap Anda, pin di belakang di kanan) ke kabel positif menuju driver motor (Dalam diagram rangkaian)
Pemasangan layar &tombol:Layar - Pilih tempat di sisi kanan mesin (melihat mesin dari depan) dan tandai lubang yang perlu dibuat untuk bagian tampilan layar (2,53937" x 0,5708661) Tombol - Pilih tempat di sisi kanan mesin (melihat mesin dari depan) dan tandai lubang yang perlu dibuat untuk 4 tombol. Lubang harus 1,10236" jika menggunakan tombol yang sama persis di daftar bagian. Saya suka menggunakan mata bor yang lebih kecil dari yang dibutuhkan dan kertas amplas untuk membawanya ke ukuran yang dibutuhkan.
Ingatlah bahwa Anda perlu memastikan bahwa Anda memiliki semua koneksi di tempat yang sama persis seperti pada diagram di atas. LED yang ditunjukkan pada diagram adalah LED yang terpasang pada tombol tekan. Diagram menunjukkan mereka terpisah tetapi itu hanya untuk tampilan dan membuatnya lebih mudah untuk membaca skema.
Hubungkan setiap motor ke driver yang disediakan bersama mereka. Kemudian hubungkan setiap driver ke pengontrol menggunakan langkah-langkah ini:
Pengaturan Motor:
Daya harus dihubungkan ke sisi 12V dari papan tempat memotong roti. Kekuatan ini berasal dari catu daya ATX yang akan kami siapkan di akhir. Kemudian sambungkan 4 pin “in” pada driver ke controller. Pin ini adalah sebagai berikut
********* JANGAN SAMBUNG KE 2 PIN PERTAMA DI BLOK INI ADALAH PIN 5V - TIDAK DIGUNAKAN DALAM PROYEK INI *********
Motor 1:Pin Biru 22, 24, 26, 28 (Dalam diagram sirkuit)
Motor 2:Pin Kuning 23, 25, 27, 29 (Dalam diagram sirkuit)
Motor 3:Pin Hijau 30, 32, 34, 36 (Dalam diagram sirkuit)
Motor 4:Pin Merah 31, 33, 35, 37 (Dalam diagram sirkuit)
Koneksi Tombol:
Hubungkan satu sisi Tombol Tekan 1 ke daya 5v, sisi lainnya ke resistor 220 yang diarde bersama dengan Pin Analog A0 (Dalam diagram rangkaian)
Hubungkan satu sisi Tombol Tekan 2 ke daya 5v, sisi lainnya ke resistor 220 yang diarde bersama dengan Pin Analog A1 (Dalam diagram rangkaian)
Hubungkan satu sisi Tombol Tekan 3 ke daya 5v, sisi lainnya ke resistor 220 yang diarde bersama dengan Pin Analog A2 (Dalam diagram rangkaian)
Hubungkan satu sisi Tombol Tekan 4 ke daya 5v, sisi lainnya ke resistor 220 yang diarde bersama dengan Pin Analog A3 (Dalam diagram rangkaian)
LAYAR LCD:
Hubungkan layar ke sisi 5v dari papan tempat memotong roti untuk daya dan arde
Pin adalah sebagai berikut:
Pin 1:Hubungkan ke Ground (Dalam diagram sirkuit)
Pin 2:Hubungkan ke daya 5v (Dalam diagram sirkuit)
Pin 3:Hubungkan ke potensiometer yang dapat disesuaikan (Gambar di bawah) Pin kiri bawah ke ground, kanan bawah ke power, dan pin atas ke pin 3 pada LCD (Dalam diagram rangkaian, Beginilah cara Anda mengatur kontras pada LCD sehingga teks menjadi tajam dan bersih)
Pin 4:Pin sinyal pertama ke pin pengontrol soket 2 (Dalam diagram rangkaian)
Pin 5:Hubungkan ke ground (Dalam diagram sirkuit)
Pin 6:Pin sinyal kedua ke pin pengontrol soket 3 (Dalam diagram rangkaian)
Pin 7:TIDAK DIGUNAKAN
Pin 8:TIDAK DIGUNAKAN
Pin 9:TIDAK DIGUNAKAN
Pin 10:TIDAK DIGUNAKAN
Pin 11:Pin sinyal ketiga ke pin pengontrol soket 4 (Dalam diagram rangkaian)
Pin 12:Pin sinyal keempat ke soket pin pengontrol 5 (Dalam diagram rangkaian)
Pin 13:Pin sinyal kelima ke pin pengontrol soket 6 (Dalam diagram rangkaian)
Pin 14:Pin sinyal keenam ke pin pengontrol soket 7 (Dalam diagram rangkaian)
Pin 15:Hubungkan ke daya 5v (Dalam diagram sirkuit)
Pin 16:Hubungkan ke Ground (Dalam diagram sirkuit)
PEMASUK DAYA ATX :
Hanya potong kabel yang diperlukan untuk memberi daya pada perangkat. Kabel lain lebih aman di konektor plastik dan akan memungkinkan Anda menggunakannya untuk proyek lain jika diperlukan.
Pin ATX:
Potong dan kupas pin kabel hitam (Pembumian) 3 dan pin kabel hijau (Sinyal) 16. Pasang kabel ini ke sakelar sehingga Anda dapat menghidupkan dan mematikan mesin (Dalam diagram rangkaian)
Potong dan kupas (Ground) pin kabel hitam 7 dan (+12V) pin kabel kuning 10. Pasang kabel ini ke sisi 12v dari papan tempat memotong roti yang ditunjuk dengan koneksi kuning dan hitam. (Dalam diagram sirkuit)
Potong dan lepaskan pin kabel hitam (Ground) 24 dan pin kabel kuning (+12V) 11. Pasang kabel ini ke konektor yang kompatibel untuk memberi daya pada papan Arduino (Dalam diagram sirkuit)
Potong dan kupas (Pembumian) pin kabel hitam 19 dan (+5V) pin kabel merah 21. Pasang kabel ini ke sisi 5V papan tempat memotong roti (Dalam diagram sirkuit)
Pembagi Rak dan Kumparan:
Berikut adalah cara mengatur rak dan ekstruder Anda.
Rak - Di titik tengah 6 1/2" dari dinding sisi kiri (melihat mesin dari depan) atau dinding pembagi harus ada tanda dari langkah-langkah di atas. Gunakan logam datar dan tekuk ke atas a segitiga. Terlihat seperti ini "^" Ini akan berfungsi sebagai pembagi tengah Anda. Pusatkan segitiga di atas tanda tengah di rak. Ulangi untuk rak kedua. Gunakan lem panas untuk mengencangkan di tempatnya. Saya juga meletakkan slide di samping tetapi mereka opsional.
Gulungan - Untuk membuat gulungan, pertama-tama temukan tabung 1 1/2". Pipa, tabung dempul, kaleng cat semprot, atau benda serupa bisa digunakan. Salah satu triknya adalah dengan mengambil karet gelang dan membungkusnya dari atas ke bawah di sekeliling panjangnya. dari tabung. Lacak garis lurus ke bawah setiap sisi pita di kedua sisi tabung. Setelah Anda memiliki garis paralel di kedua sisi gunakan pita pengukur untuk menandai titik berikutnya. Pilih satu sisi dan ukur dalam 1" dan tandai , lalu ukur 2" dari sana tandai dan terus buat jarak 2" di sepanjang tabung. Sekarang, di sisi lain tabung tandai hanya interval 2". Mulailah membuat gulungan di sisi 1" tabung dan lanjutkan membuat gulungan Anda sehingga menyentuh setiap tanda di kedua sisi tabung. Ini akan memberi Anda jarak 2" di antara anak tangga. Seharusnya cukup besar untuk sebagian besar item. Jika Anda berencana menggunakannya untuk permen, persingkat koil menjadi 1" kurangi saja rumus di atas hingga setengahnya.
Menghubungkan kumparan ke roda cetak 3D. Perlu diingat bahwa ada beberapa roda yang diproduksi yang akan berfungsi. Lihat di Amazon.
Pada sisi 1" koil runtuh koil ini sehingga membuat lingkaran. Kemudian memperpendek diameter menjadi sedikit lebih kecil dari roda. Setelah koil siap pasang di sekitar tepi roda. Ini akan menyebabkan koil menekan sekitar tepi roda dan jaga agar tidak tergelincir. Setelah Anda puas dengan kecocokannya, ambil sedikit lem panas dan letakkan di roda di ujung gulungan untuk menahannya di tempatnya.
Lampu Strip LED:
Hubungkan kabel Positif ke pin +12V di sisi 12V papan roti. Hubungkan kabel arde ke pin arde di sisi 12V papan roti (Tidak dalam diagram)
SILAKAN AJUKAN SEMUA PERTANYAAN YANG ANDA PUNYA SAYA DAPAT MEMBANTU DENGAN PEMBARUAN UNTUK MENJADI PROYEK TERMUDAH INI.
Kode
- Mesin Penjual Otomatis - TANPA MENGUBAH LAMPU LED
- Mesin Penjual Otomatis - DENGAN MENGGANTI LAMPU LED
- Akseptor Koin dan kode lengkap
Mesin Penjual Otomatis - TANPA MENGUBAH LAMPU LEDArduino
Semua yang Anda butuhkan untuk menyelesaikan dan memahami proyek// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include / /termasuk stepper motor library//Relay Setup#define ENABLE 10#define DIRA 8#define DIRB 9//Define "i"int i;//mendefinisikan bagian pin//Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23; int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int step =33;int langkahIN3Pin3 =35;int langkahIN4Pin3 =37;//menentukan langkahint langkahPerRevolusi =2048; // jumlah langkah per putaran // tentukan tombol pin portconst int button1Pin =A0; // Tekan Tombol 1 Pin Analog A0const int button2Pin =A1; // Push Button 2 Pin Analog A1const int button3Pin =A2; // Tekan Tombol 3 Pin Analog A2const int button4Pin =A3; //Tekan Tombol 4 Pin Analog A3//menentukan setiap stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin1, stepIN stepPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // Tetapkan input Push Button Pin:pinMode(PinMode); pinMode(button2Pin, INPUT); pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT); // Tetapkan pin output pinMode(ENABLE, OUTPUT); pinMode(DIRA, OUTPUT); pinMode(DIRB,OUTPUT); // Tetapkan Kecepatan Stepper myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //Inisialisasi Layar LCD lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Pilih barang Anda"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");}void loop() { // baca penetapan tombol int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); digitalWrite(ENABLE, HIGH);// Tetapkan status untuk (i=0;i<5;i++); // tentukan aksi saat tombol 1 ditekan jika (((button1State ==LOW) &&!(button2State ==LOW))))// jika kita menekan tombol 1 ATAU tombol 2 {digitalWrite(DIRA,HIGH); //masukkan relai digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper0.step(stepsPerRevolution); //jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(DIRA,RENDAH); //melepas relai digitalWrite(DIRB,LOW); } // tentukan aksi saat tombol 2 ditekan if (((button2State ==LOW) &&!(button1State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 {digitalWrite(DIRA,HIGH); //masukkan relai digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper1.step(stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(DIRA,RENDAH); //melepas relai digitalWrite(DIRB,LOW); } // tentukan aksi saat tombol 3 ditekan if (((button3State ==LOW) &&!(button4State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 {digitalWrite(DIRA,HIGH); //masukkan relai digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper2.step(stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Status Tombol 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(DIRA,RENDAH); //melepas relai digitalWrite(DIRB,LOW); } // tentukan tindakan saat tombol 4 ditekan if (((button4State ==LOW) &&!(button3State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 {digitalWrite(DIRA,HIGH); //masukkan relai digitalWrite(DIRB,LOW); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper3.step(-stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(DIRA,RENDAH); //melepas relai digitalWrite(DIRB,LOW); }}
Mesin Penjual Otomatis - DENGAN MENGUBAH LAMPU LEDC#
Lihat videonya!// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include //termasuk stepper motor library//Relay Setup#define ENABLE 10#define PinA 8#define PinB 9#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"int i;//Define "RGB"int r, g , b;//mendefinisikan bagian pin//Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37;//define stepsint langkahPerRevolution =2048; // jumlah langkah per putaran // tentukan tombol pin portconst int button1Pin =A0; // Tekan Tombol 1 Pin Analog A0const int button2Pin =A1; // Push Button 2 Pin Analog A1const int button3Pin =A2; // Tekan Tombol 3 Pin Analog A2const int button4Pin =A3; //Tekan Tombol 4 Pin Analog A3//menentukan setiap stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin1, stepIN stepPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // Tetapkan input Push Button Pin:pinMode(PinMode); pinMode(button2Pin, INPUT); pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT); // Tetapkan pin output pinMode(ENABLE, OUTPUT); pinMode(PinA, OUTPUT); pinMode(PinB, OUTPUT); // LED Strip pin setup pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT); // Tetapkan Kecepatan Stepper myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //Inisialisasi Layar LCD lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Pilih barang Anda"); lcd.setCursor(0, 1); lcd.print("#1 #2#3#4"); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);}void loop() { // baca penetapan tombol int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); digitalWrite(ENABLE, HIGH);// Tetapkan status untuk (i =0; i <5; i++); // tentukan tindakan ketika tombol 1 ditekan jika (((button1State ==LOW) &&!(button2State ==LOW))))// jika kita menekan tombol 1 ATAU tombol 2 { digitalWrite(PinA, HIGH); //menghubungkan relai digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); untuk (b =256; b> 0; b--); analogWrite(BLUEPIN, b); untuk (g =256; g> 0; g--); analogWrite(GREENPIN, g); untuk (g =256; g> 0; g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper0.step(stepsPerRevolution); //jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); untuk (b =0; b <256; b++); analogWrite(BLUEPIN, b); untuk (g =0; g <256; g++); analogWrite(GREENPIN, g); digitalWrite(PinA, RENDAH); //melepas relai digitalWrite(PinB, LOW); } // tentukan tindakan saat tombol 2 ditekan if (((button2State ==LOW) &&!(button1State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 { digitalWrite(PinA, HIGH); //menghubungkan relai digitalWrite(PinB, LOW); analogWrite(GREENPIN, 256); untuk (b =256; b> 0; b--); analogWrite(BLUEPIN, b); untuk (r =256; r> 0; r--); analogWrite(REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper1.step(stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(PinA, RENDAH); //melepas relai digitalWrite(PinB, LOW); untuk (b =0; b <256; b++); analogWrite(BLUEPIN, b); untuk (r =0; r <256; r++); analogWrite(REDPIN, r); } // tentukan aksi saat tombol 3 ditekan if (((button3State ==LOW) &&!(button4State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 { digitalWrite(PinA, HIGH); //menghubungkan relai digitalWrite(PinB, LOW); analogWrite(BLUEPIN, 256); untuk (r =256; r> 0; r--); analogWrite(REDPIN, r); untuk (g =256; g> 0; g--); analogWrite(GREENPIN, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper2.step(stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Status Tombol 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(PinA, RENDAH); //melepas relai digitalWrite(PinB, LOW); untuk (g =0; g <256; g++); analogWrite(GREENPIN, g); untuk (r =0; r <256; r++); analogWrite(REDPIN, r); } // tentukan aksi saat tombol 4 ditekan if (((button4State ==LOW) &&!(button3State ==LOW))) // jika kita menekan tombol 1 ATAU tombol 2 { digitalWrite(PinA, HIGH); //menghubungkan relai digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); untuk (b =256; b> 0; b--); analogWrite(BLUEPIN, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Pengeluaran"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); myStepper3.step(-stepsPerRevolution);//jalankan motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Silakan ambil"); lcd.setCursor(3, 1); lcd.print("Barang Anda"); penundaan (2500); lcd.setCursor(0, 0); lcd.print("Kondisi Tombol 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 atau 4"); digitalWrite(PinA, RENDAH); //melepas relai digitalWrite(PinB, LOW); untuk (b =0; b <256; b++); analogWrite(BLUEPIN, b); }}
Akseptor Koin dan kode lengkapC#
Kode lengkap// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include //termasuk stepper motor library// Pengaturan Relay#define ENABLE 10//#define PinA 8//#define PinB 9//Pin transistor untuk LED#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"//int i;//Define "RGB"int r, g, b;// Constantsconst int coinpin =21;const int ledpin =13;const int targetcents =100;// Variablesvolatile int cents =0;int credits =0;//menentukan bagian pin// Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37;//menentukan langkah-langkahInt langkahPerRevolusi 2048; // jumlah langkah per putaran // tentukan tombol pin portconst int button1Pin =A0; // Tekan Tombol 1 Pin Analog A0const int button2Pin =A1; // Push Button 2 Pin Analog A1const int button3Pin =A2; // Tekan Tombol 3 Pin Analog A2const int button4Pin =A3; //Tekan Tombol 4 Pin Analog A3//menentukan setiap stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN2Pin1, stepIN stepPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);// Setupvoid setup() { // Tetapkan interupsi kondisi digital untuk Pin danPinInterupt , BANGKIT); // Tetapkan input Pin Tombol Tekan:pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT); // Tetapkan pin Relay output pinMode(ENABLE, OUTPUT);// pinMode(PinA, OUTPUT);// pinMode(PinB, OUTPUT); // LED Strip pin setup pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT); // Tetapkan Kecepatan Stepper myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); //Inisialisasi Layar LCD lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Pilih barang Anda"); lcd.setCursor(0, 1); lcd.print("#1 #2#3#4"); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);}// Main loopvoid loop() { // If we've hit our target amount of coins, increment our credits and reset the cents counter if (cents>=targetcents) { credits =credits + 1; cents =cents - targetcents; } // If we haven't reached our target, keep waiting... else { } // Debugging zone lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print(cents); lcd.setCursor(3, 0); lcd.print("Coin Count"); lcd.setCursor(0, 1); lcd.print(credits); lcd.setCursor(3, 1); lcd.print("credit earned"); penundaan (1000); // Now, write your own code here that triggers an event when the player has credits! if (credits> 0) { // read button assignment int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); // digitalWrite(ENABLE, HIGH);// Set state // for (i =0; i <5; i++); // define action when button 1 is pressed if (((button1State ==LOW) &&!(button2State ==LOW)))// if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); for (g =256; g> 0; g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper0.step(stepsPerRevolution); //run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (g =0; g <256; g++); analogWrite(GREENPIN, g); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); credits =credits - 1; cents =cents - cents; } // define action when button 2 is pressed if (((button2State ==LOW) &&!(button1State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (r =256; r> 0; r--); analogWrite(REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper1.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 3 is pressed if (((button3State ==LOW) &&!(button4State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(BLUEPIN, 256); for (r =256; r> 0; r--); analogWrite(REDPIN, r); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper2.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (g =0; g <256; g++); analogWrite(GREENPIN, g); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 4 is pressed if (((button4State ==LOW) &&!(button3State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //! engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper3.step(-stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); credits =credits - 1; cents =cents - cents; } }}// Coin Increase loopvoid coinInterrupt() { // Each time a pulse is sent from the coin acceptor, interrupt main loop to add 5 cent and flip on the LED cents =cents + 5; digitalWrite(ledpin, HIGH);}
Skema
This is a complete Diagram of the system. It includes, ATX power supply, motors,LCD,LEDs, lights and controller