Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Hindari The Defs!

Komponen dan persediaan

Resistor 10k ohm
Satu untuk kontras layar LCD, satu lagi untuk tombol.Penting:Gunakan resistor di tarik konfigurasi -down, berbeda dengan konfigurasi pull-up yang ditunjukkan dalam manual.
× 2
Resistor 1k ohm
Untuk kontras layar LCD.
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
× 1
Arduino UNO
× 1
Kabel jumper (generik)
× 1

Tentang proyek ini

Latar belakang

Saya adalah bagian dari proyek yang lebih besar tetapi ada penundaan. Jadi saya memutuskan untuk melakukan sesuatu dengan kit Arduino lama saya. Saya tidak pernah menggunakan layar LCD sebelumnya. Jadi, saya menyolder pin ke layar (saya belajar menyolder untuk pertama kalinya).

Awalnya saya menyalin kode dari manual online dan mengunggahnya. Itu hanya menampilkan teks, bergerak ke kanan dan ke kiri. Saat itulah saya diperkenalkan ke perpustakaan LiquidCrystal. Saya menulis kode yang membuat angka "0" memantul di layar, itu cukup menyenangkan. Saat itulah saya berpikir untuk membuat sesuatu yang sedikit lebih kompleks, sebuah game. Saya mencari di Google untuk game lcd di arduino dan hanya menemukan 3 game, 2 di antaranya berfungsi untuk saya. Kode untuk game ini terlalu rumit untuk saya pahami, jadi saya memutuskan untuk membuat game yang mudah.

Menyiapkan

Hubungkan pin lcd ke arduino dengan kabel seperti yang ditunjukkan pada skema di bawah ini.

Saya menggunakan potensiometer 10k untuk menyesuaikan kontras dan menyesuaikannya dengan kontras yang saya inginkan. Saya mengukur resistansi antara pin dengan multimeter dan menggunakan resistor yang sesuai (seri 1k dan 10k ohm) untuk pin VO LCD.

Tempatkan tombol tekan pada papan tempat memotong roti dan sambungkan kabel input ke pin 8 pada arduino. Unggah kode ke arduino Anda dan Anda siap untuk pergi.

Catatan:Gunakan resistor tombol dalam mode pull-down, seperti yang ditunjukkan pada skema.

Bermain game

Dalam permainan ini, Anda adalah pemain sepak bola dengan bola di kaki Anda. Anda akan memiliki pembela yang mendekati Anda, dan Anda harus menghindarinya.

Setelah intro, tekan tombol saat diminta. Ketika bek datang cukup dekat, tekan tombol untuk melompat. Pemain bertahan berikutnya akan mendekat dengan kecepatan lebih tinggi, dan ini berlanjut untuk 10 pemain bertahan.

PS:Saya awalnya menggunakan "0" sebagai kontrol, dan "1" sebagai penghalang. Karena Piala Dunia FIFA 2018 sedang berlangsung dan saya sendiri adalah penggemar Messi, saya memutuskan untuk mengubah temanya.

Saya membuat mesin terbang untuk pemain dan pemain bertahan menggunakan generator online, tautannya tersedia di sini:https://omerk.github.io/lcdchargen/

Kode

  • lcd_1.ino
