Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'attiny85'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 5 wyników

  1. Miniaturowy Tetris z pięcioma przyciskami, głośniczkiem Piezo i ekranem Oled 128×64. To wszystko przy zaledwie sześciu dostępnych GPIO jednodolarowego Digisparka/ATtiny85. Moja wersja kodu dodaje kilka ulepszeń, które znacząco zmieniają odbiór całej gry 🙂 (opisane niżej), a koszt budowy całego zestawu wynosi około 15 zł. ATtiny Tetris Gold Multi Button obsługuje narastający poziom trudności (przyspieszanie opadania wraz z usuwaniem kolejnych linii), informację o klocku pojawiającym się w kolejnej turze, podpowiedź o pozycji klocka w dolnej partii planszy, pełną pseudo-losowość doboru klocków, dźwięki i temat muzyczny z oryginalnej gry. Poniżej mój filmik prezentujący ten układ w działaniu: W filmie można zobaczyć krótkie urywki z rozgrywki, proces instalacji szkicu w urządzeniu oraz pełny, pięciominutowy gameplay. Sprzęt Jakiś czas temu zainteresowały mnie klasyczne gry retro dla ATtiny85, ale w repo Attiny-Arduino-Games wszystkie były zaledwie dwu-przyciskowe. Tetris wymagał nieco więcej logiki, ale i tak obsługiwało się go przez naciskanie lub przytrzymywanie jednego z tylko dwóch przycisków, co generowało błędy i nie było zbyt wygodne. Z czasem jednak pojawiła się w repo wersja Tetris Multi Button, w której rozwiązano ten problem wykorzystując odpowiednią kombinację rezystorów i przycisków, dzięki czemu podłączono trzy przyciski pod jeden pin mikrokontrolera. Nie posiadam czystego ATtiny85, ale miałem na stanie Digisparka z tym chipem i postanowiłem złożyć to urządzenie. To chyba pierwsze nagranie wideo takiego zestawu - w sieci brak w sieci brak filmów i opisów wykonania pełnej, pięcio-przyciskowej wersji. Żeby się nie pogubić podczas montażu 🙂 , korzystając z rozpiski pinów Digisparka i ATtiny85 przeniosłem dostarczony ze sketchem poniższy schemat: na lekko chaotyczną wersję graficzną dla stykowej płytki prototypowej i Digisparka zasilanego baterią 9V: a przy okazji też dla czystego ATtiny85 zasilanego baterią 3V: Poszczególne przyciski odpowiadają za: start nowej gry lub restart aktualnie rozgrywanej, włączenie/wyłączenie układu, obrót, przyspieszenie opadania, przesunięcie w lewo, przesunięcie w prawo. Przytrzymanie przycisku opadania i włączenie restartu gry aktywuje tryb ducha, a przytrzymanie przycisku opadania razem z przyciskiem obrotu podczas restartu ustawia trudny poziom gry, wypełniając dodatkowo błędnie klockami część planszy. Po aktywacji tych opcji grę należy uruchomić przyciskiem przyspieszonego opadania. Wersja na czystym ATtiny85 potrzebuje tylko 3V, bo sketch jest pisany dla obniżonego do 8MHz taktowania zegara. Wersję dla Digisparka zasilam poprzez pin VIN 9V baterią i przy takim poborze wystarczy jej na baaardzo długo. Wymagane do działania 5V przenoszę dodatkowym, pustym goldpinem na lewą stronę płytki prototypowej za pomocą dziesięciocentymetrowego przewodu połączeniowego żeńsko-męskiego. Po zlutowaniu powyższego układu w połączeniu z gołym ATtiny85 i po ubraniu go w miniaturowy brelok do kluczy, koszt (bez baterii) zamknąłby się poniżej 15 złotych. Na Aliexpress ATtiny85 kosztuje 0,80$, ekran Oled 128×64 1.80$, mały piezo buzzer 0,17$, a reszta części to już koszty groszowe. Tym sposobem otrzymujemy pełną grę sterowaną w identyczny sposób, jak w wielkich automatach Arcade lata temu, a do tego zasilaną malutką baterią 3V. Do zestawu zamiast białego ekranu można wybrać ekran niebieski lub żółto-niebieski, ale ponieważ ten ostatni jest dzielony na dwie różne części z odstępem, to nie prezentuje się zbyt atrakcyjnie (co widać na powyższym filmie) i polecam jednokolorowy odpowiednik. Potencjalny brelok mógłby wyglądać tak, jak na obrazku poniżej: Kod Zmiany w kodzie, których dokonałem, nie są duże, ale znaczące w odbiorze gry. Poniżej różnice między moją wersją, dostępną na GitHubie, a oryginałem gry dla ATtiny85: Dodałem losowość doboru klocków – domyślnie ATtiny Tetris generuje tę samą sekwencję klocków w każdej nowej grze, bo użyta funkcja random korzysta w kółko z tej samej tablicy liczb losowych. Programiści nie aktywowali randomSeed, ponieważ wszystkie piny w układzie są już podłączone. Moja wersja przesuwa tablicę liczb pseudo-losowych po każdym rozpoczęciu gry inkrementując seed do EEPROMu i aktywując w ten sposób pełną pseudolosowość doboru klocków (powtarzają się tylko pierwsze dwa). Grając w oryginalną wersję, do piątej linii miałem już ustalony optymalny schemat położenia klocków, przez co gra stawała się nudna. Teraz jest już poprawnie i mam świadomość, że wykorzystanie EEPROMu w randomSeedowaniu ograniczy liczbę rozgrywek do zaledwie 99000 😉 (podana liczba uwzględnia już obecny w kodzie zapis najlepszych wyników również do EEPROMu). Na starcie gry dodałem fragment tematu muzycznego z oryginalnej gry Tetris z 1986 roku – domyślnie brak jakiejkolwiek muzyki w grze. Po wybraniu trybu ducha temat muzyczny jest nieco dłuższy. Dodałem dźwięk opadającego klocka (tylko podczas swobodnego spadania) oraz inny dźwięk dla klocka, który kończy opadanie. Domyślnie dźwięki w tej grze pojawiają się sporadycznie – tylko podczas usunięcia pełnej linii klocków oraz na zakończenie gry. Naprawiłem część błędnie wyświetlanych fontów na ekranie startowym Domyślnie wyłączyłem tryb ducha, który wyświetla podpowiedź o docelowej pozycji klocka. Tryb ducha można aktywować sposobem opisanym powyżej pod konfiguracją przycisków. Ze swoimi zmianami musiałem się zmieścić w sześciu procentach wolnej pamięci. Obecnie pozostaje już tylko 1% wolnego 🙂 Projekcik jest dość interesujący i co najważniejsze, w pełni użyteczny, więc możliwe, że znajdą się osoby chcące zbudować taki układzik. Jako dodatek zamieszczam więc proces instalacji. Instalacja Kod zabiera blisko 100% pamięci ATtiny85, więc na Digisparku nie mieści się bootloader i nie można uploadować sketcha poprzez USB – należy więc skompilować hexa i wgrać go za pomocą programatora ISP. Jako programatora użyłem Arduino wg poniższego schematu: Na Arduino trzeba wgrać dostępny w przykładach Arduino IDE sketch ArduinoISP. Aby poprawnie skompilować tę wersję dla Digisparka należy w Arduino IDE zastąpić dodatkowy adres URL dla menadżera płytek od Digistump JSONem dla czystego ATtiny85, a następnie wybrać płytkę ATtiny25/45/85, procesor ATtiny85, zegar Internal 8MHz. Następnie z menu szkic eksportować skompilowany program, który zostanie wtedy umieszczony w katalogu źródła sketcha. Na koniec zostaje już tylko wgranie hexa na Digisparka poprzez Arduino programem avrdude. Poniżej przykładowe polecenie kopiujące (z fusami) wykonane na macOS, ale w innych systemach wygląda podobnie: /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -pattiny85 -cstk500v1 -P/dev/cu.usbmodem14101 -b19200 -Uflash:w:/Users/username/Documents/ATtiny-Tetris-Gold/ATtiny-Tetris-Gold.ino.tiny8.hex -U lfuse:w:0xF1:m -U hfuse:w:0xD5:m -U efuse:w:0xFE:m Jak przebiega taki proces można obejrzeć na końcu powyższego filmiku. Poniżej też zdjęcie "programatora" i układu obok siebie. W filmie i na zdjęciach do włączania układu korzystam z przełącznika suwakowego SS22T25, ale lepiej sprawdził się przełącznik prosty ESP1010. Napięcia na przyciskach są istotne i podczas gry trzeba uważać aby nie dotykać rezystorów 🙂 Ten problem wyeliminuje się po zlutowaniu układu. Najlepszy wynik gry jest również zapisywany w EEPROMie. Ponieważ głośniczek jest podłączony do pierwszego pinu Digisparka, to dodatkowo otrzymujemy LEDowe sygnały świetlne w momencie odtwarzania dźwięków. Po zakończeniu gry Tetris natychmiast przechodzi w tryb uśpienia z minimalnym poborem prądu, jednak do Digisparka dodałem przełącznik włączający/wyłączający zasilanie dla układu – wersja opierająca się wyłącznie na ATtiny85 nie wymaga wykonania tego kroku. Gra chodzi bardzo płynnie, co widać na powyższym filmie, gdy przytrzymuję przycisk przyspieszonego opadania dla kilku klocków pod rząd. Miniaturowy ATtiny Tetris Gold jest bardzo regrywalny (nie nudzi się) i to niesamowite, że udało się go upchnąć na tanim ATtiny85 przy zachowaniu tak dużej funkcjonalności. Serdecznie polecam montaż tego prostego układu. Powiększenia układów i trochę więcej informacji można znaleźć na moim blogu: http://jm.iq.pl/tetris
  2. Cześć, Szukam odpowiedzi na następujące pytanie. Czy jest możliwe użycie gniazda kart microSD wbudowanego w wyświetlacz do zapisu i odczytu danych? Chodzi mi przykładowo o wyświetlacz Adafruit 2050 i Arduino albo ATtiny (na razie skupiam się na arduino). Konkretny przykład wygląda następująco. Do Arduino podpięte są jakieś czujniki. Arduino dostaje sygnały i ma za zadanie je przetworzyć, wyświetlić coś na wyświetlaczu i dokonać zapisu danych na karcie. Jeśli da się to zrobić to proszę o pomoc w zaimplementowaniu tego Pozdrawiam
  3. Cześć, przedstawiam projekt inspirowany życiem 🙂 Często wietrzymy w domu i nikt nie pamięta żeby zamknąć okno balkonowe. Akurat w ciągu dnia siedzę pod balkonem i zawsze mi zimno. Na zmianę nawyków nie liczę 🙂 Wpadłem za to na pomysł żeby zrobić z tego co mam pod ręką małe urządzenie na okno, które będzie przypominać że czas skończyć wietrzenie. Elektronika Chciałem zrobić coś małego, co: będzie wisieć na oknie, da się zasilać z baterii, będzie pokazywać ile jeszcze zostało, będzie wkurzające kiedy zacznie się przypominanie. Wolałem skorzystać z płytki, bo wolę programować urządzenia przez USB. Z małych płytek miałem tylko klona Digispark Attiny 85 i takiego użyłem. Buzzer był oczywistym wyborem do sygnalizacji, miałem ten z zestawu do techniki cyfrowej o najgłośniejszej częstotliwości ~4 kHz. Kontrakron na okno wybrałem po prostu najmniejszy, dodałem do niego kondensator 100nF i rezystor żeby przy zamkniętym oknie schodziło mniej energii. Niewiele pomogło, ale cóż.. Pojawił się problem z sygnalizacją. Płytka Attiny85 ma tylko 6 pinów, dodatkowo jeden jest używany jako reset i nie chciałem go używać. Buzzer plus kontaktron zabierają dwa piny i zostaję z trzema. To trochę mało do pokazywania postępu - jeśli wietrzenie ma trwać 30 minut to ciężko pokazać ile już minęło. Wymyśliłem żeby skorzystać z układu CD4017B, który liczy do dziesięciu i aktywuje po jednym pinie w zależności od wartości. Podłączyłem do niego wykres LEDowy i już mam wyświetlacz, który aktywuje wybrany pasek. Udało się zmieścić w trzech pinach (clock, reset i odłączane zasilanie z attiny85). To ma też taki plus, że wszystkie diody obsługuje jeden rezystor, a jak się okaże później i tak zabrakło miejsca 🙂 Na attiny85 piny P3 i P4 są też używane jako szyna danych USB i nie mogłem programować płytki kiedy były podłączone. Dodałem do nich włącznik (dokładnie ten - jest fajny bo można nim włączać dwie rzeczy po obu stronach. Oprócz tego włącznik do zasilania i finalnie skończyłem z takim schematem: Tak wyglądał pierwszy prototyp: 10 LEDów nie mieści się na płytce, więc zrobiłem taką małą macierz z czterech czerwonych diod. Dodałem też dwa przyciski do scalaka żeby sprawdzić "na sucho" czy wszystko dobrze podłączyłem. Oprogramowanie Do CD4017B napisałem prostą klasę, która w gruncie rzeczy po prostu wysyła impulsy góra-dół. Wyświetlacz można wyłączać odłączając zasilanie na jednym pinie - uznałem, że skoro świeci się tylko jedna dioda na raz to będzie działać. I działa. Do tego dodałem prostą klasę korzystającą z arduino-timer, która podnosi pasek o jeden co 10% oczekiwania. Buzzer jest bardzo standardowy - również skorzystałem z biblioteki arduino-timer, która włącza dźwięk funkcją tone co określony czas. Kontaktron jest obsługiwany przerwaniem sprzętowym (Digispark ma jedno). W oczekiwaniu na otwarcie okna płytka miała przechodzić w stan uśpienia. Niestety działa to tylko na Arduino Nano i Digispark nie wybudza płytki po przerwaniu, więc po prostu skorzystałem z delay - w przypadku otwarcia okna kilka-kilkanaście dodatkowych sekund opóźnienia nie robi różnicy. Na najwyższym poziomie oprogramowanie to prosta maszyna stanów - po otwarciu okna uruchamia licznik i zaczyna zliczanie, a kiedy skończy się zliczanie uruchamia buzzer. Cały kod jest dostępny w repozytorium: https://github.com/kantoniak/airing-scheduler Sprawdziłem na prototypie, że diody ładnie się palą (jak na zdjęciu poniżej) i przeszedłem do składania. Składanie urządzenia To była chyba najgorsza część tego projektu. Chciałem się zmieścić na płytce 30x70 mm i musiałem bardzo długo przestawiać elementy zanim mi się udało. Tak wyglądał kandydat do składania: Musiałem parę rzeczy przypiłować, buzzer jest nad płytką i jeden włącznik jest przycięty, ale wszystko się zmieściło. No prawie - bateria wystaje z jednej strony, ale nie jest najgorzej. Z lutowaniem wyszło OK, ale trwało to prawie cały dzień. Na koniec miałem tylko nadzieję, że będzie działać. Następnym razem zamówię PCB 🙂 Na koniec wydrukowałem jeszcze obudowę. Niestety pomyliłem się z dziurką na buzzer, ale wszystko działa i szkoda mi filamentu. Obudowa ma miejsce na jedną śrubkę - płytka jest lekka i takie mocowanie daje radę: Całość działa jak na poniższym filmiku: Projekt miał być prosty, ale jednak trochę się namęczyłem. Nie mniej trzeba się było trochę nagłówkować i cieszę się że udało mi się złożyć urządzenie z tego co miałem pod ręką 🙂
  4. Witam, ostatnio kupiłem dwa moduły Digispark ATtiny85. Jeden wkładany bezpośrednio do portu USB komputera i jeden z wbudowanym złączem microUSB. Mój problem jest taki że po zainstalowaniu sterowników i zainstalowaniu płytek w Arduino IDE, tak jak jest napisane w instrukcji instalacji na stronie https://digistump.com/wiki/digispark/tutorials/connecting płytka z złączem microUSB nie działa. Wiem, że trzeba najpierw wcisnąć przycisk przesyłania programu a dopiero potem wpiąć moduł do portu USB, ale po upływie tych 60 sekund pisze, że przekroczono czas oczekiwania na płytkę. Jest to dziwne o tyle że moduł wkładany bezpośrednio do USB działa poprawnie. Proszę o pomoc! Dziękuję za wszelkie wsparcie Piotrek PS. Obrazek w załączniku przedstawia ten niedziałający moduł.
  5. Tak jakoś niedawno przyczepiła się do mnie myśl: zrób jakąś mini-gierkę na ATtiny85. Jako że myśl się odczepić nie chciała, w końcu gierka powstała. Wybrałem uproszczoną wersję Tappera - choćby dlatego, że zrobienie kolejnego klona Tetris czy Pacmana to nie jest (przynajmniej moim zdaniem) specjalnie trudne zadanie, a przy Tapperze trzeba było rozwiązać parę dość ciekawych problemów. I tak z części znalezionych w szufladzie powstał "BARMAN". Nie ma co prawda muzyki (ale to żadna strata, wygrywanie Buffalo Gals na brzęczyku piezo przez fałszującego conieco ATtiny nikomu chyba nie sprawiłoby przyjemności oprócz kogoś totalnie pozbawionego słuchu muzycznego), nie ma eskalacji trudności ani intermediów, nie ma nawet zapisu wyników do EEPROM-u. Obudowa również nie jest specjalnie udana (czytaj: tak dokładnie spaprana że wstyd mi STL-e pokazać). Najważniejsze jednak, że da się w to grać 🙂 Tak więc nie publikuję tego aby się chwalić, ale ponieważ obiecałem w innym wątku że pokażę jeśli coś mi wyjdzie - poza tym gra mimo nawet tak uproszczonej grafiki jest całkiem grywalna, więc być może komuś się będzie chciało spróbować odtworzyć to ustrojstwo. Wygląda to tak (niestety, nie udało mi się złapać ostrości na komórce): W akcji można to obejrzeć tutaj: Kody - jeśli kogoś interesują - są na githubie. Prosiłbym tylko o niekomentowanie kodu, wiem że nie jest to mistrzostwo programowania w C, ale wystarczy do ,ewentualnego odtworzenia sobie gry i pogrania. Schemat... no cóż, dużo tam nie ma, ale przynajmniej można podpatrzeć rozwiązanie podłączenia analogowego joysticka i dwóch dodatkowych klawiszy do ATtiny 🙂 Wykaz części: ATtiny85 Membrana piezo (użyłem 27mm, mniejsza będzie lepsza) Rezystory 10k, 22k i 33k Joystick PSP 1000 (jest w Botlandzie) Wyświetlacz 128x64 OLED na I2C (SH1106) Bateria CR2032 Trzy microswitche Obudowa co prawda mi nie wyszła (dlatego - jak wspomniałem STL-i nie ma i nie będzie), ale chciałbym przynajmniej pokazać co mi się nie podoba: Teoretycznie trzyczęściowa obudowa (nie liczę tu pierścienia dociskowego membrany, który jest wydrukowany oddzielnie wyłącznie z przyczyn technicznych) powinna być OK... Skręcona czterema śrubkami M2, z gniazdem na baterię (zależało mi na tym, aby nie można było włożyć baterii odwrotnie) i otworami dla membrany nawet zdaje egzamin... Jak widać każdy element ma swoje miejsce - joystick siedzi w gniazdku, wyświetlacz również ma swoje ustalone miejsce, środkowa część utrzymuje pod sobą płytki (taka szumna nazwa, w rzeczywistości kawałki płytki uniwersalnej z dolutowanymi od spodu przewodami)... co ja chcę? Ano, okazało się, że założenie górnej części obudowy to wyższa szkoła ekwilibrystyki, wyświetlacz i joystick siedzą sobie z lekkim luzem i jak by tego nie odwrócić - albo one wypadają z gniazdek, albo wysypują się klawisze... dałem sobie radę gdzieś za piątą próbą, a i tak musiałem wydrukować dłuższe klawisze żeby najdrobniejsze przechylenie obudowy nie powodowało ich spaceru na podłogę... Zrobienie tego na oddzielnych mini-płytkach wydawało się całkiem niezłym pomysłem - dopóki się nie okazało, że wszystkie przewody które miałem albo są za wiotkie i dolutowanie ich pod spodem płytki nie wystarczy aby uchronić je przed zerwaniem - albo za sztywne. Wybrałem sztywniejsze (kynar), upchnięcie tego wszystkiego w obudowie to męka bo zawsze coś wyskakiwało. Podejrzewam, że wystarczyłoby umieścić na jednej płytce mikrokontroler oraz dwa klawisze (reset i lewy fire), wtedy nie przeszkadzałyby zbyt sztywne przewody. I to by było na tyle. W razie jakichkolwiek pytań jestem do dyspozycji 🙂 PS. Nie jestem pewien czy nie machnąłem się w schemacie ale dopadło mnie zapalenie spojówek (kochane słoneczko) i niespecjalnie widzę co ja tam namalowałem 😞
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.