Isi kandungan:

Penjejak Tugas TOYL: 3 Langkah (dengan Gambar)
Penjejak Tugas TOYL: 3 Langkah (dengan Gambar)

Video: Penjejak Tugas TOYL: 3 Langkah (dengan Gambar)

Video: Penjejak Tugas TOYL: 3 Langkah (dengan Gambar)
Video: 3 Bocah Terlindas Truk Saat Selfie Di Atas Motor 2024, Julai
Anonim
Image
Image
Penjejak Tugas TOYL
Penjejak Tugas TOYL
Penjejak Tugas TOYL
Penjejak Tugas TOYL

Jangan hanya membencinya ketika anda berencana untuk bekerja atau lebih buruk lagi, berada di tengah-tengah sesi kerja dan pemberitahuan masuk di telefon anda - "cek cepat" menjadi beberapa jam kemudian. Juga, adakah anda tahu berapa banyak masa anda bekerja pada tugas-tugas tertentu berkaitan dengan masa yang anda peruntukkan untuk bekerja setiap minggu?

Masukkan Penjejak Tugas TOYL. Ini membolehkan anda mematikan telefon dan fokus pada kerja, sekaligus membolehkan anda mengatur jumlah masa yang anda mahu bekerja setiap minggu-katakanlah 60 jam-dan tugas-tugas yang ingin anda selesaikan. Apabila anda duduk untuk sesi, anda mendapat idea tentang berapa banyak masa yang anda ada untuk keseluruhan kerja anda. Tracker mempunyai dua mod: Pemasa, di mana anda telah menetapkan berapa banyak masa yang anda ingin habiskan setiap tugas setiap minggu, dan Jam Randik, di mana anda hanya boleh memulakan-menghentikan pemasa setelah memilih tugas.

Bekalan

Litar

  • Adafruit Feather Huzzah
  • Adafruit FeatherWing
  • Pin pengepala lelaki
  • Pin pengepala wanita
  • Bateri 500mAh
  • Perintang 100K ohm x2
  • Pita penebat
  • Kawat terdampar
  • Pelucut wayar
  • Kipas Pateri

Selongsong

  • Lembaran akrilik buram 24 "x18"
  • Pita dua sisi
  • Akses ke pemotong laser
  • Perisian vektor

Langkah 1: Selesaikan Litar Anda

Selesaikan Litar Anda
Selesaikan Litar Anda
Selesaikan Litar Anda
Selesaikan Litar Anda
Selesaikan Litar Anda
Selesaikan Litar Anda

Solder pin header wanita ke Feather Huzzah. Tutorial ini berguna untuk penyediaan perkakasan Feather Huzzah. Kemudian, pasangkan pin header lelaki ke FeatherWing. Memateri mereka dengan cara ini membolehkan anda bergabung dan memisahkan Feather Wing dari Feather Huzzah apabila diperlukan. Ini sangat berguna apabila anda perlu menambahkan perintang ke FeatherWing anda, yang merupakan langkah seterusnya. Sambungkan perintang 100K ohm dari setiap pin 0 dan 2, disambungkan ke 3V.

Siapkan perkakasan Feather Huzzah anda

Siapkan perkakasan Feather Wing anda

Langkah 2: Tambahkan Kod Anda

Tambahkan Kod Anda
Tambahkan Kod Anda
Tambahkan Kod Anda
Tambahkan Kod Anda

Kod ini adalah penyesuaian dari kod Pelajaran 5 Internet of Things, Jika memungkinkan, saya ingin mengganti perkhidmatan Preceptitaton dengan yang menjejaki tugas yang ditambahkan melalui applet ToDosit IFTTT. Pada masa ini anda perlu memasukkan sekumpulan tugas secara manual dan menggunakan Butang A untuk menelusurinya. Sebagai tambahan, saya ingin mengkodkan pemasa untuk dihitung dalam beberapa minit dan berhenti ketika beralih ke tugas seterusnya. Terima kasih banyak kepada Becky Stern kerana membuat kod asas untuk pemasa dan berbasikal melalui tugas. Sekiranya anda berminat untuk menyambungkan projek ke internet, saya sangat mengesyorkan mengikuti kelas ini.

// Instructables Internet of Things Kelas kod contoh // Circuit Display Data Internet // Data cuaca dikumpulkan dalam feed // Multiple NeoPixels menggambarkan keadaan cuaca // // Diubah suai oleh Becky Stern 2017 // berdasarkan Contoh Langganan Adafruit IO

// Adafruit melaburkan masa dan sumber yang menyediakan kod sumber terbuka ini.

// Tolong sokong Adafruit dan perkakasan sumber terbuka dengan membeli // produk dari Adafruit! // // Ditulis oleh Todd Treece untuk Adafruit Industries // Hak Cipta (c) 2016 Adafruit Industries // Berlesen di bawah lesen MIT. // // Semua teks di atas mesti disertakan dalam pengagihan semula.

/ ************************ Adafruit IO Configuration ********************** *********

/ lawati io.adafruit.com jika anda perlu membuat akaun, // atau jika anda memerlukan kunci Adafruit IO anda. #define IO_USERNAME "YourUsername Here" #define IO_KEY "YourIOKeyHere"

/ ******************************* Konfigurasi WIFI **************** ********************** /

#tentukan WIFI_SSID "WifiName"

#tentukan WIFI_PASS "Kata Laluan Wifi"

#sertakan "AdafruitIO_WiFi.h"

AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

/ ************************ Program Utama Bermula Di Sini ********************* ********** /

#sertakan #sertakan #sertakan #sertakan

#sertakan

#sertakan #sertakan #sertakan

#tentukan OLED_RESET 3

Paparan Adafruit_SSD1306 (128, 32, & Wire, OLED_RESET);

// pemalar ini tidak akan berubah:

butang const intPinA = 0; // pin yang dilekatkan pada butang tekan int constPinB = 16; // yang ini sudah mempunyai perintang penarik, dua yang lain memerlukan satu butang int intPinC = 2;

// Pemboleh ubah akan berubah:

butang intAPushCounter = 0; // kaunter untuk bilangan butang menekan int buttonAState = 0; // keadaan semasa butang int lastButtonAState = 0; // keadaan butang sebelumnya

// Pemboleh ubah akan berubah:

butang intBPushCounter = 0; // kaunter untuk bilangan tekan butang int buttonBState = 0; // keadaan semasa butang int lastButtonBState = 0; // keadaan butang sebelumnya

// Pemboleh ubah akan berubah:

int buttonCPushCounter = 0; // kaunter untuk bilangan butang menekan int buttonCState = 0; // keadaan semasa butang int lastButtonCState = 0; // keadaan butang sebelumnya

String displayForecast = "tidak diketahui";

int timerVal = 0;

lama terakhir tidak ditandatanganiStartTime = 0; pemasa boolEnabled = 0;

AdafruitIO_Feed * pemendakan = io.feed ("pemendakan"); // sediakan suapan 'pemendakan'

// AdafruitIO_Feed * taskmanager = io.feed ("taskmanager"); // sediakan suapan 'taskmanager'

batal persediaan () {

pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);

// SSD1306_SWITCHCAPVCC = menjana voltan paparan dari 3.3V secara dalaman

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Alamat 0x3C untuk 128x32

// Tunjukkan kandungan penyangga paparan awal di skrin -

// perpustakaan menginisialisasi ini dengan layar percikan Adafruit. paparan.display (); kelewatan (2000); // Jeda selama 2 saat

// Kosongkan penyangga.

display.clearDisplay ();

// mulakan sambungan bersiri

Serial.begin (115200);

// sambung ke io.adafruit.com

Serial.print ("Menyambung ke Adafruit IO"); io.connect (); // sediakan pengendali mesej untuk umpan 'curah hujan'. // fungsi handleMessage (ditakrifkan di bawah) // akan dipanggil setiap kali mesej // diterima dari adafruit io. pemendakan-> onMessage (handleMessage);

// tunggu sambungan

sementara (io.status () <AIO_CONNECTED) {Serial.print ("."); kelewatan (500); }

// kami berhubung

Bersiri.println (); Serial.println (io.statusText ());

}

gelung kosong () {

// io.run (); diperlukan untuk semua lakaran.

// semestinya selalu ada di bahagian atas fungsi // loop anda. ia memastikan klien tetap terhubung ke // io.adafruit.com, dan memproses data yang masuk. io.run ();

// baca pin input butang tekan:

buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);

// bandingkan butangState dengan keadaan sebelumnya

if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// jika keadaan telah berubah, tingkatkan pembilang jika (buttonAState == LOW) {// jika keadaan semasa RENDAH maka butang ditekan butangAPushCounter ++; Serial.print ("bilangan butang A menekan:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// jika keadaan semasa RENDAH maka butang ditekan butangBPushCounter ++; Serial.print ("bilangan butang B menekan:"); Serial.println (buttonBPushCounter); Serial.println ("Pemasa permulaan"); timerEnabled = 1; lastStartTime = milis (); } if (buttonCState == LOW) {// jika keadaan semasa RENDAH maka butang ditekan butangCPushCounter ++; Serial.print ("bilangan butang C menekan:"); Serial.println (buttonCPushCounter); Serial.println ("Menghentikan pemasa"); timerEnabled = 0; }} if (timerEnabled == 1) {// tambahkan pemasa hanya apabila sudah dimulakan timerVal = (millis () - lastStartTime) / 1000; }

// kedudukan paparan 1 - ramalan

// if (buttonAPushCounter% 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (PUTIH); // display.setCursor (0, 0); // display.print ("Ramalan:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("baris kedua"); // display.println ("contoh kandungan"); // paparan.display (); // // kelewatan (2000); //}

// kedudukan paparan 1 - Tugas 1

jika (buttonAPushCounter% 3 == 0) {display.setTextSize (1); display.setTextColor (PUTIH); display.clearDisplay (); display.setCursor (0, 0); display.println ("Penyelidikan - Temu ramah"); display.println (); display.print ("Pemasa:"); display.println (timerVal); paparan.display (); }

// kedudukan paparan 2 - Tugas 2

jika (buttonAPushCounter% 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Membuat Studio - Kod"); display.println (); display.print ("Pemasa:"); display.println (timerVal); paparan.display (); }

// kedudukan paparan 3 - Tugasan 3

jika (buttonAPushCounter% 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Membuat Sketsa"); display.println (); display.print ("Pemasa:"); display.println (timerVal); paparan.display (); }

// simpan keadaan semasa sebagai keadaan terakhir, // untuk kali seterusnya melalui gelung lastButtonAState = buttonAState; lastButtonBState = butangBState; lastButtonCState = butangCState;

}

// fungsi ini dipanggil setiap kali mesej

// diterima dari Adafruit IO. ia dilampirkan ke // feed dalam fungsi setup () di atas. void handleMessage (AdafruitIO_Data * data) {

Ramalan rentetan = data-> toString (); // simpan data cuaca masuk dalam rentetan

Serial.print ("diterima <-"); Serial.println (ramalan); displayForecast = ramalan; // rentetan berikut menyimpan perkataan laporan cuaca IFTTT yang bervariasi yang saya temui setakat ini String task1 = String ("Task 1"); Hujan rentetan = Rentetan ("Hujan"); Strain lightrain = String ("Hujan Ringan"); String rainhower = Rentetan ("Rain Shower"); String AMshower = String ("AM Showers"); String rainandsnow = Rentetan ("Hujan dan Salji"); Salji salji = Rentetan ("Salji"); Strows snowshower = String ("Pancuran Salji"); Rentetan berawan = Rentetan ("Mendung"); String mostcloudy = String ("Sebilangan besar Mendung"); String partlycloudy = String ("Sebagian Mendung"); String clearsky = String ("Clear"); String fair = String ("Adil"); Rentetan cerah = Rentetan ("Cerah");

// Ini jika pernyataan membandingkan pemboleh ubah cuaca masuk dengan keadaan yang tersimpan, dan mengawal NeoPixels dengan sewajarnya.

// jika ada hujan dalam ramalan jika (forecast.equalsIgnoreCase (rain) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (rainhower) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("curah hujan di ramalan hari ini ");

}

// jika terdapat salji dalam ramalan jika (forecast.equalsIgnoreCase (salji) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (snowshower)) {Serial.println ("curah hujan dalam ramalan hari ini");

}

// jika ada cahaya matahari dalam ramalan jika (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (adil) || forecast.equalsIgnoreCase (cerah)) {Serial.println ("semacam matahari dalam ramalan hari ini");

}

// jika terdapat awan dalam ramalan jika (forecast.equalsIgnoreCase (cloudy) || forecast.equalsIgnoreCase (mostcloudy) || forecast.equalsIgnoreCase (partlycloudy)) {Serial.println ("langit mendung dalam ramalan hari ini");

}

}

Langkah 3: Buat Container / Shell

Buat Container / Shell
Buat Container / Shell
Buat Container / Shell
Buat Container / Shell
Buat Container / Shell
Buat Container / Shell
Buat Container / Shell
Buat Container / Shell

Untuk cangkangnya, mulakan dengan menentukan ukuran apa yang anda mahukan bingkai anda, atau anda boleh memuat turun fail saya. Setelah menentukan ukuran anda boleh menggunakan MakerCase untuk membuat susun atur untuk fail vektor.

Jalankan fail melalui pemotong laser - perlu sekitar 5 minit. Selepas itu pasangkan cengkerang.

Saya tidak menjelaskan lebar bahan yang menjadikan butang saya sukar dijangkau. Saya masih perlu mencari jalan untuk melekatkannya. Mereka juga sangat kecil yang membuat mereka sukar untuk bekerja.

Disyorkan: