Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
|
Bagian-bagian yang dibutuhkan ditunjukkan pada gambar di atas. Mulailah dengan Arduino tanpa daya. JANGAN mencolokkan kabel USB. Itu akan terjadi di langkah selanjutnya ketika tiba waktunya untuk memprogramnya dan mencoba permainannya.
Koneksi
Gunakan kabel penghubung panjang untuk menghubungkan sinyal 5V pada Arduino di paling kiri baris merah di bagian atas papan tempat memotong roti.
Gunakan kabel pengait panjang untuk menghubungkan sinyal GND ke paling kiri baris hitam (atau biru pada beberapa papan tempat memotong roti) di bagian atas papan tempat memotong roti.
Modul LCD (Liquid Crystal Display) memiliki header laki-laki 16-pin di bagian bawah. Tancapkan ini ke papan tempat memotong roti seperti yang ditunjukkan pada gambar. Semua sinyal elektronik yang memberi daya dan mengontrol LCD melewati header ini.
Pin ini (dari kiri ke kanan):
Menggunakan kabel penghubung pendek, sambungkan GND dan LED- (pin 1 dan 16) ke baris hitam di atas.
Demikian pula, sambungkan VCC (pin 2) ke baris merah di atas dengan kabel penghubung pendek.
Tekuk kabel resistor 220 (pita berwarna merah-merah-coklat) dan hubungkan antara LED+ dan baris merah di bagian atas papan tempat memotong roti.
Gunakan kabel penghubung yang lebih panjang untuk membuat sisa koneksi:
Pasang tombol tekan di suatu tempat di sebelah kiri layar LCD, mengangkangi saluran yang berjalan di sepanjang bagian tengah papan tempat memotong roti (lihat gambar di atas). Hubungkan salah satu dari dua pin atas tombol ke baris hitam di bagian atas papan tempat memotong roti menggunakan kabel hookup pendek. Hubungkan pin lain di bagian atas tombol ke pin 2 Arduino.
#termasuk#menentukan PIN_BUTTON 2#menentukan PIN_AUTOPLAY 1#menentukan PIN_READWRITE 10#menentukan PIN_CONTRAST 12#menentukan SPRITE_RUN1 1#menentukan SPRITE_RUN2 2#menentukan SPRITE_JUMP 3#menentukan SPRITE_JUMP // Menggunakan '.' //menentukan karakter untuk kepala#menentukan SPRITE_JUMP_LOWER 4#menentukan SPRITE_TERRAIN_EMPTY ' ' // Menggunakan karakter ' '#menentukan SPRITE_TERRAIN_SOLID 5#menentukan SPRITE_TERRAIN_SOLID_RIGHT 6#menentukan SPRITE_TERRAIN_TERRAIN_SOLID posisi horizontal pada layar HORID_#POSIHORID_LEFT. TERRAIN_EMPTY 0#menentukan TERRAIN_LOWER_BLOCK 1#mendefinisikan TERRAIN_UPPER_BLOCK 2#menentukan HERO_POSITION_OFF 0 // Pahlawan tidak terlihat#mendefinisikan HERO_POSITION_RUN_LOWER_1 1 // Pahlawan berlari di baris bawah (pose 1)#menentukan HERO_POSER_2_POSITION_JULI_POS_2 / // (HERO_POSER_1_POSITION_RUN_POSITION_POSITION 2 / Memulai lompatan#menentukan HERO_POSITION_JUMP_2 4 // Naik setengah jalan#menentukan HERO_POSITION_JUMP_3 5 // Melompat ada di baris atas#menentukan HERO_POSITION_JUMP_4 6 // Melompat ada di baris atas#menentukan HERO_POSITION_JUMP_5 7 // Melompat ada di baris atas#mendefinisikan HERO_POSITION_JUMP_POSITION_JUMP_POSITION_ 8 // Lompat ada di baris atas#menentukan HERO_POSITION_JUMP_7 9 // Setengah jalan ke bawah#menentukan HERO_POSITION_JUMP_8 10 // Tentang mendarat#menentukan HERO_POSITION_RUN_UPPER_1 11 // Pahlawan berlari di baris atas (pose 1)#define HERO_POSITION_RUN_UPPER_2 12 // (pose 2)LiquidCrystal lcd(11, 9, 6, 5, 4, 3);static char terrainUpper[TERRAIN_WIDTH + 1];static char terrainLower [TERRAIN_WIDTH + 1];tombol bool statisPushed =false;void initializeGraphics(){ static byte graphics[] ={ // Jalankan posisi 1 B01100, B01100, B00000, B01110, B11100, B01100, B11010, B10011, // Jalankan posisi 2 B01100, B01100, B00000, B01100, B01100, B01100, B01100, B01110, // Lompat B01100, B01100, B00000, B11110, B01101, B11111, B10000, B00000, // Lompat ke bawah B11110, B01101, B11111, B10000, B00000, B00000 , B00000, B00000, // Ground B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111, // Ground kanan B00011, B00011, B00011, B00011, B00011, B00011, B00011, B00011, // Ground kiri B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000, }; di aku; // Lewati menggunakan karakter 0, ini memungkinkan lcd.print() digunakan untuk // menggambar banyak karakter dengan cepat untuk (i =0; i <7; ++i) { lcd.createChar(i + 1, &graphics[i * 8]); } untuk (i =0; i 9999) ? 5 :(skor> 999) ? 4 :(skor> 99) ? 3 :(skor> 9) ? 2 :1; // Gambar pemandangan terrainUpper[TERRAIN_WIDTH] ='\0'; medanLower[TERRAIN_WIDTH] ='\0'; char temp =terrainUpper[16-digit]; medanUpper[16-digit] ='\0'; lcd.setCursor(0,0); lcd.print(terrainUpper); medanUpper[16-digit] =suhu; lcd.setCursor(0,1); lcd.print(terrainLower); lcd.setCursor(16 - angka,0); lcd.print(skor); medanUpper[HERO_HORIZONTAL_POSITION] =simpanan atas; medanLower[HERO_HORIZONTAL_POSITION] =lebih rendahSimpan; kembali bertabrakan;}// Tangani push tombol sebagai tombolPush() interupsivoid { buttonPushed =true;}pengaturan batal(){ pinMode(PIN_READWRITE, OUTPUT); digitalWrite(PIN_READWRITE, RENDAH); pinMode(PIN_CONTRAST, OUTPUT); digitalWrite(PIN_CONTRAST, RENDAH); pinMode(PIN_BUTTON, INPUT); digitalWrite(PIN_BUTTON, TINGGI); pinMode(PIN_AUTOPLAY, OUTPUT); digitalWrite(PIN_AUTOPLAY, TINGGI); // Pin digital 2 memetakan untuk menginterupsi 0 attachInterrupt(0/*PIN_BUTTON*/, buttonPush, FALLING); initializeGraphics(); lcd.begin(16, 2);}void loop(){ byte statis heroPos =HERO_POSITION_RUN_LOWER_1; byte static newTerrainType =TERRAIN_EMPTY; byte statis newTerrainDuration =1; bermain bool statis =salah; kedipan bola statis =salah; static unsigned int distance =0; if (!playing) { drawHero((blink) ? HERO_POSITION_OFF :heroPos, terrainUpper, terrainLower, distance>> 3); if (berkedip) { lcd.setCursor(0,0); lcd.print("Tekan Mulai"); } penundaan (250); berkedip =!berkedip; if (tombolDidorong) { initializeGraphics(); heroPos =HERO_POSITION_RUN_LOWER_1; bermain =benar; buttonPushed =salah; jarak =0; } kembali; } // Geser medan ke kiri advanceTerrain(terrainLower, newTerrainType ==TERRAIN_LOWER_BLOCK ? SPRITE_TERRAIN_SOLID :SPRITE_TERRAIN_EMPTY); advanceTerrain(terrainUpper, newTerrainType ==TERRAIN_UPPER_BLOCK ? SPRITE_TERRAIN_SOLID :SPRITE_TERRAIN_EMPTY); // Buat medan baru untuk dimasuki di sebelah kanan if (--newTerrainDuration ==0) { if (newTerrainType ==TERRAIN_EMPTY) { newTerrainType =(random(3) ==0) ? TERRAIN_UPPER_BLOCK :TERRAIN_LOWER_BLOCK; newTerrainDuration =2 + acak(10); } else { newTerrainType =TERRAIN_EMPTY; newTerrainDuration =10 + acak(10); } } if (buttonPushed) { if (heroPos <=HERO_POSITION_RUN_LOWER_2) heroPos =HERO_POSITION_JUMP_1; buttonPushed =salah; } if (drawHero(heroPos, terrainUpper, terrainLower, distance>> 3)) { bermain =false; // Pahlawan bertabrakan dengan sesuatu. Sangat buruk. } else { if (heroPos ==HERO_POSITION_RUN_LOWER_2 || heroPos ==HERO_POSITION_JUMP_8) { heroPos =HERO_POSITION_RUN_LOWER_1; } else if ((heroPos>=HERO_POSITION_JUMP_3 &&heroPos <=HERO_POSITION_JUMP_5) &&terrainLower[HERO_HORIZONTAL_POSITION] !=SPRITE_TERRAIN_EMPTY) { heroPos =HERO_POSITION_RUN_UPPER_1; } else if (heroPos>=HERO_POSITION_RUN_UPPER_1 &&terrainLower[HERO_HORIZONTAL_POSITION] ==SPRITE_TERRAIN_EMPTY) { heroPos =HERO_POSITION_JUMP_5; } else if (heroPos ==HERO_POSITION_RUN_UPPER_2) { heroPos =HERO_POSITION_RUN_UPPER_1; } else { ++heroPos; } ++jarak; digitalWrite(PIN_AUTOPLAY, terrainLower[HERO_HORIZONTAL_POSITION + 2] ==SPRITE_TERRAIN_EMPTY ? HIGH :LOW); } delay(100);}
Tidak ada dokumen.
Proses manufaktur
Komponen dan persediaan Arduino UNO × 1 Sensor Kelembaban Tanah SparkFun (dengan Terminal Sekrup) × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Breadboard (generik) × 1 Alat dan mesin yang diperlukan Besi solder (generik) A
Komponen dan persediaan Arduino Nano R3 × 1 PCBWay Kustom PCB × 1 Espressif ESP8266 ESP-01 × 1 Modul Relai Dua Saluran × 1 LED (generik) × 2 Breadboard (generik) × 1 Kabel jumper (generik) × 1 Resistor 1k ohm × 2
Komponen dan persediaan Arduino UNO × 1 Motor servo mikro SG90 × 2 Breadboard (generik) × 1 Modulo Joystick × 1 Kabel jumper (generik) × 1 Alat dan mesin yang diperlukan Pistol lem panas (generik) Pisau Pisau Tajam
Komponen dan persediaan Arduino Mega 2560 ATAU ARDUINO UNO!! Ubah DUCK_PIN dalam kode menjadi 3 dan rewire sesuai jika Anda ingin menggunakan uno × 1 Kabel jumper (generik) +- 20 diperlukan × 20 Sakelar Tombol Tekan SparkFun 12mm × 2 Resistor 10k ohm × 2