Spisu treści:

Zegar Space Invaders (z ograniczonym budżetem!): 6 kroków (ze zdjęciami)
Zegar Space Invaders (z ograniczonym budżetem!): 6 kroków (ze zdjęciami)

Wideo: Zegar Space Invaders (z ograniczonym budżetem!): 6 kroków (ze zdjęciami)

Wideo: Zegar Space Invaders (z ograniczonym budżetem!): 6 kroków (ze zdjęciami)
Wideo: Formation Z / Soccer / Championship Lode Runner / Space Invaders retrospective: NES Works Gaiden #29 2024, Lipiec
Anonim
Image
Image
Zbierz części
Zbierz części

Ostatnio zobaczyłem fajny build GeckoDiode i od razu chciałem go zbudować sam. Instructable to Space Invaders Desktop Clock i polecam rzucić okiem na to po przeczytaniu tego.

Projekt został zbudowany prawie wyłącznie z części pochodzących z Adafruit z obudową wydrukowaną w 3D i wycinaną laserowo deską rozdzielczą. Dodanie wszystkiego do kosztów budowy staje się bardzo kosztowne! (około 100 GBP lub więcej). Problem polega na tym, że jeśli nie masz drukarki 3D, musisz zapłacić, aby wydrukować swój model, lub kupić brzydką obudowę w serwisie eBay, która często jest trochę za mała, za wąska, za krótka lub odwrotnie.

Większość moich konstrukcji musi być wykonywana na budżet hobbystów, a obudowy zawsze są najdroższą częścią. Postanowiłem więc zbudować ten sam zegar, ale z przyzwoitym budżetem.

Jeśli lubisz patrzeć na dziwne zegary, sprawdź mój Steampunk Voltmeter Clock, który wykorzystuje te same materiały do budowy obudowy:-)

Krok 1: Zbierz części

Aby wykonać ten projekt, będziesz potrzebować następujących elementów. Pamiętaj o materiałach na obudowę, będziesz mieć DUŻO resztek, które możesz wykorzystać w innych projektach (co sprawia, że koszt przyszłych konstrukcji jest jeszcze tańszy). Przesłałem pliki PDF z materiałami, których potrzebujesz, jeśli chcesz sprawdzić cenę itp. W serwisie eBay.

Narzędzia (zakładam, że już je masz)

  • Lutownica
  • Lutować
  • Pompa lutownicza (jeśli pomylisz się i musisz usunąć lut)
  • Pistolet na gorący klej
  • Gorący klej w sztyfcie
  • Nóż rzemieślniczy (tzw. nóż Stanley)
  • Linijka / taśma pomiarowa / Suwmiarka
  • Wiertarka akumulatorowa + wiertła (1 mm do 13 mm)
  • Obrotowe narzędzie wielofunkcyjne z tarczą tnącą (vel Dremel)
  • Płyn czyszczący, taki jak alkohol izopropylowy (taniej wody po goleniu też się sprawdza)
  • Maska ochronna (używana podczas malowania natryskowego)

Elektronika (Koszt elektroniki = 13,05 GBP)

Niektóre z nich miałem za darmo. Stare zabawki elektroniczne mają w środku te ładne głośniki Mylar, jeśli je rozłożysz. Kiedy tam jesteś, prawdopodobnie możesz też dostać beczkę DC i przycisk.

  • Kable Dupont / Jumper - £0.99
  • DS1307 Moduł zegara czasu rzeczywistego - 0,99 GBP (polecam zakup DS3231, jeśli jest dostępny)
  • Arduino nano + kabel usb - £2.23
  • 8-omowy głośnik Mylar - 0,99 £
  • Przycisk chwilowy SPST - £1,49
  • Gniazdo lufy DC 5,5 mm - 1,26 £
  • Zasilanie 5V, 0,5A DC - £2.83
  • MAX7219 Wyświetlacz z matrycą punktową - 3,76 £

Obudowa (koszt materiałów obudowy = 17,19 GBP)

  • Kwadratowa rura spustowa 60 mm - 5,99 GBP (będziesz tego DUŻO na więcej projektów)
  • Czarna farba w sprayu - £4.85
  • Czarny PVC (płyta piankowa) - £2.99
  • Super klej - £0.99
  • Zaślepki 60mm - £2.37

Całkowity koszt = 30,24 GBP:-) ……..na dzień dzisiejszy jest to równowartość 38 USD dla wszystkich czytelników międzynarodowych.

Lubię pracować z kwadratową rurą PVC. Są łatwe do wiercenia, cięcia, malowania, a ja użyłem jednego do mojego zegara Steampunk.

Krok 2: Przygotuj rurę spustową

Przygotuj rurę spustową
Przygotuj rurę spustową

Zaznacz, gdzie chcesz umieścić rzeczy

To było takie proste. Nie użyłem niczego wymyślnego. Najpierw przyciąłem piłą do metalu długość 2,5 m do rozsądnego rozmiaru dla mojej ławki w domu (około 30 cm). Później przyciąłem to dremelem, aby krawędzie były ładne i proste. Następnie położyłem elementy na powierzchni rury i użyłem trwałego rynku, aby zaznaczyć, gdzie chcę wiercić i ciąć. Śledziłem zewnętrzną stronę matrycy LED i użyłem obrotowego narzędzia wielofunkcyjnego, aby wyciąć kwadratowy otwór, aby pasował do siebie. Za pomocą suwmiarki cyfrowej zmierzyłem średnicę przycisku i lufy DC, aby wyciąć odpowiednie otwory z tyłu i na górze.

Wytnij ramkę

Mam mnóstwo płyt z pianki PCV ułożonej z poprzednich projektów. Świetnie nadają się do montowania obwodów w obudowach, używania ich do mieszania na nich żywic epoksydowych i tworzenia innych bitów i bobów. Weź kawałek formatu A4 lub A5 i wytnij kwadratową ramkę lub ramkę o średnicy 5 mm, aby obramować matrycę LED. To ukryje wszelkie krzywe końce, które zrobiłeś podczas wycinania kwadratowego otworu na matrycę. W tym celu narysowałem mały szablon w Inkscape i wydrukowałem go (załączony plik SVG). Następnie przykleiłem go taśmą maskującą do płyty piankowej i ostrożnie wyciąłem wokół niej nożem rzemieślniczym. Trudno jest zrobić to dobrze, zalecam najpierw wyciąć wnętrze, a potem zewnętrzną.

Pomaluj wszystko

Po wywierceniu i wycięciu wszystkich otworów usuń wszelkie zadziory. Wyczyść powierzchnie chusteczkami nasączonymi alkoholem, aby usunąć kurz lub zanieczyszczenia (lub tanim płynem po goleniu, jeśli nie masz IPA). Spróbować rozpylać w dobrze wentylowanym pomieszczeniu i używać maski, jeśli to możliwe. Zrobiłem to na zewnątrz z tekturą na podłodze, ale to nie jest idealne, nawet niewielki powiew może spowodować, że farba wróci na twoją twarz. Zachowaj ostrożność i w miarę możliwości noś sprzęt ochronny.

Spryskaj rurę, ramkę i zaślepki, aby wszystkie miały ten sam kolor, a następnie pozostaw do wyschnięcia na kilka godzin.

Krok 3: Zaprogramuj Arduino

Zaprogramuj Arduino
Zaprogramuj Arduino

Trochę informacji o kodzie

Podziękowania dla GeckoDiode, ponieważ wziąłem jego kod i zmodyfikowałem go do pracy z układem MAX7219. Wersja Adafruit wykorzystuje magistralę I2C, a MAX używa magistrali SPI. Do tego wykorzystałem bibliotekę MaxMatrix, którą pobrałem i zainstalowałem w Arduino IDE. Jeśli chcesz dowiedzieć się więcej na temat MaxMatrix i zasad działania matrycy LED, na stronie HowToMechatronics.com znajduje się bardzo krótki samouczek. Matryca LED składa się wyłącznie z jednego koloru diod LED, a nie z wielokolorowego wyświetlacza.

Jedną z moich frustracji było to, że NIE ma jasnych definicji funkcji dla biblioteki i jakie argumenty należy przekazać do każdej z nich. Na szczęście, metodą prób i błędów, udało mi się dowiedzieć, co robi, i ostatecznie nie było trudno sprawić, by działał poprawnie. Pierwszą rzeczą do zrozumienia jest to, że musisz zdefiniować, ile modułów 8x8 znajduje się w twojej macierzy. W moim kodzie jest to zapisane w liczbie całkowitej zwanej „modułami” w następujący sposób:

"int moduły = 4;"

Jest to LICZBA modułów 8x8, które połączyłeś ze sobą na swoim wyświetlaczu. Nie liczba diod LED ani pin, którego używasz do wysyłania danych. Następną rzeczą do zapamiętania jest to, że jeśli twój „sprite” lub cokolwiek obejmuje wszystkie cztery macierze, tablica bajtów musi być zdefiniowana w następujący sposób:

"byte text_start_bmp = {32, 8,…*niektóre dane bajtowe*…};"

Liczby wskazują ilość wierszy i kolumn w macierzy. W tym przypadku bajt o nazwie „text_start_bmp” jest wyświetlany w 32 kolumnach i 8 wierszach. Liczby są wyświetlane tylko na jednej matrycy 8x8, więc minuta numer 10 wygląda tak:

"bajt minut_dziesięć_bmp = {8, 8,…*niektóre dane bajtowe*…};"

Najeźdźcy pokrywają dwie macierze, więc bajt otrzyma 16, 8 w danych bajtowych.

Inną rzeczą, która mnie zaskoczyła, było umiejscowienie danych duszka. Możesz poprosić Arduino o wyświetlenie duszka w innej pozycji X/Y na matrycy niż domyślna pozycja startowa. Kod wygląda tak dla minuty zero:

"matrix.writeSprite(8, 0, minuta_zero_bmp);"

