İçindekiler:
- Adım 1: Parçaları ve Ahşap İşleri Toplama
- Adım 2: Akrilik Daireler
- Adım 3: Lehimleme
- Adım 4: Kod
- Adım 5: Danimarka Yağı
Video: Ish Clock: 5 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Sık sık kendimi ne yapacağım hakkında hiçbir fikrim olmadığı şeyleri satın alırken buluyorum. Bu proje, üzerinde 12 adet WS2812b LED bulunan bir halkanın satın alınmasının bir sonucudur. Bunun için hiçbir planım yoktu ama internette harika görünüyordu, bu yüzden sepetime bir tane koydum, geldiğinde bir süre onunla oynadım ve sonra hepsini unuttum.
Bir süre sonra bir saat yapmayı düşündüm ve orada hiçbir şey yapmadan oturduğunu hatırladım. Dakikaları telafi etmek için 60 LED'li ikinci bir yüzük almayı düşünüyordum ama sonra saate nasıl bakacağımızı ve en yakın 5 dakikaya yuvarlayacağımızı düşünmeye başladım.
Bununla benimkiyle, ish saatini yapmak için 12 LED halkamla yola çıktım. Saati (Mavi LED) ve ardından dakikaları (Kırmızı LED) aşağı yuvarlatılmış olarak belirtmek için 1 saniye boyunca 1 LED görüntüler
Adım 1: Parçaları ve Ahşap İşleri Toplama
Bir gün işe gelip bir palet bulduğum için çok şanslıydım. Bu palet, standart, değirmen paleti akışına benzemediği için bana yapıştı. Temiz, ısıl işlem görmüş ve alışılmadık derecede sağlam meşe idi.
Bu proje, o paletin parçalarından birinden yapılmıştır. (Eve götürmeden önce patrona sordum)
Ayrıca kullanılır:
- 12 piksel ws2812b LED halka
- Gerçek Zamanlı Saat (RTC) modülü (I2C'li bir DS3231 kullanıyorum)
- Arduino Nano v3.0 uyumlu
- Akrilik levha (5mm)
- renkli tel
Aletler
- Elektrikli Matkap
- yönlendirici
- Ayarlanabilir düz ahşap uç
- Elektrikli zımpara
- El testeresi
- Havya
- Sıcak yapıştırıcı tabancası
- kum kağıdı
- Danimarka Yağı
zımpara
Tahta bloğu düzeltmek ve tüm kenarları temiz ve pürüzsüz olana kadar temizlemek için elektrikli zımpara kullanarak başladım. Bazı kusurları görünür bıraktım ve tarihin bir kısmını ahşapta görebilmeyi sevdiğim için tam olarak düz veya kare değil.
Deliklerin İşaretlenmesi ve Kesilmesi
Zımparaladıktan sonra saatin kadranını istediğim tarafı seçtim ve her köşeden çizgiler çizerek merkezi işaretledim. Ayarlanabilir ahşabı led halkadan biraz daha büyük ayarladım, böylece akriliğin üzerine oturması ve yaklaşık 5 mm derinliğinde kesmesi için bir raf olacak, ardından kesiciyi LED halkasının hemen üzerinde ayarlayacak ve 5 mm daha kesecekti..
Yönlendirme ve kablo delikleri
Yönlendiricimi 12 mm bit ile kullanarak, RTC ve Arduino'yu gizlemek için bloğun altındaki bir girintiyi yönlendirdim. Yaklaşık 15 mm derinliğinde ve herhangi bir kenardan en az 5 mm. Merkezi (ish) alttan işaretledim ve LED kablolarına izin vermek için yarı yolu geçen 10 mm'lik bir bit kullanarak delindim. Ardından, 5 mm'lik bir uç kullanarak, alttan 10 mm'lik deliği karşılamak için LED girintinin ortasından deldim.
Gücün gelmesi için arkada bir 4 mm'lik daha delik ve LED halkasının arkasındaki teller için bir kanal oluşturmak için daha küçük bir yönlendirici bit kullanarak ve ahşap işi yapılır.
Adım 2: Akrilik Daireler
Saatin ön yüzünün akriliğini yapmak için doldurması gereken delikten biraz daha büyük olan kare bir parça kesmeyi belirttim. Ardından, başlamak için elektrikli zımparayı kullanarak, doğru şekil ve boyuta gelene kadar köşeleri çıkarmaya başladım. Daha sonra fazla ateş etmemek ve baştan başlamak zorunda kalmamak için elle zımparalamaya geçtim.
Tam olarak yerine oturana kadar yavaş ve sıkıcı bir deneme yanılma süreciydi ama bence sonuç buna değdi. Akrilikin önüne buzlu bir görünüm vermek için çok ince bir kağıt kullanarak bitirdim.
Adım 3: Lehimleme
Bu vesileyle kablolarım için bir renk sistemi kullanmayı seviyorum:
- Güç için Kırmızı (5v)
- Zemin için Beyaz
- Veri için Sarı
- Saat için Yeşil
Yukarıdaki sistemi kullanarak gerekli 3 kabloyu LED halkasına lehimleyerek ve kabloları delikten aşağı iterek başladım. Gerçek bir zorlamaya maruz kalmaması gerektiği için yüzüğü yerinde tutmak için küçük bir miktar sıcak tutkal kullandım. (Bir ara değiştirmem gerekebilir) ve akriliği kenarlara biraz sıcak tutkalla takın.
Daha sonra yukarıdaki sistemi kullanarak 4 kabloyu RTC'ye lehimledim. İşleri biraz daha düzenli tutmak için Arduino'dan RTC için güç almaya karar verdim. Daha sonra her şeyi Arduino'ya bağladı ve güç için 1 kabloyu ve Arduino'ya toprak için başka bir kablo lehimleyin.
RTC
- SCL (Saat) - Analog Pin 5
- SDA (Veri) - Analog Pin 4
- VCC'den 5V'a
- Arduino'daki herhangi bir GND'ye GND
LED Halka
Din'den Dijital Pin 6'ya
Etrafta asılı eski bir USB kablosu vardı, bu yüzden saati çalıştırmak için onu kullanmaya karar verdim. Normalde bir şeye bağlanacak ucunu kestim ve arkadaki delikten ittim. Ardından, VCC'yi Arduino'ya ve LED halkasını pozitif tarafa ve Arduino'dan ve LED'den Toprağa lehimlemeden önce uçları soyun ve kalaylayın. Daha sonra biraz ısıyla büzüştürdüm ve iyi görünüyordu, Sıcak tutkal tabancası her şeyi tutmak için geri çıktı. Arduino'yu, gelecekte programlamak için USB portuna erişebileceğim kadar yeterli oyunla bırakmaya karar verdim, ancak düşebileceğim kadar değil.
Adım 4: Kod
Artık bu kodu Arduino'ya yükleyebilmelisiniz.
RTC çalışmıyorsa, bu kod, kodun ne zaman derlendiğine bağlı olarak zamanı ayarlayacaktır, bu nedenle yükleme düğmesine bastığınızdan ve doğrulamadığınızdan emin olun.
alternatif olarak bu da zamanı ayarlamak için gerçekten iyi çalışıyor.
www.instructables.com/id/Setting-the-DS130…
Bu kodun çoğunu Adafruit NeoPixel kitaplığından, bazılarını bulduğum bir RTC kitaplığından ödünç aldım ve bazılarını da kendi başıma oluşturdum.
// kütüphane kodunu dahil et: #include
#Dahil etmek
#Dahil etmek
// pinleri tanımla
#define PIN 6
#define BRIGHTNESS 20 // maksimum parlaklığı ayarla
#define r 5
#tanımla g 5
#tanımla b 5
RTC_DS3231 rtc; // saat nesnesi oluştur
Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800); // nesneyi şeritle
geçersiz kurulum () {
Wire.begin(); // I2C'yi başlat
rtc.begin(); // saati başlat
Seri.başla(9600);
// pin modlarını ayarla
pinMode(PIN, ÇIKIŞ);
if (rtc.lostPower()) {
Serial.println("RTC güç kaybetti, zamanı ayarlayalım!");
// aşağıdaki satır, RTC'yi bu çizimin derlendiği tarih ve saate ayarlar
rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));
// Bu satır, RTC'yi açık bir tarih ve saatle ayarlar, örneğin
// 21 Ocak 2014, saat 3'te arayacaksınız:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
strip.begin();
şerit.göster(); // Tüm pikselleri 'kapalı' olarak başlat
DateTime theTime = rtc.now(); // DST'yi hesaba katar
bayt saniye değeri = theTime.second(); // saniye al
bayt dakika değeri = theTime.dakika(); // dakikaları al
int saat değeri = theTime.hour();
nokta(şerit. Renk(0, g, 0), 50);
}
boşluk döngüsü () {
// zaman al
DateTime theTime = rtc.now(); // DST'yi hesaba katar
int dakika değeri = theTime.dakika(); // dakikaları al
int saat değeri = theTime.hour(); // saatleri al
int ikinci değer = theTime.second();
if (dakikaval 0) {
strip.setPixelColor(0, r, 0, 0);
şerit.göster();}
else if (dakikaval <= 9) {
strip.setPixelColor(1, r, 0, 0);
şerit.göster();}
else if (minuteval <= 14) {
strip.setPixelColor(2, r, 0, 0);
şerit.göster();}
else if (dakikaval <= 19) {
strip.setPixelColor(3, r, 0, 0);
şerit.göster();}
else if (dakikaval <= 24) {
strip.setPixelColor(4, r, 0, 0);
şerit.göster();}
else if (dakikalık <= 29) {
strip.setPixelColor(5, r, 0, 0);
şerit.göster();}
else if (dakikaval <= 34) {
strip.setPixelColor(6, r, 0, 0);
şerit.göster();}
else if (minuteval <= 39) {
strip.setPixelColor(7, r, 0, 0);
şerit.göster();}
else if (minuteval <= 44) {
strip.setPixelColor(8, r, 0, 0);
şerit.göster();}
else if (minuteval <= 49) {
strip.setPixelColor(9, r, 0, 0);
şerit.göster();}
else if (dakikaval <= 54) {
strip.setPixelColor(10, r, 0, 0);
şerit.göster();}
else if (dakikaval <=59) {
strip.setPixelColor(11, r, 0, 0);
şerit.göster();}
gecikme(1000);
for (int i=0; i<12; i++){
strip.setPixelColor(i, 0, 0, 0);
şerit.göster();
}
if (saatval == 0) {
strip.setPixelColor(0, 0, 0, b);
şerit.göster();}
else if (saatlik == 1) {
strip.setPixelColor(1, 0, 0, b);
şerit.göster();}
else if (saatval == 2) {
strip.setPixelColor(2, 0, 0, b);
şerit.göster();}
else if (hourval == 3) {
strip.setPixelColor(3, 0, 0, b);
şerit.göster();}
else if (hourval == 4) {
strip.setPixelColor(4, 0, 0, b);
şerit.göster();}
else if (hourval == 5) {
strip.setPixelColor(5, 0, 0, b);
şerit.göster();}
else if (hourval == 6) {
strip.setPixelColor(6, 0, 0, b);
şerit.göster();}
else if (saatval == 7) {
strip.setPixelColor(7, 0, 0, b);
şerit.göster();}
else if (hourval == 8) {
strip.setPixelColor(8, 0, 0, b);
şerit.göster();}
else if (hourval == 9) {
strip.setPixelColor(9, 0, 0, b);
şerit.göster();}
else if (hourval == 10) {
strip.setPixelColor(10, 0, 0, b);
şerit.göster();}
else if (hourval == 11) {
strip.setPixelColor(11, 0, 0, b);
şerit.göster();}
else if (saatlik == 12) {
strip.setPixelColor(0, 0, 0, b);
şerit.göster();}
else if (hourval == 13) {
strip.setPixelColor(1, 0, 0, b);
şerit.göster();}
else if (hourval == 14) {
strip.setPixelColor(2, 0, 0, b);
şerit.göster();}
else if (hourval == 15) {
strip.setPixelColor(3, 0, 0, b);
şerit.göster();}
else if (hourval == 16) {
strip.setPixelColor(4, 0, 0, b);
şerit.göster();}
else if (hourval == 17) {
strip.setPixelColor(5, 0, 0, b);
şerit.göster();}
else if (hourval == 18) {
strip.setPixelColor(6, 0, 0, b);
şerit.göster();}
else if (hourval == 19) {
strip.setPixelColor(7, 0, 0, b);
şerit.göster();}
else if (hourval == 20) {
strip.setPixelColor(8, 0, 0, b);
şerit.göster();}
else if (hourval == 21) {
strip.setPixelColor(9, 0, 0, b);
şerit.göster();}
else if (hourval == 22) {
strip.setPixelColor(10, 0, 0, b);
şerit.göster();}
else if (hourval == 23) {
strip.setPixelColor(11, 0, 0, b);
şerit.göster();}
gecikme(1000);
for (int i=0; i<12; i++){
strip.setPixelColor(i, 0, 0, 0);
şerit.göster();
}
// seri hata ayıklama için
Serial.print(saatlik, Aralık);
Seri.print(':');
Serial.print(dakikaval, Aralık);
Seri.print(':');
Serial.println(ikinci değer, Aralık);
}
void nokta(uint32_t c, uint8_t bekle) {
for (int j=0; j<3; j++) {
for(int i=0; i<12; i++){
strip.setPixelColor(i, c);
şerit.göster();
gecikme(bekle);
for(int i=0; i<12; i++){
strip.setPixelColor(i, 0, 0, 0);
şerit.göster();}
}
}
}
Adım 5: Danimarka Yağı
Son ve isteğe bağlı adım, ahşaba biraz Danimarka yağı uygulamaktır. Tahılları nasıl ortaya çıkardığını gerçekten seviyorum, ayrıca lekelere ve neme karşı bir miktar koruma sağlıyor. Bu yüzden şiddetle tavsiye ederim.
Fırçalayabilirsin ya da silmek için eski bir bez kullanırım.
Şimdi geriye kalan tek şey fişe takıp keyfini çıkarmak.
Önerilen:
RGB HexMatrix - IOT Clock 2.0: 5 Adım (Resimlerle)
RGB HexMatrix | IOT Clock 2.0: HexMatrix 2.0, önceki HexMatrix'in yükseltilmiş halidir. Önceki sürümde WS2811 LED'lerini kullandık, bu nedenle HexMatrix ağırlaştı ve kalınlaştı. Ancak matrisin bu versiyonunda, bu matrisi daha iyi hale getiren WS2812b LED'li özel PCB kullanacağız
Bubble Çalar Saat Uyanmayı Eğlenceli Hale Getiriyor(ish): 7 Adım (Resimlerle)
Kabarcık Çalar Saat Uyanmayı Eğlenceli Hale Getiriyor(ish): Vızıldayan bir çalar saatle uyanmak berbat. Güneş doğmadan (veya saatlerce dışarı çıkmadan) uyanmayı sevmeyenlerdenim. Uyanmayı eğlenceli hale getirmenin yatakta baloncuk partisi yapmaktan daha iyi bir yolu var mı? Bir arduino ve bir
Groundhog Day Alarm Clock: 12 Adım (Resimlerle)
Groundhog Day Alarm Clock: Groundhog Day Alarm Clock, alarm çaldığında Groundhog Day filminden gelen sesi çalmak için değiştirilmiş bir Panasonic RC-6025 çevirme saatinden oluşur. Bu cihazı yaratmamın nedeni, Groundhog Day (her ikisi de gündüz ve film) düzenlenen özel
Gixie Clock:En Güzel Glow Tube Clock: 4 Adım
Gixie Clock:En Güzel Glow Tube Clock: Nixie Tube'u çok seviyorum ama çok pahalı, bunu göze alamam. Bu yüzden bu Gixie Clock'u yaratmak için yarım yılımı harcadım.Gixie Clock, akrilik ışığı yapmak için ws2812 aydınlatma kullanılarak elde edildi.RGB tüpünü daha ince yapmak için elimden geleni yapıyorum
LittleBits Mad Libs(-ish): 7 Adım (Resimlerle)
LittleBits Mad Libs(-ish): NGSS (Yeni Nesil Bilim Standartları) Mühendislik Uygulamalarını (ve başka kısıtlamalar eklerseniz daha fazlasını!) entegre eden bir mücadeleye öğrencilerinizi dahil etmeye hazır mısınız? LittleBits veya başka herhangi bir çok parçalı elektronik kiti (SAM) kullanarak Laboratuvarlar, Lego WeDo, LEGO