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

Layar GLCD Waktu Putaran Mobil yang Dipicu Laser

Komponen dan persediaan

Arduino Mega 2560
× 1
Laser KY 008
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Pendahuluan

Saya membeli sepasang modul laser KY008 dan sensor yang cocok, dan saya tahu saya harus membuat beberapa proyek keren dengannya. Jadi, ambil pasangannya, dan buat gerbang pengatur waktu elektrik untuk jalur mobil slot yang sudah ada di atas meja untuk proyek mobil slot yang bisa menyetir sendiri.

Perangkat Keras

3 komponen utama adalah modul laser, sensor penerima laser, dan layar GLCD.

Saya sangat suka menggunakan GLCD, Anda dapat menemukan info tentang pin-out di sini:https://playground.arduino.cc/Code/GLCDks0108/

Dan Anda dapat mengunduh perpustakaan dari sini:

https://bitbucket.org/bperrybap/openglcd

Saya membuat konektor yang bagus dan mudah untuk itu, seperti yang ditunjukkan pada gambar di bawah.

Modul laser KY008 memiliki 3 pin, -, + dan S, saya hanya mempersingkat S dan + menjadi 5V. Jika Anda tidak ingin laser selalu menyala, sambungkan pin S ke pin digital di Arduino. kapan pun Anda menyetelnya tinggi, laser akan menyala.

Sensor memiliki 3 pin juga, GND, VCC dan SIGNALE. sambungkan ke daya dan pin input pada Arduino.

Tantangan terberat dalam build ini adalah menyelaraskan semuanya.

Anda dapat menonton hasil akhirnya di klip ini.


Kode

  • File tanpa judul
File tanpa judulArduino
/** Waktu menjaga gerbang digital* Kode oleh:Tal Ofer* [email protected]*/#include "openGLCD.h"// info putaranunsigned long currentRunStartMillis;unsigned long lastRunInMillis;unsigned long bestRunInMillis;int currentLap;unsigned lama disimpanMillis;gText t1; // akan menentukan waktu proses latergText t2; // akan menentukan waktu proses latergText t3; // akan menentukan runtime nanti// global untuk displayint sec_val, milli_val;// laser gate const int gateSensorPin =2; // nomor pinint sensor gerbang gateSensorState; // pembacaan saat ini dari sensorint lastgateSensorState =LOW; // pembacaan sebelumnya dari sensorunsigned long lastDebounceTime =0; // terakhir kali pin sensor di-toggledint debounceDelay =50; // waktu debounce; meningkat jika output flickersvoid setup() { // mode pin pinMode(gateSensorPin, INPUT); penundaan (50); // untuk memperlambat kerja sensor dan laser, jadi kita tidak akan memicu putaran. // mulai GLCD GLCD.Init(NON_INVERTED); // tentukan area t1.DefineArea(textAreaTOP, lcdnums14x24); t2.DefineArea(0, GLCD.CenterY, 8, 2, fixednums7x15); t3.DefineArea(GLCD.CenterX, GLCD.CenterY, 8, 2, fixednums7x15); t3.SetFontColor(PUTIH); // mengatur warna font t3.ClearArea(); // cetak teks GLCD.SelectFont(System5x7); GLCD.CursorTo(1, 4); GLCD.print("TERAKHIR"); GLCD.CursorTo(11, 4); GLCD.print("TERBAIK"); // reset params currentRunStartMillis =0; lastRunInMillis =0; bestRunInMillis =0; currentLap =0;}void loop(){ // membaca status sensor laser:int reading =digitalRead(gateSensorPin); // Jika sakelar berubah, karena suara atau penekanan:if (membaca !=lastgateSensorState) { // reset timer debouncing lastDebounceTime =milis(); } //end if // if melewati waktu debounce if ((millis() - lastDebounceTime)> debounceDelay) { if (membaca !=gateSensorState) { gateSensorState =membaca; // Jika kita menjadi rendah, ini berarti baloknya rusak if (gateSensorState ==LOW) { // simpan mili sehingga semua perhitungan akan dilakukan dengan nilai yang sama. saveMillis =milis(); // jika ini bukan putaran pertama if (currentLap>
 0) { // simpan putaran terakhir lastRunInMillis =saveMillis - currentRunStartMillis; // jika run terakhir lebih cepat maka run terbaik if (lastRunInMillis 
 0) { calcResultFromMillis(savedMillis - currentRunStartMillis, &sec_val, &milli_val); } else { calcResultFromMillis(0, &sec_val, &milli_val); } //end if // JALAN LANCAR t1.CursorTo(3, 0); // kolom &baris relatif terhadap area teks t1.Printf(F("%02d.%03d"), sec_val, milli_val); // LAST RUN calcResultFromMillis(lastRunInMillis, &sec_val, &milli_val); t2.CursorTo(1, 1); // kolom &baris relatif terhadap area teks t2.Printf(F("%02d.%03d"), sec_val, milli_val); // BEST RUN calcResultFromMillis(bestRunInMillis, &sec_val, &milli_val); t3.CursorTo(1, 1); t3.Printf(F("%02d.%03d"), sec_val, milli_val);} //wnd loop// hitung mili menjadi 2 nilai, detik dan mili untuk displayvoid calcResultFromMillis(nilai panjang yang tidak ditandatangani, int *sec_val, int * milli_val) { *sec_val =int(nilai / 1000); *milli_val =nilai - *sec_val * 1000;}

Proses manufaktur

  1. Panduan untuk Penandaan Laser Aluminium
  2. Panduan untuk Penandaan Laser
  3. Apa itu Penandaan Laser Serat?
  4. Penunjuk Laser
  5. Roller Coaster
  6. Laser Semikonduktor
  7. Laser Padat
  8. Jam pasir
  9. Kuman TFT 3.5 RetroPie 2018
  10. Rpibot – Tentang Belajar Robotika