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

Pembuat Urutan Ringan

Komponen dan persediaan

Arduino UNO
× 1
Breadboard (generik)
× 2
Kabel jumper (generik)
× 55
74HC595 Shift Register
× 1
tombol
× 4
Potensiometer putar (generik)
× 1
LED (generik)
× 8
Resistor 221 ohm
× 9
Resistor 10k ohm
× 4

Alat dan mesin yang diperlukan

tangan

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Saya telah bersenang-senang dengan lampu dan array dan berpikir saya akan menggunakan register geser dan layar LCD untuk membuat program di mana Anda dapat memodifikasi dan menampilkan animasi ringan Anda tanpa harus masuk ke kode dan membuat animasi dengan tangan. setiap kali.

Ada 4 tombol, dari kiri ke kanan diberi nomor 1 - 4. Mereka memungkinkan Anda untuk menavigasi menu, dan mengubah variabel. Tombol 1 digunakan untuk menambah nilai dan untuk mengubah status lampu ke TINGGI. Tombol 2 digunakan untuk menurunkan nilai, dan untuk mengubah status lampu ke RENDAH. Tombol 3 dapat menggerakkan kursor ke belakang saat membuat bingkai, dan tombol 4 digunakan sebagai tombol 'kembali'.

Program dapat mengubah kecepatan animasi dan berapa kali animasi akan berulang. Saya mungkin merilis versi lain yang memungkinkan beberapa animasi.

Anda dapat mengubah bingkai dengan mengubah ARR_SIZE di bagian atas dalam kode

Selamat menikmati

Kode

  • Pengurut Cahaya
Pengurutan CahayaC/C++
Pasang kode ini dan jalankan, jika kabelnya benar maka seharusnya TIDAK ada masalah!
Nikmati
#include #define ARR_SIZE 16 // GANTI ini ke sejumlah frame#define LIGHTS 8// Kontrol tombol permainan inputsconst int btn1 =7, btn2 =8, btn3 =9, btn4 =10;// Variabel untuk membaca status tombol tekanint bs1 =0, bs2 =0, bs3 =0, bs4 =0;// Pin terhubung ke ST_CP dari 74HC595const int latchPin =11;// Pin terhubung ke SH_CP dari 74HC595const int clockPin =13;// Pin terhubung ke DS dari 74HC595const int dataPin =12;// Pemegang untuk informasi yang akan Anda lewati data bit;// Digunakan untuk membaca 1 atau 0bool ArrOne[ARR_SIZE][LIGHTS] ={false}; // animasi// Diterjemahkan untuk register sebagai bytebyte lightArrOne[ARR_SIZE] ={0xFF};// Variabel untuk mempengaruhi animasiint animSpeed ​​=50; // ms antara setiap frameint loopCount =5; // berapa kali akan dijalankan// Mengontrol Nilai LCDconst int rs =15, en =14, d4 =3, d5 =4, d6 =5, d7 =6;LiquidCrystal lcd(rs, en, d4, d5, d6 , d7);void setup(){ // Atur setiap tombol pinMode(btn1, INPUT_PULLUP); pinMode(btn2, INPUT_PULLUP); pinMode(btn3, INPUT_PULLUP); pinMode(btn4, INPUT_PULLUP); // Atur jumlah kolom dan baris LCD:lcd.begin(16, 2); // Atur register latch pinMode(latchPin, OUTPUT); PrintMenu();}void loop(){ bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); // Mainkan anim if(bs1 ==HIGH) { bs1 =LOW;// hanya digunakan untuk mencegah penundaan input yang buruk/ganda(150); Bermain(); // Ubah animasi } else if(bs2 ==HIGH) { bs2 =LOW; penundaan(150); Buat(ArrOne); // Ubah kecepatan animasi } else if(bs3 ==HIGH) { bs3 =LOW; penundaan(150); kecepatan set(); // Ubah berapa kali anime akan diputar } else if(bs4 ==HIGH) { bs4 =LOW; penundaan(150); SetLoop(); } PrintMenu(); delay(150);}// Berfungsi untuk mencetak info menu utamavoid PrintMenu(){ ClearScreen(); lcd.print("1-Mainkan 3-Kecepatan"); lcd.setCursor(0, 1); lcd.print("2-Create 4-Loops");}// Berfungsi untuk mencetak info untuk membuat framevoid PrintCreate(bool Arr[][LIGHTS], int frame, int _bit){ ClearScreen(); lcd.print("Bingkai:"); lcd.print(bingkai+1); if(bingkai <9) lcd.print(" "); for(int j =0; j <_bit; j++) lcd.print(" "); lcd.print("v"); lcd.setCursor(0, 1); lcd.print(""); for(int j =0; j <8; j++) lcd.print(Arr[frame][j]);}// Berfungsi untuk mencetak info untuk setting speedvoid PrintSetSpeed(){ ClearScreen(); lcd.print("Setel Kecepatan(md)"); lcd.setCursor(0, 1); lcd.print(animSpeed);}// Berfungsi untuk mencetak info untuk mengubah jumlah loop animasivoid PrintSetLoop(){ ClearScreen(); lcd.print("Atur Hitungan Loop"); lcd.setCursor(0, 1); lcd.print(loopCount);}// Berfungsi untuk memutar animasi dengan parameter yang diberikanvoid Play(){ // Animasi for(int count =0; count  0) { b =LIGHTS-1; bingkai--; } bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); if(bs1 ==TINGGI) { delay(150); Arr[bingkai][b] =benar; b++; } else if(bs2 ==TINGGI) { delay(150); Arr[bingkai][b] =salah; b++; } else if(bs3 ==TINGGI) { delay(150); B--; } else if(bs4 ==TINGGI) { delay(150); meninggalkan =benar; } penundaan (10); } PrintCreate(Arr, bingkai, b); IntToHexToByte(Arr); penundaan (500); }}// Berfungsi untuk mengubah array menjadi byte untuk register agar tidak membaca IntToHexToByte(bool Arr[][LIGHTS]){ for(int row =0; row  1) animSpeed--; } // Tingkatkan kecepatan if(bs4 ==HIGH) { delay(150); meninggalkan =benar; } penundaan (30); }}// Berfungsi untuk mengubah berapa kali anim loopsvoid SetLoop(){ bool meninggalkan =false; while(!meninggalkan) { PrintSetLoop(); bs1 =digitalRead(btn1); bs2 =digitalRead(btn2); bs3 =digitalRead(btn3); bs4 =digitalRead(btn4); if(bs1 ==TINGGI) { delay(10); jumlah loop++; } if(bs2 ==TINGGI) { delay(10); if(animSpeed ​​> 1) loopCount--; } if(bs4 ==TINGGI) { delay(150); meninggalkan =benar; } penundaan (30); }}// Berfungsi untuk benar-benar menggeser bit dalam registervoid shiftOut(int myDataPin, int myClockPin, byte myDataOut){ // Ini menggeser 8 bit keluar MSB terlebih dahulu, // di tepi naik jam, // jam idle rendah // pengaturan fungsi internal int i =0; int negara bagian; pinMode(myClockPin, OUTPUT); pinMode(myDataPin, OUTPUT); //hapus semuanya untuk berjaga-jaga //mempersiapkan register geser untuk bit shifting digitalWrite(myDataPin, 0); digitalWrite(myClockPin, 0); // Setiap bit dalam byte myDataOut for (i =7; i>=0; i--) { digitalWrite(myClockPin, 0); if ( myDataOut &(1 <  

Skema

Ikuti garis dengan hati-hati, Karena keterbatasan panjang resistor dalam program, dan untuk tujuan keterbacaan, saya tidak dapat memadatkannya dengan cara yang sama seperti yang saya lakukan di build saya yang sebenarnya. Setelah membangun saya menantang Anda untuk menemukan cara untuk membersihkannya.

Proses manufaktur

  1. Detektor Bahasa TinyML Berbasis Edge Impulse &Arduino
  2. Game Arduino Gyroscope dengan MPU-6050
  3. Arduino Digital Dice
  4. Game Roulette LED 37 DIY
  5. ATtiny85 Mini Arcade:Ular
  6. Detektor Jangkauan Portabel
  7. Lampu Meja Reaktif Audio Arduino
  8. Mobil Robot Pelacak Wajah Cerdas
  9. Elektroplating dengan Tembaga
  10. NeoMatrix Arduino Pong