lcd_1.inoArduino
/* Hindari defs!! Dibuat oleh :Shreyas R P Dibuat pada:21-06-2018 E-mail ID :[email protected] Gim sederhana untuk LCD 16x2 dengan tombol. Jika Anda melakukan perbaikan atau perubahan pada permainan, harap tambahkan kredit Anda di bawah baris:Selamat menikmati :) Hak Cipta (C) 2018 Shreyas RP Program ini adalah perangkat lunak gratis:Anda dapat mendistribusikan ulang dan/atau memodifikasinya di bawah ketentuan GNU Lisensi Publik Umum sebagaimana diterbitkan oleh Free Software Foundation, baik versi 3 dari Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru. Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA JAMINAN APAPUN; bahkan tanpa jaminan tersirat tentang KELAYAKAN DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya. Anda seharusnya telah menerima salinan GNU General Public License bersama dengan program ini. Jika tidak, lihat . -------------------------------------------------- ------------------------------------------- */#include const int btn =8; //tombol input pin//teks untuk ditampilkanchar* introText[]={"Hindari defs!!","Dibuat pada:", "Tekan tombol..."};//variable declarationsint game=0;int buttonPress =0; int buttonState=0;int obstaclePos;int obsDelay;int skor=0;lama waktu yang tidak ditandatanganiDebounceTime =0; // terakhir kali pin output di-toggledunsigned long debounceDelay =50; int lastButtonState=RENDAH;//GRAPHICSbyte runnin1[8] ={ 0b01100, 0b01100, 0b00000, 0b11100, 0b01110, 0b01100, 0b11110, 0b00011};byte runnin2[8]={ 0b00110, 0b00110, 0b00000, 0b00111, 0b0110.110 0b01110, 0b00101};byte jump[8]={ 0b00100, 0b01100, 0b11100, 0b01110, 0b01100, 0b11111, 0b00000, 0b00001};byte def1[8] ={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 0b01111, 0b01000,111 0b00000};byte def2[8]={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 0b00110, 0b00110, 0b00010};byte slide[8]={ 0b00000, 0b00000, 0b00011, 0b00011, 0b00000, 0b01111, 0b11111, 0b00000}; LiquidCrystal lcd(4,6,10,11,12,13);void setup() { Serial.begin(9600); pinMode(btn,INPUT); lcd.begin(16,2); lcd.createChar(0,runnin1); lcd.createChar(1,runnin2); lcd.createChar(2,lompat); lcd.createChar(3,def1); lcd.createChar(4,def2); lcd.createChar(5,slide); buttonState=digitalRead(btn);}void loop(){ intro(); while(permainan==1) ballActive(); akhir permainan(); } batal intro() { skor=0; lcd.clear(); lcd.print(introText[0]); //Alih-alih mendeklarasikan introText, Anda dapat langsung mencetak teks dengan " ... " lcd.setCursor(7,1); lcd.print("Dengan SRP888"); penundaan(2000); lcd.clear(); lcd.print(introText[1]); lcd.setCursor(0,1); lcd.print("21-06-2018"); penundaan(2000); lcd.clear(); while(button()!=1) //tunggu pengguna menekan tombol, tampilkan teks sampai itu. { lcd.setCursor(0,0); lcd.print(introText[2]); penundaan(100); } jika(tombol()==1) permainan=1; } void reset() { if(obstaclePos%2==0) //Mengubah tampilan pemain dari satu pose ke pose lainnya untuk menunjukkan dia sedang berlari, dengan cerdas menggunakan obstaclePos. { lcd.clear(); lcd.setCursor(0,1); lcd.tulis(byte(0)); } else { lcd.clear(); lcd.setCursor(0,1); lcd.tulis(1); } } void ballActive() { obsDelay=200; //penundaan awal untuk rintangan bekPos=15; //karena ini adalah lcd 16x2, dan indeks dimulai dari 0. while(game==1) { reset(); if(button()==1) //jika tombol ditekan. { lcd.clear(); lcd.setCursor(0,0); lcd.tulis(2); //cetak rintangan lompat pemain(obstaclePos); //cetak penundaan bek (400); //Ini untuk mencegah tampilan menghilang dengan cepat, dan tidak diperhatikan. lcd.clear(); lcd.setCursor(0,1); lcd.tulis(1); //cetak pemain kembali pada rintangan tanah(obstaclePos); //print the defender } else { if(obstaclePos!=0) //jika defender belum mendekati pemain, lanjutkan. { mengatur ulang(); rintangan (obstaclePos); } else if(obstaclePos==0) ​​//jika bek berada di posisi 0, mis. dia telah mendekati pemain ketika dia berada di tanah, lalu mengakhiri permainan. { permainan=0; merusak; } } halanganPos--; //membawa pemain bertahan lebih dekat ke pemain if(obstaclePos<0) //jika pemain berhasil mengelak maka, { obsDelay=obsDelay-20; //mengurangi delay (meningkatkan kecepatan),obstaclePos=15; //bawa pemain bertahan ke posisi awal, skor++; //dan tambah skornya sebesar 1. } if(obsDelay==0) //jika 10 pemain telah berhasil menghindar (karena 200/20=10), maka akhiri permainan game=0; penundaan (obsDelay); } }int button() { int membaca =digitalRead(btn); // Jika sakelar berubah, karena suara atau penekanan:if (membaca !=lastButtonState) { // reset timer debouncing lastDebounceTime =milis(); } if ((millis() - lastDebounceTime)> debounceDelay) { buttonState =membaca; if (buttonState ==HIGH) { lastButtonState =membaca; kembali 1; } } lastButtonState =reading;}void obstacle(int i){ if(obstaclePos%2==0&&obstaclePos>2) //jika pemain bertahan jauh dari pemain, tunjukkan padanya berlari { lcd.setCursor(i,1); lcd.tulis(3); } else if(obstaclePos%2!=0&&obstaclePos>2) { lcd.setCursor(i,1); lcd.tulis(4); } else //jika dia berada 2 langkah di dekat pemain, maka tunjukkan dia meluncur { lcd.setCursor(i,1); lcd.tulis(5); }}void endGame(){ if(skor==10) { lcd.clear(); lcd.print("Selamat!"); lcd.setCursor(0,1); lcd.print("Kamu mengalahkan mereka semua"); penundaan(3000); } else if(skor<3) { lcd.clear(); lcd.print("Kamu payah"); lcd.setCursor(0,1); lcd.print("Nilai :"); lcd.print(skor); penundaan(3000); } else if(skor<6) { lcd.clear(); lcd.print("Tidak buruk!"); lcd.setCursor(0,1); lcd.print("Nilai :"); lcd.print(skor); penundaan(3000); } else { lcd.clear(); lcd.print("Bagus!"); lcd.setCursor(0,1); lcd.print("Nilai :"); lcd.print(skor); penundaan(3000); }}

Skema


Proses manufaktur

  1. Ode ke Prototipe
  2. Tantangan Desain Produk
  3. Tetrode
  4. Pemantauan Suhu di Raspberry Pi
  5. Pameran:Tampilan Primal
  6. Drone Pi
  7. Archimedes:AI Robot Owl
  8. Sumber Data Strategis Adalah Cara Modern untuk Menghindari Gangguan
  9. Rahasia Perbaikan Layar Sentuh Industri
  10. Peniup Daun Terbaik