İçindekiler:

Ish Clock: 5 Adım (Resimlerle)
Ish Clock: 5 Adım (Resimlerle)

Video: Ish Clock: 5 Adım (Resimlerle)

Video: Ish Clock: 5 Adım (Resimlerle)
Video: Cebimde 140 Lira Para Vardı | Şimdi Yanında 6 Bin Kişi Çalışıyor… 2024, Temmuz
Anonim
Image
Image
Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri

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

Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri
Toplama Parçaları ve Ahşap İşleri

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

Akrilik Daireler
Akrilik Daireler
Akrilik Daireler
Akrilik Daireler
Akrilik Daireler
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

Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
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ğı

Danimarka Yağı
Danimarka Yağı
Danimarka Yağı
Danimarka Yağı
Danimarka Yağı
Danimarka Yağı
Danimarka Yağı
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: