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

Staf Jalan Kaki Penyihir

Komponen dan persediaan

Arduino 101
× 1
Pengatur Tegangan Pololu $4
× 1
3x dudukan baterai AA dengan sakelar
× 1
Baterai AA
Semua jenis boleh. Anda membutuhkan 3.
× 1
Adaptor Jack M Barel
$1,95 Ini memudahkan untuk menyambungkan &memutuskan daya
× 1
Adaptor Jack Barrel F
$1,95 Ini memudahkan untuk menyambungkan &memutuskan daya
× 1
Strip LED Beralamat
Contoh ini ditulis untuk LED NeoPixel yang kompatibel, strip 60 piksel.
× 1
Sport Tape
Semua jenis pita kain. Ini digunakan untuk memegang barang elektronik pada tongkat dan membuat pegangan yang bagus.
× 1
Karet Pita
Untuk membantu menahan bagian-bagian pada tongkat sampai Anda dapat menggunakan selotip.
× 1
Staf. (sapu, pipa sprinkler, tongkat jalan alami, dll)
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Proyek ini menggunakan Arduino 101, baterai dan strip LED untuk membuat Staf Berjalan Wizard yang dikendalikan oleh gerakan. Kami akan mendefinisikan tiga "mantra" tampilan cahaya yang berbeda yang dapat Anda panggil dengan menggerakkan tongkat dalam salah satu dari tiga gerakan.

Teknologi:

Kode menggunakan Unit Pengukuran Inersia di Arduino 101 untuk membaca G-force, tetapi tidak menggunakan Mesin Pencocokan Pola (misalnya menggunakan PME, lihat proyek PME Kitty Yeung). Sebagai gantinya, kode ini menghitung impuls cepat dalam arah X, Y, dan Z dan memanggil mantra saat Anda melakukan kombinasi tertentu dalam waktu singkat.

Mantra Pengecoran:

Dua ketukan vertikal cepat memulai mantra, lalu Anda dapat menggerakkan tongkat dengan tajam ke depan, kiri/kanan, atau ketuk ketiga kalinya untuk memilih salah satu dari tiga mantra, lalu ketukan terakhir mengeluarkan mantra.

Umpan Balik Visual:

Untuk membantu Anda memahami di mana Anda berada dalam gerakan Anda, kode contoh menyertakan umpan balik visual dari strip LED. Saat Anda pertama kali melakukan ketukan dua kali, lampu akan berkedip putih dengan cepat, memberi tahu Anda bahwa mantra telah dimulai. Anda akan mendapatkan umpan balik visual untuk setiap langkah sehingga Anda tahu mantra mana yang akan dipilih.

Mantra Pengecoran (detail):

Pegang tongkat dengan Arduino 101 menghadap Anda. Pertama, ketuk dua kali tongkat (dengan lembut!) di tanah, atau lakukan dua gerakan vertikal cepat di udara. Saat Anda melihat kilatan putih, gerakkan tongkat dengan tajam ke depan atau ke belakang untuk memilih Mantra 1, atau miringkan tongkat ke kiri atau ke kanan untuk memilih Mantra 2, atau gerakkan secara vertikal ketiga kalinya untuk memilih Mantra 3. Saat mantra dipilih, lampu akan bersinar hijau pekat (mantra 1,) biru (mantra 2) atau merah (mantra 3.) Setelah lampu menyala, panggil mantra dengan ketukan vertikal terakhir. Lampu akan berkilau dan berkedip dalam warna yang dipilih.

Gerakan sensitif terhadap waktu! Anda hanya memiliki 1 detik antara setiap langkah dalam gerakan atau mantra akan disetel ulang. Itu berarti jika Anda mengacaukan atau memilih mantra yang salah, Anda bisa menunggu sebentar dan memulai dari awal. Memanggil mantra secara akurat sedikit sulit untuk dikuasai, tetapi kabar baiknya adalah mantra tidak akan dipanggil secara tidak sengaja saat Anda hanya berjalan-jalan dengan staf.

Membangun Elektronik:

Ini pada dasarnya hanya Arduino 101, baterai, dan strip LED NeoPixel.

Ada beberapa cara untuk mengkonfigurasi daya. Yang tercepat adalah menggunakan baterai 9v dan menjalankan LED langsung dari Arduino 101- tetapi masa pakai baterai akan sangat singkat. Anda juga dapat menggunakan baterai LiPo untuk memaksimalkan daya/berat untuk bangunan yang lebih "pro" - tetapi Anda memerlukan cara yang aman untuk mengisi daya baterai. Bagi saya, keseimbangan yang baik antara masa pakai baterai dan kesederhanaan adalah dengan menggunakan 3 baterai AA dan pengatur tegangan $4. Ini adalah pengaturan elektronik yang sama seperti di Shadow Theater dan Kaleidoscope Infinity Mirror.

Langkah 1

Kumpulkan end harness dari strip LED Anda dengan memotong sekitar 1 cm dari ujung lampu. Lepaskan ujung kabel.

Langkah 2

Pisahkan pin header bengkok yang disertakan dengan pengatur tegangan Anda, dan solder dua di antaranya ke ujung kabel hijau dan kuning. Ini akan memudahkan Anda mencolokkannya ke pin Arduino 101.

Langkah 3

Selanjutnya solder kabel merah ke terminal VIN pada regulator tegangan, dan solder dua header lurus ke pin GND dan VOUT seperti yang ditunjukkan.

Langkah 4

Sekarang sambungkan adaptor jack barel. Pertama-tama lepaskan ujung kabel yang berasal dari wadah baterai Anda, lalu pasang di terminal jack barel jantan dan kencangkan dengan obeng. MERAH menuju terminal (+), HITAM menuju terminal (-).

Selanjutnya sambungkan adaptor jack barel perempuan ke kabel longgar yang berasal dari awal strip LED. KUNING menuju ke terminal (-), dan MERAH menuju ke (+).

Langkah 5

Sekarang hubungkan harness Anda ke Arduino 101. Kabel HIJAU ke PIN 6, kabel KUNING ke pin GND di dekat #13. Dengan dua pin header pada pengatur tegangan, GND menuju ke GND dan VOUT menuju ke pin "VIN" pada Arduino 101. Jangan salah! Mencolokkan ke belakang menyebabkan bau dan luka bakar. Saya tahu ini.

Mengunggah Kode Contoh:

Langkah 1

Dengan unit baterai dimatikan, gunakan kabel USB untuk menghubungkan Arduino 101 Anda ke komputer, dan unggah kode contoh terlampir menggunakan Arduino IDE.

Jika Anda belum pernah memprogram Arduino 101 sebelumnya, ada petunjuk bagus di situs web Arduino di sini:https://www.arduino.cc/en/Guide/Arduino101

Setelah kode contoh berhasil dimuat, Anda dapat memutuskan sambungan USB, dan menguji kode dengan menyalakan baterai dan mencoba beberapa gerakan mantra dengan port USB pada Arduino 101 menghadap ke bawah, dan dengan pin menghadap Anda. Coba gerakkan papan secara vertikal empat kali untuk memanggil Mantra Merah.

Diskusi Kode:

(Jika Anda hanya ingin menggunakan kode contoh apa adanya, Anda dapat melompat ke Membangun Staf.)

Kode contoh menggunakan kemampuan deteksi guncangan Arduino 101 untuk menghitung guncangan, sementara pengatur waktu berjalan yang menyetel ulang jumlah guncangan ke nol setelah beberapa saat tanpa guncangan baru. Jika Anda menekan kombinasi yang tepat sebelum penghitung waktu berakhir, fungsi "mantra" akan dipanggil.

Karena ketukan yang kuat di tanah akan benar-benar mencatat kejutan awal ditambah beberapa kejutan "suara" dari getaran di staf, kode pertama di loop hanya mencoba untuk menemukan impuls dominan dari setiap gelombang kejut, dan mengkategorikannya hanya sebagai vertikal, kiri/kanan, atau depan/belakang. Saya menggunakan variabel yang disebut "isyarat" untuk menahan setiap impuls dominan:1 =impuls vertikal, 2 =impuls depan/belakang, 3 =impuls kiri/kanan.

Kemudian untuk melacak kombinasi, kode menggunakan pernyataan "switch", dan bergerak melewatinya saat gerakan terakumulasi. Ini seperti buku "pilih petualangan Anda sendiri", di mana setiap langkah mengatakan sesuatu seperti "jika impuls berikutnya adalah kiri/kanan, lanjutkan ke langkah 2, jika penghitung waktu telah kedaluwarsa, kembali ke nol."

Mantra:

Di sinilah Anda dapat dengan mudah mengubah apa yang dilakukan setiap mantra. Ini saat ini hanya menjalankan kode contoh "pengejaran teater" dalam warna berbeda. Anda dapat dengan mudah menambahkan lebih banyak, mengubah warna, atau menulis fungsi cahaya Anda sendiri di sini. Tiga variabel pertama dalam fungsi theaterChase adalah nilai untuk merah, hijau, dan biru. Angka terakhir adalah kecepatan (angka lebih tinggi =lebih lambat).

////////////////////////////////////////////////////// /////spells///////////////////// void tapspell() { ///red theater lights theaterChase(strip.Color(127, 20, 0 ), 20); theaterChase(strip.Color(127, 20, 50), 55); strip.tampilkan(); } void leftspell() { theaterChase(strip.Color(0, 0, 100), 20); theaterChase(strip.Color(0, 30, 120), 75); strip.tampilkan(); } void forwardspell() { theaterChase(strip.Color(0, 127, 0), 30); theaterChase(strip.Color(0, 127, 90), 55); strip.tampilkan(); }  

Membangun Staf:

Ada banyak ruang untuk kreativitas di sini! Saya akan fokus pada pembuatan teknologi dasar, tetapi bersenang-senang membuat staf yang unik. Diffuser cahaya seperti tulle, kertas tisu, atau botol plastik di atas LED dapat membuat tampilan cahaya yang sangat keren!

Langkah 1:Temukan Tongkat/Staf Hiking

Anda dapat menggunakan sapu, pipa sprinkler, atau menemukan tongkat alami. Toko kerajinan Michael juga menjual yang bagus. (Di bagian tongkat- sungguh.) Saya suka membungkus bagian dengan selotip olahraga untuk memiliki area kerja yang bersih untuk elektronik, tapi itu opsional.

Letakkan beberapa karet gelang pada tongkat untuk memudahkan mereka menempelkan barang.

Langkah 2:Tempatkan Arduino 101 pada Staf dengan Port USB Turun

Gunakan karet gelang untuk menahan Arduino 101 di tempatnya.

Langkah 3:Menggunakan Karet Gelang untuk Membantu di Kedua Ujungnya, Bungkus LED

Langkah 4:Bungkus Sports Tape untuk Mengamankan Arduino 101 dan Baterai

Pastikan untuk meninggalkan akses ke sakelar hidup/mati pada unit baterai. Anda ingin paket baterai aman dari benturan / ketukan, tetapi ingat Anda akhirnya harus mengganti baterai tersebut.

Langkah 5:Sebarkan Lampu LED dan Hiasi

Kode

  • Kode Contoh Staf Wizard Berjalan
Kode Contoh Staf Wizard BerjalanArduino
Hitung impuls pada sumbu x, y, dan z, kombinasi impuls tertentu memanggil "mantra" (tampilan cahaya) pada strip neopiksel.
/* Hak Cipta (c) 2016 Intel Corporation. Seluruh hak cipta. Lihat pemberitahuan lisensi di akhir file.*//* Arduino 101 "Wizard's Walking Staff." Kode ini menggunakan library Adafruit Neopixel. Petunjuk instalasi perpustakaan di sini:https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-installation Pastikan Anda menginstal Intel Curie Core terbaru. Untuk info lebih lanjut, kunjungi https://www.arduino.cc/en/Guide/Arduino101*/#include "CurieIMU.h"#include #define PIN 6 //// pin apa yang terhubung dengan NeoPixels ke?Adafruit_NeoPixel strip =Adafruit_NeoPixel(60 , PIN, NEO_GRB + NEO_KHZ800); /// panjang strip adalah 60 piksel.int tr =0; //Beberapa variabel untuk menahan target warna dan arus warna untuk menghaluskan...int tg =0;int tb =0;int r =0;int g =0;int b =0;long int globaltimer =0; /// pengatur waktu untuk melacak gerakan vs waktu...untuk hal-hal seperti "jika pengatur waktu belum melewati 0,5 detik, DAN ada dua ketukan, maka..."long int gesturetimer =0;long int ledtimer =0;int memudar =10; /// seberapa cepat lampu memudar. Digunakan untuk menghaluskanint tap =0; //couter untuk impuls vertikalsint lr =0; //couter untuk impuls kiri/kanansint fb =0; //couter untuk gerakan maju/mundursint =0; // int keadaan =0; /// untuk kasus sakelar kami... ini akan melacak setiap gerakan dalam rangkaian.void setup() { // letakkan kode pengaturan Anda di sini, untuk dijalankan sekali://Serial.begin(9600); globaltimer =milis(); // mulai pencatat waktu pada waktu saat ini gesturetimer =milis(); ledtimer =milis(); /* Inisialisasi IMU */ CurieIMU.begin(); CurieIMU.attachInterrupt(eventCallback); /* Aktifkan Deteksi Guncangan */ CurieIMU.setDetectionThreshold(CURIE_IMU_SHOCK, 1500); // 1,5g =1500 mg CurieIMU.setDetectionDuration(CURIE_IMU_SHOCK, 50); // milidetik lonjakan yang diperlukan untuk memanggil interupt CurieIMU.interrupts(CURIE_IMU_SHOCK); strip.mulai(); // menginisialisasi strip strip neopixel.show(); // Inisialisasi semua piksel ke 'off'}void loop() { // letakkan kode utama Anda di sini, untuk dijalankan berulang kali:////filter dasar- IMU mencatat beberapa guncangan dari rebound dan counteraction. Ini mencoba menangkap kejutan dominan di setiap gerakan. if (millis() - globaltimer> 170) { /// ini mencoba mencari sumbu dominan gerakan untuk setiap kejutan.. Membandingkan jumlah gerakan tap, kiri-kanan, dan depan-belakang, dan pilih yang terbesar. if ((ketuk> lr) &&(ketuk> fb)) { Serial.println("ketuk"); gerakan =1; ketuk =0; lr =0; fb =0; //// reset nilai setelah gerakan diklasifikasikan. } else if ((lr> fb) &&(lr> tap)) { Serial.println("lr"); isyarat =2; ketuk =0; lr =0; fb =0; } else if ((fb> lr) || (fb> tap)) { Serial.println("fb"); gerakan =3; ketuk =0; lr =0; fb =0; } }//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// //////////////////////////// if (millis() - globaltimer> 1000) { /////timeoutreset globaltimer =millis() - 170;tr =0; tg=0; tb =0; keadaan =0; //gerakan=0; } if (millis() - gesturetimer> 1000) { gesturetimer =millis() - 350;tr =0; tg =0; tb =0; keadaan =0; //gerakan=0; }///////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////////////////////// switch (state) { // Ini melacak gerakan kasus 0:{ /// belum ada gerakan yang direkam... mendengarkan ketukan. Jika ada, lanjutkan ke kasus 1. if (millis() - gesturetimer> 350) { if (gesture ==1) { state =1; isyarat =0; pengatur waktu =milis(); } } merusak; } kasus 1:{ ///// satu ketukan direkam. Jika ketukan kedua terjadi, putar flash cepat lalu lanjutkan ke langkah 2. if (millis() - gesturetimer> 350) { if (gesture ==1) { r=10;g=10;b=10; ///umpan balik status flash =2; isyarat =0; pengatur waktu =milis(); } } merusak; } kasus 2:{ ///////Switch point - dua ketukan direkam. Tiga mantra berbeda di sini berdasarkan gerakan berikutnya. Jika itu ketukan, lanjutkan ke case 3. Jika itu L/R, pergi ke case 4. Jika itu Front/Back, pergi ke case 5. if (millis() - gesturetimer> 350) { if (gesture ==1) { keadaan =3; isyarat =0; pengatur waktu =milis(); } if (isyarat ==2) { keadaan =4; isyarat =0; pengatur waktu =milis(); } if (isyarat ==3) { keadaan =5; isyarat =0; pengatur waktu =milis(); } } merusak; } kasus 3:{ //// tiga ketukan direkam... kita dalam mantra ketuk, nyalakan tongkat merah dan dengarkan "ketuk" terakhir untuk mematikan mantra. tr =20; tg =0; tb =0; globaltimer =milis()-250; if (millis() - gesturetimer> 350) { if (gesture ==1) { state =0; Serial.println("tapspell!"); ketuk ejaan(); } } merusak; } kasus 4:{ ///// dua ketukan dan L atau R direkam... kita berada di mantra kiri, ubah tongkat menjadi biru dan dengarkan "ketuk" terakhir untuk mematikan mantra. tr =0; tg =0; tb =20; globaltimer =milis()-250; if (milis() - pengatur waktu> 350) {; if (isyarat ==1) { keadaan =0; Serial.println("ejaan kiri!"); ejaan kiri(); } } merusak; } kasus 5:{ ///// //// dua ketukan dan maju atau mundur direkam... kita dalam mantra maju, ubah tongkat menjadi hijau dan dengarkan "ketuk" terakhir untuk mematikan mantra. tr =0; tg =20; tb =0; globaltimer =milis()-250; if (millis() - gesturetimer> 350) { if (gesture ==1) { state =0; Serial.println("eja maju!"); ejaan ke depan(); } } merusak; } default:{ istirahat; } } //Serial.println(tr); if (millis()-ledtimer> fade){ /// lakukan langkah berikut ini secara berkala setiap (nilai fade) milidetik. Berbeda dengan fungsi "delay()", ini memungkinkan hal-hal lain terjadi dalam program di antara pembaruan. /// penghalusan warna. Warna sebenarnya bergerak menuju warna target... Jika target lebih dari saat ini, naik, jika kurang, turun. if (tr> r + 1) { r++; } jika (tg> g + 1) { g++; } jika (tb> b + 1) { b++; } jika (tr   

Proses manufaktur

  1. Penginderaan Medan Listrik AC
  2. Penghitungan Daya
  3. Tujuh cara untuk membuat tahap pasca-pemrosesan Anda lebih aman
  4. Warna Makanan:Bahan Penting untuk Membuat Makanan Menarik
  5. Bagaimana membuat model bisnis IoT bekerja – atau tidak?!
  6. Buat Google Voice HAT Anda
  7. Cara Membuat Platform Robot Arduino+Raspberry Pi
  8. Cara Membuat Fiberglass
  9. Setiap Hari Bisa Menjadi Hari Manufaktur!
  10. Cara Membuat Animasi Cutaway di Solidworks