Jedna liczba to korekta X, a druga to Y. Nie pamiętam teraz, która to która, ale jeśli chcesz przesunąć duszka w górę lub w dół o 1 wiersz lub kolumnę, po prostu zwiększ liczbę o dodatnią lub ujemną. Wystarczająco proste dla matrycy 8x8, ale gdy twój duszek obejmuje więcej niż jedną matrycę, musisz odpowiednio ustawić pozycję wyjściową. Sprite „POP” jest pokazany poniżej:

"matrix.writeSprite(16, 0, najeźdźca_pop_bmp);"

Zauważ teraz, że pozycja wyjściowa to 16, a nie 8? Tutaj kod wskazuje, że duszek jest wyświetlany od lewej do prawej od pozycji wiersza/kolumny 16. Uważa dwa wyświetlacze 8x8 za jeden wyświetlacz 16x8, mimo że jest ich 4! Dlatego ważne jest, aby zastanowić się, ile ekranów zostanie wyświetlonych w poprzek i odpowiednio zwymiarować tablicę bajtów każdego duszka. W przeciwnym razie będziesz miał kilka bardzo interesujących duszków!

DS1307 RTC

Chociaż DS1307 działa dobrze z biblioteką Adafruit RTClib.h, nie można ręcznie ustawić czasu, co jest tylko uciążliwe. Po prostu poszedłem z tym, ponieważ oznaczało to mniej kodu do zmiany. DS1307 ustawia czas na podstawie czasu i daty skompilowania kodu z czasu komputera. Zamiast tego dowiedz się, jak korzystać z biblioteki DS3231 i ustaw ją raz na jedną lub dwie minuty w przyszłości. Ma również mniej „dryfu”, dzięki czemu z czasem lepiej utrzymuje czas. Oba moduły używają magistrali I2C i wierzę, że DS3231 może być używany z RTClib.h, jeśli chcesz go nadal używać.

Prześlij kod

Gdy będziesz zadowolony z kodu, prześlij go do Arduino. Załączam mój szkic Arduino do rozważenia.

Krok 4: Montaż elektroniki

Montaż elektroniki
Montaż elektroniki

Podczas wgrywania kodu polecam najpierw zmontować elektronikę za pomocą przewodów dupontowych/zworkowych na płytce stykowej, więc po przesłaniu kodu wiesz, że wszystko działa zgodnie z przeznaczeniem. Pozwala to rozwiązać wszelkie problemy z wyświetlaniem sprite'ów itp. przed rozpoczęciem klejenia i przyklejania. W moim kodzie widać, że używam cyfrowych pinów 4, 5, 6, 7, 9, ale w razie potrzeby możesz je zmienić. Może być konieczne przylutowanie kabli do przycisku, gniazda prądu stałego i głośnika, ale większość z nich to złącza typu push-fit.

Gdy będziesz zadowolony, że elektronika działa zgodnie z przeznaczeniem, powinieneś rozważyć lutowanie połączeń. Możesz to zrobić za pomocą miedzianej stripboard/veroboard, ale dla małej ilości komponentów możesz przylutować bezpośrednio do pinów Arduino. Będzie wyglądać jak gniazdo szczurów, ale i tak nikt nie zajrzy do środka obudowy po jej złożeniu, tylko upewnij się, że wszystkie metalowe części są posegregowane, nie chcesz, aby w obudowie coś się zwarło.

Sprawiłem, że przycisk działa, gdy pin „mainButton” jest wyciągnięty nisko. Odkryłem, że Arduino rozpoznaje fałszywe naciśnięcie przycisku, gdy pływająca elektronika się na nim osadzi. Użycie rezystora pulldown 10K na przycisku i ustawienie pinu na „INPUT_PULLUP” rozwiązało ten problem.

W załączniku znajduje się schemat w formacie PDF i PNG, dzięki czemu wiesz, gdzie podłączyć piny.

Krok 5: Zamontuj elektronikę i zbliż się

Zamontuj elektronikę i zbliż się
Zamontuj elektronikę i zbliż się
Zamontuj elektronikę i zbliż się
Zamontuj elektronikę i zbliż się

Do mojego zegara montowałem elektronikę na gorący klej, ale uważaj, aby nie nałożyć za dużo (elektronika nie lubi być zbyt długo rozgrzewana). Użyłem małej kropli super kleju nakropionej wokół ramki i przycisnąłem ją do przodu. Wykończyłem obudowę, wciskając zaślepki na każdym końcu. Oczywiście możesz przykleić zaślepki, aby całkowicie zamknąć zespół, ale pozostawiłem jedną stronę otwartą, abym nadal mógł uzyskać dostęp do portu USB arduino, aby zresetować datę i godzinę w przyszłości.

Krok 6: Ciesz się

Cieszyć się
Cieszyć się
Cieszyć się
Cieszyć się

Ogólnie jestem zadowolony z tego, jak to wyszło, biorąc pod uwagę, że to tylko rura rynnowa i farba w sprayu. Mam nadzieję, że Ci się spodoba i daj mi znać, czy możesz wymyślić jakieś fajne ulepszenia, które można dodać. Chciałbym wiedzieć, czy ktoś może to zrobić taniej lub czy istnieje inny oszczędny sposób wykonania obudowy, który mogę wypróbować w moim następnym projekcie.

Zalecana: