Daftar Isi:

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

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

Video: Pelacak Tugas TOYL: 3 Langkah (dengan Gambar)
Video: Polisi Yuta Mio Melacak Dan Menggrebek Peramp0k Di Misi Pertamanya | Sakura Simulator | Roxy Kiddy 2024, November
Anonim
Image
Image
Pelacak Tugas TOYL
Pelacak Tugas TOYL
Pelacak Tugas TOYL
Pelacak Tugas TOYL

Jangan Anda hanya membencinya ketika Anda berencana untuk bekerja atau lebih buruk, berada di tengah sesi kerja dan pemberitahuan masuk di ponsel Anda - "pemeriksaan cepat" menjadi beberapa jam kemudian. Juga, apakah Anda tahu berapa banyak waktu Anda mengerjakan tugas-tugas tertentu sehubungan dengan waktu yang Anda alokasikan untuk bekerja per minggu?

Masukkan Pelacak Tugas TOYL. Ini memungkinkan Anda untuk mematikan ponsel dan fokus pada pekerjaan, sekaligus memungkinkan Anda untuk mengatur jumlah waktu yang Anda inginkan untuk bekerja per minggu, katakanlah 60 jam, dan tugas yang ingin Anda selesaikan. Ketika Anda duduk untuk satu sesi, Anda mendapatkan gambaran tentang berapa banyak waktu yang tersisa untuk pekerjaan Anda secara keseluruhan. Pelacak memiliki dua mode: Timer, di mana Anda telah mengatur berapa banyak waktu yang ingin Anda habiskan per tugas per minggu, dan Stopwatch, di mana Anda cukup memulai-menghentikan timer setelah memilih tugas.

Perlengkapan

sirkuit

  • Adafruit Feather Huzzah
  • Adafruit Bulu Sayap
  • Pin header pria
  • Pin header wanita
  • Baterai 500mAh
  • Resistor 100K ohm x2
  • Pita isolasi
  • Kawat terdampar
  • penari telanjang kawat
  • kipas solder

Selubung

  • Lembaran akrilik buram 24 "x 18"
  • Pita dua sisi
  • Akses ke pemotong laser
  • Perangkat lunak vektor

Langkah 1: Solder Sirkuit Anda

Solder Sirkuit Anda
Solder Sirkuit Anda
Solder Sirkuit Anda
Solder Sirkuit Anda
Solder Sirkuit Anda
Solder Sirkuit Anda

Solder pin header wanita ke Feather Huzzah. Tutorial ini berguna untuk pengaturan perangkat keras Feather Huzzah. Kemudian, solder pin header laki-laki ke FeatherWing. Menyoldernya dengan cara ini memungkinkan Anda untuk menggabungkan dan memisahkan Sayap Bulu dari Bulu Huzzah bila diperlukan. Ini sangat berguna ketika Anda perlu menambahkan resistor ke FeatherWing Anda, yang merupakan langkah berikutnya. Hubungkan resistor 100K ohm dari setiap pin 0 dan 2, terhubung ke 3V.

Siapkan perangkat keras Feather Huzzah Anda

Siapkan perangkat keras Sayap Bulu Anda

Langkah 2: Tambahkan Kode Anda

Tambahkan Kode Anda
Tambahkan Kode Anda
Tambahkan Kode Anda
Tambahkan Kode Anda

Kode ini merupakan adaptasi dari pelajaran 5 kode Internet of Things, Waktu mengizinkan, saya ingin mengganti layanan Preceptitaton dengan yang melacak tugas yang ditambahkan melalui applet IFTTT ToDosit. Saat ini Anda harus memasukkan serangkaian tugas secara manual dan menggunakan Tombol A untuk menggilirnya. Selain itu, saya ingin mengkodekan penghitung waktu untuk menghitung dalam hitungan menit dan berhenti ketika beralih ke tugas berikutnya. Terima kasih yang sebesar-besarnya kepada Becky Stern karena telah membuat kode dasar untuk pengatur waktu dan menjalankan tugas. Jika Anda tertarik untuk menghubungkan proyek ke internet, saya sangat merekomendasikan untuk mengikuti rangkaian kelas ini.

// Kode sampel Kelas Internet of Things yang Dapat Diinstruksikan// Sirkuit Menampilkan Data Internet // Data cuaca dikumpulkan dalam umpan // Beberapa NeoPixels memvisualisasikan kondisi cuaca // // Dimodifikasi oleh Becky Stern 2017 // berdasarkan Contoh Berlangganan Adafruit IO

// Adafruit menginvestasikan waktu dan sumber daya untuk menyediakan kode sumber terbuka ini.

// Tolong dukung Adafruit dan perangkat keras open source dengan membeli // produk dari Adafruit! // // Ditulis oleh Todd Treece untuk Adafruit Industries // Hak Cipta (c) 2016 Adafruit Industries // Dilisensikan di bawah lisensi MIT. // // Semua teks di atas harus disertakan dalam redistribusi apa pun.

/************************ Konfigurasi Adafruit IO ********************** *********

/ kunjungi io.adafruit.com jika Anda perlu membuat akun, // atau jika Anda membutuhkan kunci IO Adafruit Anda. #define IO_USERNAME "NamaPenggunaAndaDi Sini" #define IO_KEY "IoKeyAndaDi Sini"

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

#define WIFI_SSID "NamaWifi"

#define WIFI_PASS "WifiPassword"

#sertakan "AdafruitIO_WiFi.h"

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

/*************************** Program Utama Dimulai Disini ********************* **********/

#sertakan #sertakan #sertakan #sertakan

#termasuk

#sertakan #sertakan #sertakan

#definisikan OLED_RESET 3

Tampilan Adafruit_SSD1306(128, 32, &Kabel, OLED_RESET);

// konstanta ini tidak akan berubah:

const int buttonPinA = 0; // pin yang dilampirkan tombol tekan ke const int buttonPinB = 16; // yang ini sudah memiliki resistor pullup, dua lainnya membutuhkan satu const int buttonPinC = 2;

// Variabel akan berubah:

int buttonAPushCounter = 0; // counter untuk jumlah penekanan tombol int buttonAState = 0; // status tombol saat ini int lastButtonAState = 0; // status tombol sebelumnya

// Variabel akan berubah:

int buttonBPushCounter = 0; // counter untuk jumlah penekanan tombol int buttonBState = 0; // status tombol saat ini int lastButtonBState = 0; // status tombol sebelumnya

// Variabel akan berubah:

int buttonCPushCounter = 0; // penghitung jumlah tombol yang ditekan int buttonCState = 0; // status tombol saat ini int lastButtonCState = 0; // status tombol sebelumnya

String displayForecast = "tidak diketahui";

int timerVal = 0;

unsigned long lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *curah hujan = io.feed("curah hujan"); // siapkan umpan 'curah hujan'

//AdafruitIO_Feed *taskmanager = io.feed("taskmanager"); // siapkan umpan 'taskmanager'

batalkan pengaturan() {

pinMode(tombolPinA, INPUT); pinMode(tombolPinB, INPUT_PULLUP); pinMode(tombolPinC, INPUT);

// SSD1306_SWITCHCAPVCC = menghasilkan tegangan tampilan dari 3.3V secara internal

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

// Menampilkan konten buffer tampilan awal di layar --

// perpustakaan menginisialisasi ini dengan layar splash Adafruit. tampilan.tampilan(); penundaan(2000); // Jeda selama 2 detik

// Hapus buffer.

tampilan.clearDisplay();

// mulai koneksi serial

Serial.begin(115200);

// sambungkan ke io.adafruit.com

Serial.print("Menghubungkan ke Adafruit IO"); io.koneksi(); // siapkan pengendali pesan untuk umpan 'curah hujan'. // fungsi handleMessage (didefinisikan di bawah) // akan dipanggil setiap kali sebuah pesan diterima // dari adafruit io. presipitasi->onMessage(handleMessage);

// tunggu koneksi

while(io.status() < AIO_CONNECTED) { Serial.print("."); penundaan (500); }

// kita terhubung

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

}

lingkaran kosong() {

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

// itu harus selalu ada di bagian atas fungsi loop // Anda. itu membuat klien tetap terhubung ke // io.adafruit.com, dan memproses semua data yang masuk. io.run();

// baca pin input tombol tekan:

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

// bandingkan keadaan tombol dengan keadaan sebelumnya

if (buttonAState != lastButtonAState || buttonBState != lastButtonBState || buttonCState != lastButtonCState) { // jika state telah berubah, tambah counter if (buttonAState == LOW) { // jika state saat ini LOW maka button ditekan tombolAPushCounter++; Serial.print("Jumlah tombol A yang ditekan: "); Serial.println(buttonAPushCounter); } if (buttonBState == LOW) { // jika kondisi saat ini LOW maka tombol ditekan buttonBPushCounter++; Serial.print("Jumlah tombol B yang ditekan: "); Serial.println(buttonBPushCounter); Serial.println("Penghitung waktu mulai"); timerEnabled = 1; lastStartTime = milis(); } if (buttonCState == LOW) { // jika kondisi saat ini LOW maka tombol ditekan buttonCPushCounter++; Serial.print("Jumlah tombol C yang ditekan: "); Serial.println(buttonCPushCounter); Serial.println("Menghentikan pengatur waktu"); timerEnabled = 0; } } if (timerEnabled == 1){ // menambah timer hanya jika timerVal = (millis() - lastStartTime)/1000; }

//tampilkan posisi 1 - perkiraan

// if (buttonAPushCounter % 3 == 0) { // display.clearDisplay(); // display.setTextSize(1); // tampilan.setTeksWarna(PUTIH); // display.setCursor(0, 0); // display.print("Perkiraan: "); // display.println(displayForecast); // display.setCursor(0, 16); // display.println("baris kedua"); // display.println("Contoh Isi"); // tampilan.tampilan(); ///tunda(2000); // }

//menampilkan posisi 1 - Tugas 1

if (buttonAPushCounter % 3 == 0) { display.setTextSize(1); display.setTextColor(PUTIH); tampilan.clearDisplay(); display.setCursor(0, 0); display.println("Penelitian - Wawancara"); tampilan.println(); display.print("Pewaktu: "); display.println(timerVal); tampilan.tampilan(); }

//tampilkan posisi 2 - Tugas 2

if (buttonAPushCounter % 3 == 1) { display.clearDisplay(); display.setCursor(0, 0); display.println("Membuat Studio - Kode"); tampilan.println(); display.print("Pewaktu: "); display.println(timerVal); tampilan.tampilan(); }

//menampilkan posisi 3 - Tugas 3

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

// simpan status saat ini sebagai status terakhir, //untuk waktu berikutnya melalui loop lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// fungsi ini dipanggil setiap kali ada pesan

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

Perkiraan string = data->toString(); // menyimpan data cuaca yang masuk dalam sebuah string

Serial.print("diterima <- "); Serial.println(perkiraan); displayForecast = perkiraan; //string berikut menyimpan berbagai kata laporan cuaca IFTTT yang saya temukan sejauh ini String task1 = String("Tugas 1"); String hujan = String("Hujan"); String hujan ringan = String("Hujan Ringan"); String pancuran hujan = String("Hujan Pancuran"); String AMshowers = String("AM Showers"); String hujan dan salju = String("Hujan dan Salju"); String salju = String("Salju"); String hujan salju = String("Hujan Salju"); String mendung = String("Mendung"); String sebagian besar mendung = String("Sebagian Besar Berawan"); String partlycloudy = String("Sebagian Mendung"); String langit cerah = String("Hapus"); String adil = String("Adil"); String cerah = String("Cerah");

// Pernyataan if ini membandingkan variabel cuaca yang masuk dengan kondisi yang disimpan, dan mengontrol NeoPixels yang sesuai.

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

}

// jika ada salju di prakiraan if (forecast.equalsIgnoreCase(snow) || forecast.equalsIgnoreCase(rainandsnow) || forecast.equalsIgnoreCase(snowshower)){ Serial.println("presipitasi di prakiraan hari ini");

}

// jika ada matahari di prakiraan if (forecast.equalsIgnoreCase(clearsky) || forecast.equalsIgnoreCase(fair) || forecast.equalsIgnoreCase(cerah)){ Serial.println("beberapa jenis matahari di prakiraan hari ini");

}

// jika ada awan di prakiraan if (forecast.equalsIgnoreCase(cloudy) || forecast.equalsIgnoreCase(mostlycloudy) || forecast.equalsIgnoreCase(partlycloudy)){ Serial.println("prakiraan langit hari ini mendung");

}

}

Langkah 3: Buat Wadah / Shell

Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell
Buat Wadah / Shell

Untuk shell, mulailah dengan menentukan ukuran bingkai yang Anda inginkan, atau Anda dapat mengunduh file saya. Setelah Anda menentukan ukurannya, Anda dapat menggunakan MakerCase untuk membuat tata letak untuk file vektor.

Jalankan file melalui pemotong laser - ini akan memakan waktu sekitar 5 menit. Setelah itu satukan cangkangnya.

Saya tidak memperhitungkan lebar bahan yang membuat tombol saya sulit dijangkau. Saya masih perlu menemukan cara untuk melampirkannya. Mereka juga sangat kecil yang membuat mereka sulit untuk diajak bekerja sama.

Direkomendasikan: