Popularny post etet100 Napisano Listopad 6, 2024 Popularny post Udostępnij Napisano Listopad 6, 2024 (edytowany) Rzadko które z moich dzieł nie trafia do archiwum projektów nigdy nieukończonych. W związku z tym, choć projekt nie jest ani nowatorski, ani skomplikowany, krótko go opiszę. Jest to kolejna z tysięcy wariacji na temat podświetlanych tabliczek. Kiedyś myślałem o czymś podobnym, głównie żeby pobawić się frezowaniem pleksi, ale teraz niespodziewanie pojawił się konkretny pomysł na wygląd i przeznaczenie. Na projekt miałem tydzień, z czego 4 dni poświęciłem na zastanawianie się, czy na pewno mi się chce. Wszystkie niedoróbki są skutkiem tego odwlekania w czasie. UWAGA: Zdjęcia kompletnie nie oddają efektu! Film też nie Pleksi wykonałem za pomocą zabawkowej CNC. Materiał to najtańsza marketowa pleksi, kupiona w czasach, kiedy 12,50 zł cokolwiek znaczyło. Przeprowadziłem sporo prób. Na początku próbowałem frezować wzory w postaci głębszych i mniej głębokich kieszeni. Efekt był niestety słaby, a do tego pojawiły się problemy z przywieraniem pleksi do frezu, co powodowało niszczenie obrabianych elementów. Podobno ten efekt da się znacznie ograniczyć, kupując inny rodzaj pleksi (wylewana), ale innej nie miałem. Ostatecznie postawiłem na dosyć głębokie grawerowanie. Efekt bezpośrednio po obróbce był taki sobie – wszystkie linie trzeba było ręcznie doprowadzić do porządku, usuwając "zadziory" z posklejanego tworzywa. Następnie próbowałem przywrócić powierzchniom gładkość i przezroczystość, stosując delikatne roztapianie lutownicą typu hot-air. Niestety pojawił się kolejny problem – po pewnym czasie zauważyłem w pleksi dziwne pajączki/mikropęknięcia, występujące w pobliżu grawerowanych linii. Są one niestety widoczne i nieco psują efekt końcowy. Podstawa urządzenia została wykonana techniką druku 3D. Projekt był robiony "na kolanie", ale wyszło ładnie. Materiał to PET-G, użyty głównie dlatego, że nie miałem tak ciemnego PLA. Części są połączone za pomocą śrubek/tulejek M2/M3 oraz małych śrubek samogwintujących. Nic specjalnego. Schemat i PCB zostały stworzone w KiCad 8. Płytka, o niewyobrażalnie złej jakości, była robiona dosłownie na 2 godziny przed terminem oddania urządzenia – świetny przykład na to, jak nie robić płytek. Schemat jest tak prosty, że nie wymaga żadnego komentarza. Firmware został napisany przy użyciu arduino-kompatybilnego środowiska oraz wspomnianej biblioteki FastLED. Programów świecenia jest może dziesięć. Kilka to efekty "statyczne" (po prostu świeci na jakiś kolor), reszta to proste animacje. Bałem się, że efekt będzie diskopolowy i wieśniacki, ale wyszło jednocześnie efektownie i elegancko. Program zmienia się przyciskiem umieszczonym z tyłu, a ostatni wybór jest zapisywany w pamięci trwałej. Dzięki temu po włączeniu wracamy do ulubionego trybu. #define MEGATINYCORE #include <Arduino.h> #include <FastLED.h> #include <EEPROM.h> #define NUM_LEDS 9 // PA5 (FastLED mapping!) // _FL_DEFPIN(0, 0, A); _FL_DEFPIN(1, 1, A); _FL_DEFPIN(2, 2, A); _FL_DEFPIN(3, 3, A); // _FL_DEFPIN(4, 4, A); _FL_DEFPIN(5, 5, A); _FL_DEFPIN(6, 6, A); _FL_DEFPIN(7, 7, A); // _FL_DEFPIN(8, 2, B); _FL_DEFPIN(9, 1, B); _FL_DEFPIN(10, 0, B); #define PIN 5 // ATMEL ATTINY84 / ARDUINO // // VCC 1| |14 GND // (D 0) PB0 2| |13 PA0 (D 10) AREF // (D 1) PB1 3| |12 PA1 (D 9) // (D 11) PB3 4| |11 PA2 (D 8) // PWM INT0 (D 2) PB2 5| |10 PA3 (D 7) // PWM (D 3) PA7 6| |9 PA4 (D 6) // PWM (D 4) PA6 7| |8 PA5 (D 5) PWM #define DEBUG_PIN 4 #define BTN_PIN 10 CRGBArray<NUM_LEDS> leds; void handleButton(); void modeColorWave(); void modeRed(); void modeGreen(); void modeBlue(); void modeWhite(); void modeBlinkingMono(); void modeBlinkingColors(); void modePinkWave(); typedef void(*callback)(void); callback effects[] = { modeBlinkingMono, modeColorWave, modeRed, modeGreen, modeBlue, modeWhite, modeBlinkingColors, modePinkWave, nullptr }; callback effect = effects[0]; void setup() { randomSeed(analogRead(0)); pinMode(DEBUG_PIN, OUTPUT); pinMode(BTN_PIN, INPUT_PULLUP); FastLED.addLeds<WS2812B, PIN>(leds, NUM_LEDS); } void loop() { effect(); handleButton(); } void clearAll() { FastLED.clear(); } void handleButton() { static unsigned long lastDebounceTime = 0; static bool waitForKeyRelease = false; static uint8_t mode = 255; if (mode == 255) { mode = EEPROM.read(0); if (mode >= sizeof(effects) / sizeof(effects[0])) { mode = 0; } effect = effects[mode]; return; } uint8_t state = digitalRead(BTN_PIN); if (state == HIGH) { lastDebounceTime = millis(); waitForKeyRelease = false; } if (state == LOW && !waitForKeyRelease && (millis() - lastDebounceTime) > 20) { mode++; if (effects[mode] == nullptr) { mode = 0; } EEPROM.write(0, mode); clearAll(); effect = effects[mode]; waitForKeyRelease = true; } } unsigned long lastChange = 0; uint8_t divider = 0; void modeBlinkingMono() { if (millis() - lastChange > 10) { if (divider % 3 == 0) { leds.fadeToBlackBy(1); } if (divider++ >= 20) { leds[random(0, NUM_LEDS)] = CRGB(random(100, 255), 255, 255); divider = 0; } lastChange = millis(); FastLED.show(); } } void modeBlinkingColors() { if (millis() - lastChange > 10) { if (divider % 3 == 0) { leds.fadeToBlackBy(1); } if (divider++ >= 20) { leds[random(0, NUM_LEDS)] = CHSV(random(0, 255), 255, 255); divider = 0; } lastChange = millis(); FastLED.show(); } } void modeColorWave() { if (millis() - lastChange > 20) { static uint8_t hue; for(int i = 0; i < NUM_LEDS; i++) { leds[i] = CHSV((hue + i * 10) % 255, 255, 255); } hue++; FastLED.show(); lastChange = millis(); } leds.fadeToBlackBy(1); FastLED.show(); } void modePinkWave() { static float rad = 0; if (millis() - lastChange > 20) { for(int i = 0; i < NUM_LEDS; i++) { float val = 55 + ((sin(rad + (i * 0.01)) + 1) * 100); leds[i] = CHSV(val, val, 255); } FastLED.show(); lastChange = millis(); rad += 0.01; } leds.fadeToBlackBy(1); FastLED.show(); } void modeRed() { for(int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(255, 0, 0); } FastLED.show(); } void modeGreen() { for(int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(0, 255, 0); } FastLED.show(); } void modeBlue() { for(int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(0, 0, 255); } FastLED.show(); } void modeWhite() { for(int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB(255 , 255, 255); } FastLED.show(); } I to chyba tyle. Edytowano Listopad 6, 2024 przez etet100 7
AntekBezak Listopad 12, 2024 Udostępnij Listopad 12, 2024 Dnia 6.11.2024 o 21:09, etet100 napisał: Płytka, o niewyobrażalnie złej jakości, była robiona dosłownie na 2 godziny przed terminem oddania urządzenia – świetny przykład na to, jak nie robić płytek. Oj tam, jeśli spełnia swoją funkcję to nie ma na co narzekać. Na mnie każda płytka robiona w domu robi wrażenie. Gratuluję zacnego projektu.
_LM_ Listopad 12, 2024 Udostępnij Listopad 12, 2024 Bardzo fajny efekt, kiedyś widziałem zegar zrobiony w taki sposób że wyglądało to jak nixie. LEDy podświetlały kolejne znaki wyfrezowane na poliwęglanie
etet100 Listopad 12, 2024 Autor tematu Udostępnij Listopad 12, 2024 5 godzin temu, AntekBezak napisał: Oj tam, jeśli spełnia swoją funkcję to nie ma na co narzekać. Na mnie każda płytka robiona w domu robi wrażenie. Może gdyby to była moja pierwsza płytka. Ale ja się takimi rzeczami bawię od 30 lat.
Marooned Listopad 15, 2024 Udostępnij Listopad 15, 2024 W sumie skoro masz dostęp do CNC to pytanie, czy nie mogłeś wyfrezować sobie PCB?
etet100 Listopad 15, 2024 Autor tematu Udostępnij Listopad 15, 2024 (edytowany) Frezowanie płytek wcale nie jest proste ani szybkie. Nie widzę kompletnie żadnych zalet tej technologii. Wstawiam jeszcze kilka renderów. Edytowano Listopad 15, 2024 przez etet100
Preskaler Listopad 16, 2024 Udostępnij Listopad 16, 2024 (edytowany) Frezowanie płytek "opłaca" się przy bardzo prostych, jednostkowych projektach bez scalaków. Jeden czy dwa tranzystory i do tego kilka innych elementów to można szybko wyfrezować. Przy większych projektach a w szczególności większej serii ta metoda nie ma sensu. Przykład takiego rozwiązania: Edytowano Listopad 16, 2024 przez Preskaler
etet100 Listopad 16, 2024 Autor tematu Udostępnij Listopad 16, 2024 To chyba nie o taki rodzaj frezowania chodziło. Frezować można całkiem skomplikowane płytki i one nie muszą wyglądać jak sprzed wojny. Ale zwykłym termotransferem i trawieniem przeważnie jest dużo łatwiej i dużo szybciej. Tylko moja drukarka, mimo że całkiem porządna i droga, ma problemy z pokryciem tonerem. Robią się podtrawienia i dziury.
Preskaler Listopad 16, 2024 Udostępnij Listopad 16, 2024 W Polsce druk zaczęto wprowadzać w latach 60-tych XXw. Wcześniej (w tym i przed wojną) był montaż przestrzenny polegający na lutowaniu przewodów od wyprowadzeń z cokołów lamp do elementów dyskretnych ew. poprzez łączówki. Niby pierwsze druki były zastosowane już pod koniec lat 50-tych ale były to tylko nieliczne przypadki. Zastosowano je najpierw w tranzystorowych, turystycznych OR. Pierwsze OTV były produkowane od lat 60-tych XXw. Na świecie były stosowane wcześniej tylko w innej formie. Od roku 1936 w USA natryskiwano ścieżki metalowe na bakelit. W czasie II WŚ Niemcy stosowali już PCB. 1
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »