Tentang proyek ini
Ide
Mari kita selesaikan untuk selamanya - siapa yang tercepat dari mereka semua?
Hari St. Patrick ada di sini dan itu memberi kami alasan bagus untuk minum bir di tempat kerja! Untuk acara meriah ini, kami memberi Anda:The Chug Meter . Sekarang kita bisa menyelesaikannya sekali dan untuk semua - siapa yang tercepat dari mereka semua?
*Minum dengan tidak sopan*
Pertama-tama, kami sarankan Anda mulai minum setelah Anda membuat penghitung. Ini mungkin tampak jelas, tetapi kami hanya memastikan di sini.
Cara merakit sirkuit
Kami bersikap mudah pada Anda di sini. Rangkaiannya cukup sederhana:
- FSR (Resistor penginderaan gaya)
- Tombol Tekan
- Speaker piezo
- Tampilan 7 segmen
Tautan ajaib akan mengarahkan Anda ke circuito.io, di mana Anda akan menemukan komponen yang telah dipilih sebelumnya.
Modifikasi
Seperti biasa, Anda dapat mengubah elektronik. Berikut ini beberapa contohnya:
- Ganti 7 segmen dengan layar LCD
- Ganti FSR dengan dioda IR
- Tambahkan LED RGB ke sirkuit
Dan pada dasarnya menjadi liar - ini Hari St. Patrick!
Setelah Anda mengeklik Buat baca 3 bagian balasan:BoM , Panduan pengkabelan langkah demi langkah dan Kode . Ikuti petunjuknya dengan cermat dan beri tahu kami jika Anda memerlukan bantuan dengan berkomentar di bawah.
Langkah Selanjutnya
Setelah semuanya aktif dan berjalan, Anda harus:
- Ganti kode sampel yang Anda dapatkan di balas circuito.io dengan kode yang dilampirkan dalam tutorial ini . Salin kode dan tempel ke Firmware tab kode sampel dari circuito.io. Dengan cara ini, semua pustaka komponen akan tetap apa adanya, dan hanya fungsi utama yang akan berubah.
- Rekatkan FSR (Force Sensitive Resistor) di bawah tatakan gelas bir. Setelah gaya dilepaskan (=pint diangkat) penghitung mulai berjalan. Saat pint dimasukkan kembali ke tatakan gelas - pengatur waktu berhenti dan Anda dapat mengatur ulang dengan tombol.
- Cetak 3D kasus 7-segmen.
- Mulailah minum.
Selamat Hari St Patrick! Minumlah dengan bertanggung jawab!
Kode
Kode Chug MeterArduino
Ganti fungsi setup dan loop dari kode yang Anda dapatkan dari circuito.io, dengan kode di bawah iniint start_flag =0;bool glassState =0;long finalTime, time0;int timer;/* Kode ini mengatur hal-hal penting untuk sirkuit Anda untuk bekerja. Ini berjalan pertama setiap kali sirkuit Anda ditenagai dengan listrik. */void setup() { // Setup Serial yang berguna untuk debugging // Gunakan Serial Monitor untuk melihat pesan tercetak Serial.begin(9600); Serial.println("mulai"); pushButton.init(); s7s.clearDisplay(); // Membersihkan tampilan, mengatur ulang kursor s7s.setBrightness(255); // kecerahan tinggi s7s.setDecimals(0b00010000); // Set titik dua dan apostrof, lihat file .cpp untuk referensi s7s.writeInt(0);}/* Kode ini adalah logika utama sirkuit Anda. Ini mendefinisikan interaksi antara komponen yang Anda pilih. Setelah pengaturan, itu berjalan berulang-ulang, dalam lingkaran abadi. */void loop() { // Baca nilai resistansi FSR. coba juga fsr.getResistance() // Untuk informasi lebih lanjut lihat situs web Sparkfun - www.sparkfun.com/products/9375 // Catatan, nilai Vcc dan resistor eksternal default untuk perhitungan FSR adalah 5V dan 3300Okm, jika Anda tidak // menggunakan nilai default ini di sirkuit Anda, buka FSR.cpp dan ubah nilai default di konstruktor FSR float fsrForce =fsr.getForce(); //Serial.print(F("Angkatan:")); Serial.print(fsrForce); Serial.println(F("[g]")); //Baca status tombol tekan. //jika tombol tidak ditekan, fungsi akan mengembalikan LOW (0). jika didorong fungsi akan kembali TINGGI (1). //jika debounce tidak bekerja dengan benar coba ubah variabel 'debounceDelay' di Button.h //coba juga pushButton.onPress(), .onRelease() dan .onChange() untuk debounce. bool pushButtonVal =pushButton.onPress(); //Serial.print(F("Nilai:")); Serial.println(pushButtonVal); //Setel ulang waktu menggunakan tombol tekan if (pushButtonVal ==1) { start_flag =0; keadaan kaca =0; //Mulai pengatur waktu s7s.writeInt(0); waktu0 =mili(); } //set status waktu if (start_flag ==0) { //Jika galss ditempatkan if (fsrForce> 50) { glassState =1; //Mulai pengatur waktu s7s.writeInt(0); waktu0 =mili(); } //Jika gelas diambil lain if (fsrForce <50 &&glassState) { finalTime =millis() - time0; start_flag =1; } } //gelas diambil, jalankan timer else if (start_flag ==1) { //sementara Anda minum, tampilkan waktu pada tampilan 7-Seg if (fsrForce <100) { finalTime =(millis() - waktu0) / 10; s7s.writeInt(Waktu akhir); } //Selesaikan minum, hentikan timer, cetak waktu terakhir, dan mainkan suara hore else { start_flag =2; finalTime =(milis() - waktu0) / 10; s7s.writeInt(Waktu akhir); piezoSpeaker.playMelody(piezoSpeakerHoorayLength, piezoSpeakerHoorayMelody, piezoSpeakerHoorayNoteDurations); penundaan (500); } } //selalu cetak waktu terakhir sampai tombol reset ditekan lagi { s7s.writeInt(finalTime); }}