Mündəricat:

Dalğıc Dəbilqəsi Touch Lampası: 5 addım
Dalğıc Dəbilqəsi Touch Lampası: 5 addım

Video: Dalğıc Dəbilqəsi Touch Lampası: 5 addım

Video: Dalğıc Dəbilqəsi Touch Lampası: 5 addım
Video: CS50 2013 - Week 4 2024, Noyabr
Anonim
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası
Dalğıc Dəbilqəsi Toxunma Lambası

Bu dərslikdə

Sizə lazım olacaq

  1. Dalğıc dəbilqəsi və ya ekvivalenti
  2. Neopixel uyğun LED üzük (38 LED ilə bir üzük istifadə etdim)
  3. Wemos ESP32 lövhəsi (və ya ekvivalenti)
  4. 3D printer

Addım 1: Bu hissələri çap edin

Fərqli bir dalğıc dəbilqəsi istifadə edirsinizsə, bu hissələrin uyğunlaşması lazım ola bilər, məndə olanın olduqca yaygın olduğunu öyrəndim.

Addım 2: Kodu yükləyin

Ssid və şifrənizi kodu daxil edin və sonra lövhənizə yükləyin. Bu, layihə toplandıqdan sonra OTA -nın yeni kod yükləməsinə icazə vermək üçün var. Https://github.com/Makuna/NeoPixelBus burada mövcud olan Makuna by NeoPixelBus yükləməlisiniz Bu lövhədən istifadə etmək üçün ESP32 lövhə təriflərini arduino mühitinə də qurmalısınız.

// Wifi Jazz #include #include #include #include bool wifi_timout = 0; const char* ssid = "SSID"; const char* parol = "Şifrə"; // Neopixel caz #include const uint16_t PixelCount = 38; const uint8_t PixelPin = 19; int colorSaturation = 50; int Parlaqlıq = 50; int R = 0; int G = 0; int B = 0; int Pulse = 1600; // Pulsasiya arasındakı vaxt yarısı RgbColor black (0); // Button Jazz float Button1_total = 0; int hamarlaşdırma = 50; const int debounce = 5; float Button1 [çıxarmaq]; bool PWR = 0; NeoPixelBus üzüyü (PixelCount, PixelPin); void setup () {Serial.begin (115200); Serial.println ("Önyükləmə"); WiFi rejimi (WIFI_STA); WiFi.begin (ssid, parol); while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {Serial.println ("Bağlantı alınmadı!"); gecikmə (5000); //ESP.restart (); } OTA_init (); touch_pad_init (); touchSetCycles (0x6000, 0x6000); // touch_pad_set_cnt_mode (0, TOUCH_PAD_SLOPE_7, TOUCH_PAD_TIE_OPT_HIGH); ring. Begin (); üzük. Şou (); } void loop () {if (millis () <600000) {ArduinoOTA.handle ();} if if (wifi_timout == 0) {ArduinoOTA.end (); wifi_timout = 1; WiFi rejimi (WIFI_OFF); btStop (); } if (button1_capture () == 1) {ring. ClearTo (black); ring. Show (); PWR =! PWR; } if (millis () <1500) {PWR = 0;} if (ring. CanShow () && PWR == 1) {Light (0);} delay (10); } void OTA_init () {ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) type = "sketch"; else // U_SPIFFS type = "filesystem"; // NOTE: if SPIFFS -in yenilənməsi SPIFFS.end () Serial.println ("Güncellemeye başla" + növü);}).onEnd ( () {Serial.println ("\ nİnd");}) istifadə edərək SPIFFS -i çıxarmaq üçün bir yer olardı..onProgress ( (imzasız int gedişi, imzasız int cəmi) {Serial.printf ("İrəliləyiş:%u %% / r", (irəliləyiş / (cəmi / 100)));}).onError ( (ota_error_t səhv) {Serial.printf ("Hata [%u]:", səhv); əgər (səhv == OTA_AUTH_ERROR) Serial.println ("Doğrulama Başarısız"); başqa halda (səhv == OTA_BEGIN_ERROR) Serial.println ("Başlayın Başarısız "); başqa halda (səhv == OTA_CONNECT_ERROR) Serial.println (" Bağlanmadı "); başqa halda (səhv == OTA_RECEIVE_ERROR) Serial.println (" Alınmadı "); başqa halda (səhv == OTA_END_ERROR) Seri. println ("Bitmədi");}); ArduinoOTA.begin (); Serial.println ("Hazır"); Serial.print ("IP ünvanı:"); Serial.println (WiFi.localIP ()); } int button1_capture () {for (int i = 0; i <(debounce-1); i ++) {Button1 = Button1 [i+1]; } Button1 [debounce-1] = (touchRead (T0)); float cərəyanı = MaxArray (Button1); float Button1_smooth = Button1_total/hamarlaşdırma; // float cari = AveArray (Button1); Serial.print (Button1_smooth); Serial.print (""); Serial.print (cari); Serial.print (""); Serial.println (Button1 [debounce-1]); əgər (cari <(0.85*Button1_smooth)) {Button1_total = 0; // geri dönmə kimi işləyir 1; } başqa {Button1_total = cari +Button1_total -Button1_smooth; } 0 qaytar; } float MaxArray (float MaxMe ) {float mxm = MaxMe [0]; float mnm = MaxMe [0]; for (int i = 0; imxm) {mxm = MaxMe ; }} mxm qaytar; } float AveArray (float AveMe ) {float cəmi = 0; float ave = 0; üçün (int i = 0; i

Addım 3: Montaj

Məclis
Məclis

Lövhəni göstərildiyi kimi bağlayın və işlədiyini yoxlayın.

'Tutacağa' bağlı şəbəkə toxunma düyməsi kimi çıxış edəcək. Lövhəmdə ESP32 T0 D4 -ə bağlıdır. Fərqli bir lövhə istifadə edərkən bunu yoxlamaq lazımdır.

Bu pinə çılpaq bir tel bağlamaq da eyni davranacaq. İki dəfə basmaq gecə işığı kimi alovlanacaq. 3 dəfə bir az daha parlaq və 4 dəfə ağ.

Addım 4: Parçaları dəbilqəyə yığın

Parçaları dəbilqəyə yığın
Parçaları dəbilqəyə yığın
Parçaları dəbilqəyə yığın
Parçaları dəbilqəyə yığın

Lampanı yandırmaq üçün dəbilqənin sapından toxunma sensoru kimi istifadə edəcəyik. Bu, kaskanın qalan hissəsindən izolyasiya edilməlidir. Sapı çıxarın və təmas üzünü izolyasiya lenti ilə örtün. Qarışdırmaq üçün qəhvəyi lent istifadə etdim, şəkildə mavi rənglə vurğulanmışdır. Delikləri vintlərin boş vəziyyətdə olması üçün qazın və digər tərəfdən bəzi plastik yuyucularla yenidən yığın.

Qıvrım bağlayıcısı istifadə edərək, düymə ucunu tutacaq vintlərindən birinə bağlayın.

Üzən bir enerji təchizatı (demək olar ki, hamısı) istifadə etməyi planlaşdırırsınızsa, eyni şəkildə dəbilqənin gövdəsinə bir GND pin bağlamalı olacaqsınız. İndi lampanı yandırmaq üçün bir əlinizi dəbilqəyə qoyun və digərinə tutacağa toxunun.

Addım 5: Gücü bağlayın

Image
Image
Gücü qoşun
Gücü qoşun

Mikro USB kəsmə lövhəsini 3D çaplı bölmə konnektoruna vidalayın və sonra qozla sabitləyin.

Bunun əvəzinə hər hansı bir 5V DC enerji təchizatı istifadə edilə bilər, ancaq usb şarj cihazları evimdə çoxdur. Köhnə bir fleksiyanı təqlid etmək və görünüşü tamamlamaq üçün örgülü usb kabelindən istifadə etdim.

İş budur.

Əlavə rəngləri, effektləri və ya taymerləri sınamaq üçün kodu dəyişdirmək istəyirsinizsə, hər dəfə qoşulduqda ilk 10 dəqiqədə arduino OTA cihazı olaraq mövcud olacaq. Bu, enerjiyə qənaət etmək üçün sönəcək.

Tövsiyə: