ATtiny85 Ws2813: 9 Adım Kullanarak Cam / Kristal Ödüllerini Geliştirecek Işık

ATtiny85 Ws2813: 9 Adım Kullanarak Cam / Kristal Ödüllerini Geliştirecek Işık

İçindekiler:

Anonim

ATTiny ve donanım kesintileri hakkında bilgi edinmek istiyorsanız bu çok iyi bir proje. Bu proje aynı zamanda ATTiny85 ve 3 adet AAA pilden 28 veya daha fazla RGB LED (WS2813) çalıştırıyor. Bir şey "GLOW" yapmak için eğlenceli bir yol

İşte ara sıra sıra dışı işler için cam / kristal ödülleri veriyorlar. LED'leri "Işıklandır !!!" için kullanmanın eğlenceli olacağını düşünmüştüm. Bu projenin küçük olması ve pillerle çalışması gerekiyordu. Bir ATTiny85 ve 3 adet AAA pil kullandım, ayrıca WS2813 segmentinde ödülün tabanının uzunluğunu kullandım. Ben de ATTiny'yi yeniden programlamaksızın anında LED'lerin renklerini değiştirmeyi istedim.

Bu projede aynı zamanda FastLED kütüphanesini ve LED renklerini / Paleti değiştirmek için donanım kesintisine sahip bir düğmeyi de kullanabildim. Hardcore insanlar düğmedeki çıkmazım üzerinde çalışmam gerektiğini söylüyorlar çünkü atlıyor, ama ben bunu "Rastgele Renk Paletleri" olarak düşünmeyi tercih ediyorum.

Yani … "Neden bir ATtiny85 ve bir arduino değil?" Bu proje sadece tek bir giriş ve çıkışa ihtiyaç duyuyordu. ATTiny'nin dahili 8MHz saati ve ATtiny25V / 45V / 85V için 1.8 - 5.5V arasında çalışma voltajı var. LED Şerit WS2813, + 3.5 ~ + 5.3 voltaj gereksinimine sahiptir. Proje 3 batarya ile harika çalışıyor. Ayrıca ATTiny yaklaşık 2 - 3 dolar, bunun gibi kalıcı bir projenin parçası olmayı umursamıyorum.

Bu projede size göstereceğim:

  • Arduino ISS olarak nasıl kurulur (Sistem Programlamada)
  • Önyükleme yükleyicisini ATTiny85'teki bir ATTiny85 Loading (firmware) programına yazma
  • Bir donanım kesmesini pim ve basma düğmesine değiştirme
  • Şerit kartındaki bileşenleri lehimleyin.

Not: Bu projede lehim ve şerit tahta kullanıyorum. Bu isteğe bağlıdır, sadece bir breadboard ve çok sayıda tel kullanın. Ayrıca isteğe bağlı olan LED şeridini tutmak için ince bir stand oluşturmak için bir 3D yazıcı kullanıyorum. Umarım bunu yaptığım kadar beğenirsin.

Gereçler:

Adım 1: Parça Listesi

ATTiny85 mikroişlemcisini programlamak için gerekli parçalar ve projeyi oluşturmak için parçalar vardır. Programlayıcıyı bu adımı tamamladıktan sonra yeniden kullanabildiğiniz için ayrı ayrı listeleyeceğim.

  • ATTiny85 Programcısı.
  • Arduino Uno Breadboard. (Küçük veya yarım boy veya prototip kalkanı hepsi harika çalışıyor).
  • teller (erkek / erkek).
  • 10 uF Elektrolitik Kondansatör
  • İsteğe bağlı 220 ohm direnç ve programı test etmek için LED.

3B Yazıcı (isteğe bağlı)

Lehim Ütü / İstasyon (bunu sadece bir breadboard'a koymadığınız sürece gereklidir).

Proje Parçaları (http://www.taydaelectronics.com adresinden çoğu bölümü satın aldım.

  • 8 pin soket (3 kuruş)
  • Düğme -TACT SWITCH 6X6MM 4.3MM DELİKTEN (4 kuruş)
  • küçük şerit tahtası. (66 sent)
  • ATtiny85 - Her biri yaklaşık 2 - 3 dolar.
  • Amazon'dan 10 dolara 5 aldım.
  • 3 adet AAA pil tutucu (26 sent)
  • Dirençler 470 ohm (1 cent)
  • 10 k ohm (3 kuruş)
  • LED Şerit (WS2812b veya WS2813) 144led / meter şeridin bir bölümünü kullandım. (22 dolar için amazon)
  • Tel - 22 AWG tel - 3 renk en iyi sonucu verir. muhtemelen her rengin 1'i

Adım 2:

Adım 3: ATtiny85 Ws2813 Kullanarak Cam / Kristal Ödülleri Geliştirmek İçin Işık

ATTiny ve donanım kesintileri hakkında bilgi edinmek istiyorsanız bu çok iyi bir proje. Bu proje aynı zamanda ATTiny85 ve 3 adet AAA pilden 28 veya daha fazla RGB LED (WS2813) çalıştırıyor. Bir şey "GLOW" yapmak için eğlenceli bir yol

İşte ara sıra sıra dışı işler için cam / kristal ödülleri veriyorlar. LED'leri "Işıklandır !!!" için kullanmanın eğlenceli olacağını düşünmüştüm. Bu projenin küçük olması ve pillerle çalışması gerekiyordu. Bir ATTiny85 ve 3 adet AAA pil kullandım, ayrıca WS2813 segmentinde ödülün tabanının uzunluğunu kullandım. Ben de ATTiny'yi yeniden programlamaksızın anında LED'lerin renklerini değiştirmeyi istedim.

Bu projede aynı zamanda FastLED kütüphanesini ve LED renklerini / Paleti değiştirmek için donanım kesintisine sahip bir düğmeyi de kullanabildim. Hardcore insanlar düğmedeki çıkmazım üzerinde çalışmam gerektiğini söylüyorlar çünkü atlıyor, ama ben bunu "Rastgele Renk Paletleri" olarak düşünmeyi tercih ediyorum.

Yani … "Neden bir ATtiny85 ve bir arduino değil?" Bu proje sadece tek bir giriş ve çıkışa ihtiyaç duyuyordu. ATTiny'nin dahili 8MHz saati ve ATtiny25V / 45V / 85V için 1.8 - 5.5V arasında çalışma voltajı var. LED Şerit WS2813, + 3.5 ~ + 5.3 voltaj gereksinimine sahiptir. Proje 3 batarya ile harika çalışıyor. Ayrıca ATTiny yaklaşık 2 - 3 dolar, bunun gibi kalıcı bir projenin parçası olmayı umursamıyorum.

Bu projede size göstereceğim:

  • Arduino ISS olarak nasıl kurulur (Sistem Programlamada)
  • Önyükleme yükleyicisini ATTiny85'e nasıl / Neden
  • ATTiny85’e yükleme (bellenim) programı
  • Bir donanım kesmesini pim ve basma düğmesine değiştirme
  • Şerit kartındaki bileşenleri lehimleyin.

Not: Bu projede lehim ve şerit tahta kullanıyorum. Bu isteğe bağlıdır, sadece bir breadboard ve çok sayıda tel kullanın. Ayrıca isteğe bağlı olan LED şeridini tutmak için ince bir stand oluşturmak için bir 3D yazıcı kullanıyorum.

Umarım bunu yaptığım kadar beğenirsin.

Adım 4: Parça Listesi

ATTiny85 mikroişlemcisini programlamak için gerekli parçalar ve projeyi oluşturmak için parçalar vardır. Programlayıcıyı bu adımı tamamladıktan sonra yeniden kullanabildiğiniz için ayrı ayrı listeleyeceğim.

ATTiny85 Programcısı.

  • Arduino Uno
  • Breadboard. (Küçük veya yarım boy veya prototip kalkanı hepsi harika çalışıyor).
  • teller (erkek / erkek).
  • 10 uF Elektrolitik Kondansatör
  • İsteğe bağlı 220 ohm direnç ve programı test etmek için LED.

3B Yazıcı (isteğe bağlı)

Lehim Ütü / İstasyon (bunu sadece bir breadboard'a koymadığınız sürece gereklidir).

Proje Bölümleri (http://www.taydaelectronics.com adresinden çoğu bölümü satın aldım)

  • 8 pin soket (3 kuruş)
  • Düğme -TACT SWITCH 6X6MM 4.3MM DELİKTEN (4 kuruş)
  • küçük şerit tahtası. (66 sent)
  • ATtiny85 - Her biri yaklaşık 2 - 3 dolar. Amazon'dan 10 dolara 5 aldım.
  • 3 adet AAA pil tutucu (26 sent)
  • Dirençler
    • 470 ohm (1 cent)
    • 10 k ohm (3 kuruş)
  • LED Şerit (WS2812b veya WS2813) 144led / meter şeridin bir bölümünü kullandım. (22 dolar için amazon)
  • Tel - 22 AWG tel - 3 renk en iyi sonucu verir. muhtemelen her rengin 1'i

Adım 5: Arduino'yu ISS Olarak Ayarlama

Bu başlı başına ortak bir projedir ve Instructables’ı ararsanız çok zarif çözümleri olan birçok insan var. (ISS olarak Arduino'yu arayın) Buradaki amaç sadece bir ATTINY85'e bir program ve önyükleyici yüklemek. Projenin geri kalanına taşınmadan önce her şeyi doğrulamak için göz kırpma programını ekleyeceğiz.

Adımlar:

  • Arduino yazılımını PC'nize yükleyin.
  • Arduino'yu PC'ye bağlayın ve Arduino'yu ISP yazılımı olarak yükleyin.

    • Arduino'yu USB kablosuyla bağlayın.
    • Arduino Yazılımını çağırmak bir IDE
    • "Araçlar" menüsü altında - Yönetim Kurulu'nu seçin: Arduino / Genuino Uno
    • Bağlantı noktası altında, Arduino bağlı olan bağlantı noktasını seçin.
    • Dosya ve Örneklere tıklayın.
    • Tıklayın 11. Arduino ISS

    • “Araçlar” menüsüne tıklayın ve ardından “Tahta:” nı Arduino / Genuino UNO olarak programlayın.
    • Arduino'nun Port Ayarı altında bulunduğundan emin olun.

    • "Çizim" menüsüne tıklayın ve yükleyin.
  • Artık bir Arduino'yu Programcı olarak yüklediniz. Bu, şimdi ATTINY85'i programlamanıza izin verecektir. ATTINY85'i programlamadan önce yapılacak ilk şey, bunun için kurulu tanımlarını almaktır.
    • "Dosya" ve ardından "Tercihler" üzerine tıklayın
    • "Ek Kurul Yöneticileri URL'leri:" nin yanındaki metin alanında şunu yazın:
    • Tamam'ı tıklayın

    • Ardından "Araçlar" menüsüne tıklayın
    • sonra da Kurullara git.
    • Menüdeki "Board Manager …" üzerine tıklayın.
      • Arama çubuğuna ATTINY yazınız.
      • ATTinyCore'u Spence Konde'den seçin.

Artık programlayıcınızı bağlamaya hazırsınız !!!

Adım 6: ATTiny85 için Programcı Yap

Artık sürücüleriniz kurulu ve ATTiny yükleyicisini oluşturmaya hazırsınız. Bu, ATTiny85'i breadboard'a yerleştirmenizi gerektirir. Çipin tepesinin sol üst köşesinde bir nokta olduğuna dikkat etmek önemlidir. Çipi tahtaya baş aşağı koyarsanız, ısınır. Eğer ısınırsa tahrip olur, bu yüzden güç eklemeden önce yönünü kontrol edin.

Diyagramı açıklamak istedim. ATTINY pimleri solda 1-4 ve sağda 8-5'tir (şemaya bakınız). Arduino Programı / firmware aslında pinleri farklı numaralar çağırır. Çizim Arduino'nun iç isimlerini PB0-PB5 olarak gösterir.

Arduino ISS'yi bir Breadboard'a bağlayın.

  • Breadboard'u Arduino'nun yanına yerleştirin.
  • ATTiny85'i tahtaya yerleştirin ve üst kısmının beklediğiniz yerde olduğunu doğrulayın.
  • Pin konumları hakkındaki şemaya bakın. Chip'in levhanın ortasındaki oluğu yerleştirdiğinden emin olun.
  • Arduino'dan 5V'ı ATTiny'deki pime 8 bağlayın.
  • Arduino'dan Ground 4'ü ATTiny'e bağlayın.
  • Arduino Pin 13 ila ATTiny pin7.
  • Arduino Pin 12'den ATTiny pin6'ya.
  • Arduino Pin 11 ila ATTIny pin5.
  • Arduino Pin 10 ila ATTiny pin1 (ATTiny85'te sıfırlama).
  • Minimuma ek olarak pim 2'den ATTiny85'in altındaki bir noktaya 220ohm direnç ekliyorum. Ardından Topraktan Direnç'e bir LED bağlayın.
  • Son adım, Arduino'ya sıfırlamak için elektrolitik kondansatörü zeminden koymaktır. (Elektrolitik kondansatörlerin bir tarafındaki yere giden eksi işaretinin (-) olduğuna dikkat edin.

ATTINY'yi Blink ile programlayın <

  • Arduino IDE'yi başlatın
  • Arduino'yu ekle
  • Seçilen panonun hala ATTINY85 Saati olduğundan emin olun: 8Mhz (dahili)
  • Arduino Com portunun seçili olduğunu doğrulayın.
  • Arduino Programcısını "ISP olarak Arduino" olarak ayarlayın
  • Aşağıdaki yanıp sönen çizimi kopyalayın ve Arduino ISS'ye yerleştirin. (veya GitHub'dan buradan alın:)

const int LED = 4; void setup () {// pin 4'ü başlat pinMode (LED, OUTPUT); } // döngü fonksiyonu sonsuza kadar tekrar tekrar çalışır ve void loop () {digitalWrite (LED, HIGH); // LED'i açın (YÜKSEK voltaj seviyesidir) gecikme (1000); // ikinci bir digitalWrite bekleyin (LED, DÜŞÜK); // voltajı LOW gecikmesi (1000) yaparak LED'i kapatın; // bir saniye bekle }

Yanıp sönme programını yükledikten sonra, LED saniyede bir kez yanıp sönmelidir (1000 milisaniye). Yanıp sönen ışıklar bir saniyeden uzunsa, ATTINY'de yeni bir önyükleyici yanmalısınız. (led yanıp sönmezse, onu döndürmeniz gerekebilir).

Yeni bir önyükleyici yüklemek için

  • Arduino'yu USB Kablosuyla PC'ye bağlayın
  • "Araçlar" Menüsüne tıklayın
  • Programcının hala "ISP Olarak Arduino" için ayarlandığını doğrulayın.
  • Boot Boot Loader'ı tıklayın

Adım 7: ATTiny85'i Program / Firmware ile yükleyin

Programı yükleyebilmemiz için önce FastLED kütüphanesini eklemeliyiz.

Kütüphaneyi eklemek için "Çizim" menüsüne tıklayın. Ardından "Kitaplığı Dahil Et" düğmesini tıklayın ve listenin en üstünde Kitaplığı Yönet'i seçin.

FastLED modülünü arayın ve kurun.

Şimdi dosyayı Github'dan buraya almaya hazırsınız:

Arduino IDE'de dosyayı açın, programlayıcının ISP olarak Arduino'ya ayarlandığından emin olun.

Değişiklikleri gerektiği gibi değiştirin:

#Dahil etmek #define LED_PIN 0 // WS2812B veri hattı. (yedeklilik için iki kablo). #define NUM_LEDS 28 #define BRIGHTNESS 80 #define LED_TYPE WS2812B

LED_Pin, ATTINY'de PB0'dır. LED şeridine bağlı olan veri pinidir.

NUM_LEDS, şeritteki LED'lerin sayısına ayarlanmalıdır.

LED_TYPE, kullandığınız LED Strip tipinde olmalıdır.

Donanım kesintileri

Kesinti kodunu açıklamak istedim, çünkü bu programın ilginç bir parçası. Bu işlemcilerin bir düğmeye bağlı bir pimi (PB3) vardır. Düğmeye basıldığında, programın ne yaptığını durdurmasını ve LED şeridinin renklerini değiştirmesini istiyoruz. Bu işe yarayabilir çünkü program paletler arasında dolaşır ve eğer paleti değiştirirsek program durmadan döngülenmeye devam eder.

İlk önce kesmeyi PB3'e ayarladık. Bu, bu kodla olur.

GIMSK = 0b00100000; // bit 5 açıldığında pin değişimi kesiliyor PCMSK = 0b00001000; // pimlerdeki kesmeleri aç PB3 sei (); // Global Interrupt Enable'ı ayarla

Kesinti, ISR adlı bir yönlendirme çağrısı yapar. PCMSK'da kaç tane pin belirlediğiniz önemli değil, sadece bir rutin var.

Kullandığım ISR alt yordamı, bir düğmeye her basışta ve palet değere bağlı olarak ayarlandığında bu değer artırılan bir sayaç artırır.

ISR (PCINT0_vect) {değer ++; // Artan değişken değişken anahtarı (değer) {case 1: currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; break; durum 2: currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; break; durum 3: currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; break; durum 4: SetupPurpleAndGreenPalette (); currentBlending = LINEARBLEND; break; durum 5: SetupTotallyRandomPalette (); currentBlending = LINEARBLEND; break; durum 6: SetupBlackAndWhiteStripedPalette (); currentBlending = NOBLEND; break; durum 7: SetupBlackAndWhiteStripedPalette (); currentBlending = LINEARBLEND; break; durum 8: currentPalette = CloudColors_p; currentBlending = LINEARBLEND; break; durum 9: currentPalette = PartyColors_p; currentBlending = LINEARBLEND; break; vaka 10: currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; break; durum 11: currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; break; varsayılan: değer = 0; }}

Adım 8: Kurulun Kurulması.

Bir breadboard kullanacaksanız veya bir striptiz tahtası kullanacaksanız, attiny85'in pinout'una bakmalısınız.

Bu pimler, bir şerit halinde veya bir ekmek tahtası üzerinde lehimlenirse kullanılır.

  • Pin8 sizin voltaj kaynağınızdır. Aküden 4,5 v.
  • Pin4 topraklanmış veya pillerin - tarafıdır.
  • Pin5 (PB0) ledlerin üzerindeki veri hattına gider. WS2812b, pim ve ledler arasında 470Ohm'luk bir direnç önerir.
  • Pin2 (PB3), donanım kesmemizin kurulduğu pin. Bu da toprağa 10kOhm direncine sahiptir.

Şerit tahtası kullanıyorsanız, 1/8 inç kullanmanız gerekir. Sokette lehim yapmayı daha kolay buldum, ardından pimler arasındaki bakır izini çıkardım. Pim arasındaki tüm bakırın alındığından emin olmak için bir ohm metre kullanıyorum.

  • Kartın içine 8pin sokette ilk lehim, böylece ATTINY85 çıkarılabilir ve yeniden programlanabilir.
  • 1/8 inç matkap ucu ile pimler arasındaki bakır izlerini çıkarın.
  • dirençleri ekleyin.
    • pim 5'den (PB0) 470 ohm, LED'lerde bulunan verilere kadar. WS2812b'de iki yazma çalıştırıyorum
    • 10k ohm yerden basma düğmesine basar.
    • Pilden gelen + voltabe, attiny ve butondaki PIN8’e gider

LED'leri bağlayın:

Abover diyagramında mor tel led şerit üzerindeki verilere, kırmızı tel 5V hattına gider ve siyah tel toprağa gider.

Adım 9: 3d Basılı Parçalar

Ödülümün altına koymak için düz bir tutucu yarattım, LED şeridin uyduğu bir oluk var. 3D Yazıcım 6 inçten fazla baskı yapmadığından parçaları ikiye böldüm.

Daha sonra pilleri ve devre kartını tutacak küçük bir tutucu oluşturdum. Bunlardan ikisini bastım ve aküye ve tahtaya oturdular.

Projeniz benimkinden farklı olmasına rağmen.stl dosyalarını size bir başlangıç ​​noktası olarak göndereceğim.

Temel STL dosyası

Pil tutucu STL dosyası