İçindekiler:
- Gereçler
- Adım 1: Devrenizi Lehimleyin
- 2. Adım: Kodunuzu Ekleyin
- 3. Adım: Konteyneri / Kabuğu Oluşturun
Video: TOYL Task Tracker: 3 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Çalışmayı veya daha kötüsünü planlarken, bir çalışma oturumunun ortasındayken ve telefonunuza bir bildirim geldiğinde, saatler sonra "hızlı kontrol" geldiğinden nefret etmiyor musunuz? Ayrıca, haftalık iş için ayırdığınız zamanla ilgili olarak belirli görevler üzerinde ne kadar zaman çalıştığınızı biliyor musunuz?
TOYL Görev İzleyici'ye girin. Telefonunuzu kapatıp işinize odaklanmanızı sağlarken, aynı anda haftada çalışmak istediğiniz süreyi (örneğin 60 saat) ve yapmak istediğiniz görevleri ayarlamanıza olanak tanır. Bir seans için oturduğunuzda, genel işiniz için ne kadar zamanınız kaldığına dair bir fikir edinirsiniz. İzleyicinin iki modu vardır: Görev başına haftada ne kadar zaman harcamak istediğinizi önceden ayarladığınız Zamanlayıcı ve bir görevi seçtikten sonra zamanlayıcıyı başlatıp durdurabileceğiniz Kronometre.
Gereçler
Devre
- Adafruit Tüy Huzzah
- Adafruit TüyKanat
- Erkek başlık pimleri
- Dişi başlık pimleri
- 500mAh pil
- 100K ohm dirençler x2
- Yalıtım bandı
- Burgulu tel
- Tel striptizci
- Lehim Fanı
kasa
- Opak akrilik levha 24”x18”
- Çift taraflı bant
- Lazer kesiciye erişim
- vektör yazılımı
Adım 1: Devrenizi Lehimleyin
Dişi başlık pimlerini Feather Huzzah'a lehimleyin. Bu eğitim, Feather Huzzah donanım kurulumu için kullanışlıdır. Ardından, erkek başlık pimlerini FeatherWing'e lehimleyin. Bunları bu şekilde lehimlemek, gerektiğinde Feather Wing'i Feather Huzzah'tan birleştirmenizi ve ayırmanızı sağlar. Bu, özellikle bir sonraki adım olan FeatherWing'inize direnç eklemeniz gerektiğinde kullanışlıdır. 3V'a bağlı her 0 ve 2 pininden 100K ohm dirençleri bağlayın.
Feather Huzzah donanımınızı kurun
Feather Wing donanımınızı kurun
2. Adım: Kodunuzu Ekleyin
Bu kod, Ders 5 Nesnelerin İnterneti kodunun bir uyarlamasıdır, Zaman izin verirse, Preceptitaton hizmetini ToDosit IFTTT uygulaması aracılığıyla eklenen görevleri izleyen bir hizmetle değiştirmek istiyorum. Şu anda bir dizi görevi manuel olarak girmeniz ve bunlar arasında geçiş yapmak için A Düğmesini kullanmanız gerekir. Ek olarak, zamanlayıcıyı dakika cinsinden sayacak ve bir sonraki göreve geçerken duracak şekilde kodlamak isterdim. Zamanlayıcı için temel kod oluşturduğu ve görevler arasında geçiş yaptığı için Becky Stern'e çok teşekkür ederiz. Projeyi internete bağlamakla ilgileniyorsanız, bu sınıflardan geçmenizi şiddetle tavsiye ederim.
// Instructables Nesnelerin İnterneti Sınıfı örnek kodu// Devre İnternet Verilerini Gösterir // Hava durumu verileri bir beslemede toplanır // Birden fazla NeoPiksel hava durumunu görselleştirir // // Becky Stern tarafından değiştirildi // Adafruit IO Abonelik Örneğine göre
// Adafruit, bu açık kaynak kodunu sağlayarak zaman ve kaynaklara yatırım yapar.
// Lütfen Adafruit'ten // ürünleri satın alarak Adafruit ve açık kaynaklı donanımları destekleyin! // // Todd Treece tarafından Adafruit Industries için yazılmıştır // Telif hakkı (c) 2016 Adafruit Industries // MIT lisansı altında lisanslanmıştır. // // Yukarıdaki tüm metinler herhangi bir yeniden dağıtıma dahil edilmelidir.
/**************************** Adafruit IO Konfigürasyonu ************************* *********
/ hesap oluşturmanız gerekiyorsa io.adafruit.com adresini ziyaret edin, // veya Adafruit IO anahtarınıza ihtiyacınız varsa. #define IO_USERNAME "Kullanıcı Adınız Burada" #define IO_KEY "IOKeyBurda"
/******************************* WIFI Yapılandırması **************** *************************/
#define WIFI_SSID "WifiName"
#define WIFI_PASS "WifiPassword"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/**************************** Ana Program Buradan Başlıyor ********************* **********/
#include #include #include #include
#Dahil etmek
#include #include #include
#define OLED_RESET 3
Adafruit_SSD1306 ekranı(128, 32, &Wire, OLED_RESET);
// bu sabit değişmeyecek:
const int buttonPinA = 0; // butonların bağlı olduğu pinler const int buttonPinB = 16; // bunun zaten bir çekme direnci var, diğer ikisi için bir const int buttonPinC = 2;
// Değişkenler değişecek:
int buttonAPushCounter = 0; // düğmeye basma sayısı için sayaç int buttonAState = 0; // butonun mevcut durumu int lastButtonAState = 0; // butonun önceki durumu
// Değişkenler değişecek:
int buttonBPushCounter = 0; // düğmeye basma sayısı için sayaç int buttonBState = 0; // butonun mevcut durumu int lastButtonBState = 0; // butonun önceki durumu
// Değişkenler değişecek:
int buttonCPushCounter = 0; // düğmeye basma sayısı için sayaç int buttonCState = 0; // butonun mevcut durumu int lastButtonCState = 0; // butonun önceki durumu
String displayForecast = "bilinmeyen";
int timerVal = 0;
imzasız uzun lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *yağış = io.feed("yağış"); // 'yağış' beslemesini ayarla
//AdafruitIO_Feed *görev yöneticisi = io.feed("görev yöneticisi"); // 'görev yöneticisi' beslemesini ayarla
geçersiz kurulum() {
pinMode(buttonPinA, INPUT); pinMode(buttonPinB, INPUT_PULLUP); pinMode(buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = dahili olarak 3,3V'den ekran voltajı üret
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // 128x32 için 0x3C adresi
// Ekranda ilk görüntüleme arabelleği içeriğini göster --
// kitaplık bunu bir Adafruit açılış ekranı ile başlatır. display.display(); gecikme(2000); // 2 saniye duraklat
// Arabelleği temizle.
display.clearDisplay();
// seri bağlantıyı başlat
Seri.başla(115200);
// io.adafruit.com'a bağlan
Serial.print("Adafruit IO'ya Bağlanmak"); io.connect(); // 'yağış' beslemesi için bir mesaj işleyici ayarlayın. // handleMessage işlevi (aşağıda tanımlanmıştır) // adafruit io'dan bir mesaj alındığında // çağrılacak. yağış->onMessage(handleMessage);
// bağlantı için bekleyin
while(io.status() < AIO_CONNECTED) { Serial.print("."); gecikme(500); }
// bağlandık
Seri.println(); Serial.println(io.statusText());
}
boşluk döngüsü () {
// io.run(); tüm eskizler için gereklidir.
// her zaman döngünüzün en üstünde bulunmalıdır // işlevi. istemciyi // io.adafruit.com'a bağlı tutar ve gelen verileri işler. io.run();
// buton giriş pinini okuyun:
buttonAState = digitalRead(buttonPinA); buttonBState = digitalRead(buttonPinB); buttonCState = digitalRead(buttonPinC);
// buttonState'i önceki durumuyla karşılaştır
if (buttonAState != lastButtonAState || buttonBState != lastButtonBState || buttonCState != lastButtonCState) { // durum değiştiyse sayacı artırın if (buttonAState == LOW) { // mevcut durum DÜŞÜK ise, buton buttonAPushCounter++ basıldı; Serial.print("A düğmesine basma sayısı: "); Serial.println(buttonAPushCounter); } if (buttonBState == LOW) { // eğer mevcut durum LOW ise butona basılmıştır buttonBPushCounter++; Serial.print("B düğmesine basma sayısı: "); Serial.println(buttonBPushCounter); Serial.println("Zamanlayıcıyı başlatma"); timerEnabled = 1; lastStartTime = millis(); } if (buttonCState == LOW) { // eğer mevcut durum LOW ise butona basılmıştır buttonCPushCounter++; Serial.print("C düğmesine basma sayısı: "); Serial.println(buttonCPushCounter); Serial.println("Zamanlayıcıyı durdurma"); timerEnabled = 0; } } if (timerEnabled == 1){ // zamanlayıcıyı yalnızca başlatıldığında artır timerVal = (millis() - lastStartTime)/1000; }
// konum 1'i görüntüle - tahmin
// if (buttonAPushCounter % 3 == 0) { // display.clearDisplay(); // display.setTextSize(1); // display.setTextColor(BEYAZ); // display.setCursor(0, 0); // display.print("Tahmin: "); // display.println(displayForecast); // display.setCursor(0, 16); // display.println("ikinci satır"); // display.println("örnek içerik"); // display.display(); // //gecikme(2000); // }
//konum 1'i göster - Görev 1
if (buttonAPushCounter % 3 == 0) { display.setTextSize(1); display.setTextColor(BEYAZ); display.clearDisplay(); display.setCursor(0, 0); display.println("Araştırma - Röportajlar"); display.println(); display.print("Zamanlayıcı: "); display.println(timerVal); display.display(); }
//konum 2'yi göster - Görev 2
if (buttonAPushCounter % 3 == 1) { display.clearDisplay(); display.setCursor(0, 0); display.println("Stüdyo - Kod Oluşturma"); display.println(); display.print("Zamanlayıcı: "); display.println(timerVal); display.display(); }
//konum 3'ü göster - Görev 3
if (buttonAPushCounter % 3 == 2) { display.clearDisplay(); display.setCursor(0, 0); display.println("DSV - Çizim"); display.println(); display.print("Zamanlayıcı: "); display.println(timerVal); display.display(); }
// mevcut durumu son durum olarak kaydet, // bir dahaki sefer için döngü boyunca lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// bu fonksiyon bir mesaj geldiğinde çağrılır
// Adafruit IO'dan alındı. // yukarıdaki setup() işlevindeki feed'e eklendi. void handleMessage(AdafruitIO_Data *veri) {
Dizi tahmini = data->toString(); // gelen hava durumu verilerini bir dizgede sakla
Serial.print("alınan <-"); Serial.println(tahmin); displayForecast = tahmin; //aşağıdaki dizeler şimdiye kadar keşfettiğim çeşitli IFTTT hava durumu raporu sözcüklerini saklar String task1 = String("Task 1"); String yağmur = String("Yağmur"); String lightrain = String("Hafif Yağmur"); String rainshower = String ("Rain Shower"); String AMshowers = String ("AM Showers"); String rainandsnow = String("Yağmur ve Kar"); String kar = String("Kar"); String snowshower = String("Kar Yağmuru"); String cloudy = String("Bulutlu"); String çoğunluklacloudy = String("Çoğunlukla Bulutlu"); String partlycloudy = String("Parça Bulutlu"); String clearsky = String("Temizle"); String adil = String("Orta"); String güneşli = String("Güneşli");
// Bu if ifadeleri, gelen hava durumu değişkenini depolanan koşullarla karşılaştırır ve NeoPixels'i buna göre kontrol eder.
// eğer tahminde yağmur varsa if (forecast.equalsIgnoreCase(rain) || tahmin.equalsIgnoreCase(lightrain) || tahmin.equalsIgnoreCase(rainshower) || tahmin.equalsIgnoreCase(AMshowers)){ Serial.println("yağış bugün tahmin");
}
// tahminde kar varsa if (forecast.equalsIgnoreCase(snow) || tahmin.equalsIgnoreCase(rainandsnow) || tahmin.equalsIgnoreCase(snowshower)){ Serial.println("bugünkü hava tahmini");
}
// eğer tahminde güneş varsa if (forecast.equalsIgnoreCase(clearsky) || tahmin.equalsIgnoreCase(fair) || tahmin.equalsIgnoreCase(güneşli)){ Serial.println("bugün hava tahmininde bir çeşit güneş");
}
// tahminde bulut varsa if (forecast.equalsIgnoreCase(bulutlu) || tahmin.equalsIgnoreCase(mostlycloudy) || tahmin.equalsIgnoreCase(partlycloudy)){ Serial.println("bugünkü tahminde bulutlu gökyüzü");
}
}
3. Adım: Konteyneri / Kabuğu Oluşturun
Kabuk için çerçevenizin hangi boyutta olmasını istediğinizi belirleyerek başlayın veya dosyamı indirebilirsiniz. Boyutu belirledikten sonra, vektör dosyasının düzenini oluşturmak için MakerCase'i kullanabilirsiniz.
Dosyayı lazer kesiciden geçirin - yaklaşık 5 dakika sürmelidir. Daha sonra kabuğu bir araya getirin.
Düğmelerime ulaşmayı zorlaştıran malzemenin genişliğini hesaba katmadım. Hala onları bağlamanın bir yolunu bulmam gerekiyor. Ayrıca çok küçüktürler ve bu da onlarla çalışmayı zorlaştırır.
Önerilen:
DIY GPS Tracker --- Python Uygulaması: 5 Adım (Resimlerle)
DIY GPS Tracker --- Python Uygulaması: İki hafta önce bir bisiklet etkinliğine katıldım. Bitirdikten sonra rotayı ve o sırada bindiğim hızı kontrol etmek istedim. Ne yazık ki, ulaşılamadı. Şimdi bir GPS izleyici yapmak için ESP32 kullanıyorum ve onu bisiklet rotamı kaydetmek için alacağım
Vive Tracker için Tekstil VR Eldivenleri: 13 Adım (Resimlerle)
Vive Tracker için Tekstil VR Eldivenleri: Bu eğitici, Vive izleyici ile VR'de kullanım için tekstil eldivenlerinin nasıl yapıldığını gösterir. Vive için tasarlanan joysticklerin yerini alarak VR etkileşimlerini daha dokunsal ve insancıl hale getiriyorlar. Dizini sıkıştırdığınız ve f
DIY Solar Tracker: 27 Adım (Resimlerle)
DIY Solar Tracker: Giriş Genç öğrencileri mühendislikle tanıştırmayı ve onlara güneş enerjisi hakkında bilgi vermeyi amaçlıyoruz; müfredatlarının bir parçası olarak bir Helios inşa etmelerini sağlayarak. Mühendislikte enerji üretimini fosil yakıt kullanımından uzaklaştırmak için bir çaba var
Multi Task Raspberry 1 B(Kişisel Bulut + Hava Durumu İstasyonu): 4 Adım
Multi Task Raspberry 1 B(Kişisel Bulut + Hava İstasyonu): Bir süre önce daha yeni bir sürüm satın aldıktan sonra bir RPiB yedeği olduğunu hatırladım.Yedek dosyalarımı saklarken gizliliği düşünerek kendi bulut sunucuma sahip olmaya karar verdim. İyi sonuçtan memnun, ancak R'den gelen potansiyel israfından memnun değil
Task Zero: 7 Adım (Resimlerle)
Görev Sıfır: Yüksek verimliliğe değer veren ve başarıyı vurgulayan bir toplumda yaşayan kişi, işin yanında hayatın da olduğunu unutmaya meyilli olabilir. Görev Sıfır, ilkinden önceki görevle ilgilidir. Görev 0: Kişisel hayatınıza değer verin. Yetiştiren görevleri ertelemeyin