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
    • 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 11 wyników

  1. Witam. Niedawno szukając pomysłu na projekt zobaczyłem, że mam wyświetlacz TM1637 i od razu wpadł mi do głowy pomysł na zrobienie licznika cyfrowego. Taki przyrząd dla zapominalskich, do liczenia. I tak oto powstało to: Cyfrowy Licznik Użyte komponenty/moduły: Attiny85 Moduł wyświetlacza TM1637 Tact switch (x3) Przełącznik Baterie AAA (x3) Zacząłem od napisania kodu i złożenia wszystkiego na płytce stykowej. Początkowo wszystko miało być zrobione na Arduino NANO, potem stwierdziłem że lepiej użyć czegoś tańszego i mniejszego czyli Attiny85. Przyciski miały działać w ten sposób: Lewy -> +1 Środkowy -> +10 Prawy -> RESET Rozkład działania przycisków licznika Cały kod udało mi się napisać dość szybko i nie jest on skomplikowany: #include <TM1637Display.h> #define CLK 3 #define DIO 4 TM1637Display display(CLK, DIO); int buttonState_1; int buttonState_10; int buttonState_reset; int licznik=0; void setup() { display.setBrightness(7); pinMode(0, INPUT); pinMode(1, INPUT); pinMode(2, INPUT); for(int i=0; i < 7; i++){ display.showNumberDecEx(8888, 0b01000000, true); delay(50); display.clear(); delay(50); } delay(500); display.showNumberDec(0); } void loop() { buttonState_1 = digitalRead(0); buttonState_10 = digitalRead(1); buttonState_reset = digitalRead(2); if(buttonState_1 == HIGH){ licznik++; display.showNumberDec(licznik); while(buttonState_1 == HIGH){ buttonState_1 = digitalRead(0); } } if(buttonState_10 == HIGH){ licznik+=10; display.showNumberDec(licznik); while(buttonState_10 == HIGH){ buttonState_10 = digitalRead(1); } } if(buttonState_reset == HIGH){ licznik=0; display.showNumberDec(licznik); while(buttonState_reset == HIGH){ buttonState_reset = digitalRead(2); } } if(licznik > 9999){ licznik=0; display.showNumberDec(licznik); } delay(50); } Na samym początku jest tzw. ,,test ledów" więc cały wyświetlacz mruga liczbami i znakami: 88:88, a później są same funkcje odpowiadające za wykrywanie czy przycisk nie został naciśnięty oraz za wyświetlanie danych liczb. Dobra dość gadania o kodzie, czas powiedzieć coś o obudowie. Obudowę robiło się bardzo przyjemnie. Robiłem ją jak zawsze w programie TINKERCAD, który jest bardzo prosty i przyjazny dla początkujących takich jak ja Obudowa licznika W moich poprzednich obudowach i projektach robiłem sam otwór na koszyk i tam go po prostu przyklejałem. Przyznam że nie wyglądało to estetycznie w ogóle. W tym projekcie koszyk był drukowany w raz z pokrywą całej obudowy, więc po wydrukowaniu trzeba było tylko włożyć odpowiednio blaszki i gotowe! Wydrukowana pokrywa obudowy wraz z koszykiem, blaszkami oraz bateriami Cała obudowa drukowała się ok. 3 godziny i pochłonęła 56g filamentu. Wszystko drukowało się bardzo ładnie, a tak wyglądał efekt: Wydrukowana obudowa Pozostało mi jeszcze wszystko polutować i upchać do środka, co okazało się najcięższym zadaniem... Na początku zlutowałem podstawkę (na Attiny85), tylko tutaj zrobiłem to trochę inaczej. Zamiast lutować kabelki do podstawki, zrobiłem coś co miało pełnić funkcje takiej jakby ,,płytki stykowej?" żeby było można wszystko w każdej chwili poprzepinać. Użyłem do tego żeńskich goldpin-ów i cały ten pomysł okazał się bardzo dobry. Wiadomo że wszystko będzie mniej wytrzymałe, bo w każdej chwili może coś się wypiąć, ale tu się to bardzo dobrze trzymało. Dodatkowo co chwilę musiałem coś wypinać/przepinać, więc ta metoda sprawdziła się tu idealnie Zlutowany, prawie gotowy projekt Okazało się, że obudowę jednak zrobiłem trochę za ciasną i upchanie tego wszystkiego do środka zajęło mi bardzo dużo czasu. Wiele elementów musiałem spiłować, kleić i robić wiele innych rzeczy, ale w końcu udało się to wszystko do środka włożyć i zamknąć obudowę: Obudowa i upchania do środka elektronika Test licznika jest na tym filmie: Czy będę go używał? Nie! Raczej jak już coś liczę to zapamiętuje to w głowie, więc taki przyrząd nie jest mi potrzebny. Zrobiłem go, bo innego pomysłu na projekt nie miałem. Dziękuje za przeczytanie tego DIY! Mam nadzieję że projekt się spodobał. Czekam na wasze opinie i uwagi! Pozdrawiam.
  2. Witam niedawno chwaliłem się tu prototypem ,,Stacji Pogodowej DHT11". Trochę popracowałem nad tym i teraz mogę się pochwalić Stacją pogodową DHT22: Komponenty które tutaj użyłem: Attiny85 - Mikrokontroler a tutaj serce całej stacji pogodowej DHT22 - Czujnik wilgotności i temperatury LCD 2x16 z konwerterem I2C - Wyświetlacz pełniący rolę twarzy stacji Koszyk oraz baterie - Czyli zasilanie całego projektu (3x AA w koszyku) Nie będę powyżej wymieniał takich rzeczy jak płytka uniwersalna, czy szczypce boczne które mi się przydały przy obcinaniu podpór wydruku Celem całego projektu było ciche i małe urządzenie które można postawić na biurku i obserwować wilgotność i temperaturę. Najcięższą rzeczą w tym wszystkim było zrobienie samej obudowy, robiłem ją w programie TINKERCAD. Najpierw musiałem zrobić wydruki które pomogły mi dopasować otwory do komponentów: Dopiero jak wszystko było dopasowane to zacząłem robić obudowę która finalnie wyszła tak: I wiem, powiedziałem ,,ciche i małe urządzenie" a obudowa nie wyszła jakoś bardzo mała, tylko że zdałem sobie z tego sprawę podczas jej drukowania. Wszystko mogło by wyjść mniejsze i oszczędniejsze gdyby przełożyć miejsce na koszyk (z tyłu obudowy na jej spód). Wspomniałem o oszczędności bo jak na moje wydruki które miały od 3-10g to ten był dość spory, bo miał ok. 75g. Okej teraz zajrzyjmy do kodu: #include "DHT.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); DHT dht; byte znak_stopnia[8] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 }; byte znak_wilg[8] = { B00000, B00100, B00110, B01110, B11101, B11111, B11111, B01110 }; byte znak_temp[8] = { B00100, B00110, B00100, B00110, B00100, B01110, B01110, B01110 }; int w; int t; int tx; int wx; void setup(){ dht.setup(4); lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print("Temp ="); lcd.setCursor(0,1); lcd.print("Wilg ="); lcd.createChar(1, znak_temp); lcd.createChar(2, znak_wilg); lcd.setCursor(5,0); lcd.write(1); lcd.setCursor(5,1); lcd.write(2); } void loop(){ if(t < 10 && t > -1){ tx = 10; } if(t > 9){ tx = 11; } if(t < 0 && t > -10){ tx = 11; } if(t < -9){ tx = 12; } w = dht.getHumidity(); t = dht.getTemperature(); lcd.setCursor(9,0); lcd.print(t); lcd.setCursor(9,1); lcd.print(w); lcd.createChar(3, znak_stopnia); lcd.setCursor(tx,0); lcd.write(3); lcd.print("C "); lcd.setCursor(11,1); lcd.print("% "); delay(dht.getMinimumSamplingPeriod()); } Nie ma co tu opisywać każdej linijki, zaznaczę tylko kilka ważnych linijek Poprzednim razem w mojej stacji nie było nic nadzwyczajnego, tutaj postanowiłem dodać znaki które dodają trochę wyglądu (w kodzie: funkcja byte napisana 3 razy) Przydała mi się tu bardzo ta strona: https://maxpromer.github.io/LCD-Character-Creator/ Kilka pętli if pojawiło się w kodzie żeby zapobiec błędom w wyświetlaniu znaków Reszta kodu to funkcje wyświetlające napisy/znaki oraz funkcje pobierania temperatury/wilgotności Podczas drukowania obudowy napotkałem bardzo duży problem, mam na myśli odklejanie się rogów wydruku. To było coś nad czym siedziałem prawie pełne 2 dni, co znacznie opóźniło ukończenie projektu. Problem rozwiązała zmiana temperatury stołu, dowiedziałem się że dla filamentu PLA stół powinien mieć temperaturę ok 55°C gdzie mój do tej pory miał 35°C. Pomogło mi jeszcze wymycie płyty roboczej oraz nałożenie na nią zwykłego kleju biurowego. Finalnie wydruk wyszedł bardzo ładnie: Na koniec zostało mi jeszcze przełożenie komponentów z płytki stykowej na płytkę uniwersalną: I upchanie wszystkiego do obudowy. Według mnie wszystko wyszło bardzo ładnie. Nie jest to finalna wersja stacji, bo ma ona wciąż bardzo dużo błędów. W następnej stacji pogodowej planuję zrobić: Lepiej zorganizować wnętrze. (uporządkować elektronikę w środku) Poprawić zatrzaski. (ciężko otworzyć teraz obudowę przez to że źle zrobiłem zatrzaski) Lepiej wymierzyć otwory na komponenty. (żeby wszystko się trzymało musiałem używać taśmy dwustronnej ) Zrobić coś w rodzaju siatki aby czujnik nie był odsłonięty. Zasłonić baterie, ale w taki sposób żeby dało się je w każdej chwili wymienić bez rozbierania obudowy. (bo nie są zasłonięte): To tyle z mojej strony, mam nadzieję że projekt się podobał. Ja z siebie sam jestem bardzo dumny bo jeszcze nigdy nie zrobiłem praktycznego urządzenia w ładnej obudowie. Nie wiem czy na tym forum jest to w zwyczaju, ale na koniec chciałbym podziękować kilku użytkownikom. Bardzo dziękuje użytkownikowi @AntekBezak za pomoc w podłączeniu wszystkiego oraz pomoc w napisaniu kodu. Za pomoc w napisaniu kodu dziękuje jeszcze @ethanak, @_LM_ oraz @KatzePL. Bez was nigdy bym sobie z tym nie poradził! Dziękuje też Tobie za przeczytanie całego DIY. Pozdrawiam!
  3. Witam. Podczas robienia stacji pogodowej z czujnikiem DHT22 oraz ATTiny85 na wyświetlaczu pojawiło się za dużo liczb. Ja bym chciał żeby pojawiły się same cyferki 26, 63 oraz znaki °C i %. Kod który pisałem i wgrałem: #include "DHT.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); DHT dht; byte znak_stopnia[8] = { 0b00111, 0b00101, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; int w; int t; void setup(){ dht.setup(4); lcd.init(); lcd.backlight(); lcd.print("Temperatura"); lcd.setCursor(0,1); lcd.print("Wilgotnosc"); lcd.createChar(1, znak_stopnia); lcd.setCursor(14,0); lcd.write(1); lcd.print("C"); lcd.setCursor(13,1); lcd.print("%"); } void loop(){ w = dht.getHumidity(); t = dht.getTemperature(); lcd.setCursor(12,0); lcd.print(t); lcd.setCursor(11,1); lcd.print(w); } Biblioteka którą użyłem do DHT to ta: https://github.com/jscrane/DHT?tab=readme-ov-file. Podłączenie jest dobre. Teraz ja proszę o pomoc w zasłonięciu tych dodatkowych cyferek żeby wyglądało to w ten sposób: Z góry dziękuję za poświęcony czas!
  4. Witam. Czy mógłby mi ktoś podesłać schemat podłączenia Attiny85 do LCD I2C, oraz biblioteki potrzebne do wgrania kodu? Lub jakiś poradnik który zawiera wszystkie te rzeczy. W internecie jest wiele poradników, ale nic z nich nie mogę wyciągnąć... Z góry dziękuję za odpowiedzi.
  5. Witam. Dzisiaj chciałem po raz pierwszy wgrać jakiś kod do Attiny85 używając klona Arduino UNO jako programatora. Zainstalowałem AttinyCore w tym wszystkie potrzebne sterowniki. (z tego poradnika i po zainstalowaniu robiłem wszystko co jest w tym filmie) Po kliknięciu przycisku Burn bootloader (w sekcji tools) wystąpił błąd: Failed chip erase: uploading error: exit status 1 Wszystko było robione na Arduino IDE wersji 2.3.2 Zdjęcia tego jak to podłączałem Podłączałem to wszystko według tego schematu (schemat pochodzi z filmu o którym pisałem powyżej): Wybrałem takie same opcje jakie zostały wybrane w tym filmie oraz płytkę: ,,ATTiny 45/85 (Obtiboot)" (chodzi o te opcje otoczone czerwoną linią): Kod który zrobiłem na pewno jest dobry bo po kliknięciu w przycisk ,,Verify" kompilator nie wykrywa żadnych błędów, ale na wszelki wypadek pokażę go tutaj: void setup() { pinMode(1, OUTPUT); } void loop() { digitalWrite(1, HIGH); delay(100); digitalWrite(1, LOW); delay(100); } Na samym końcu pokażę jeszcze kilka zdjęć które mogą się przydać (screeny robione przy podpiętym Arduino): Mam nadzieję że podałem wystarczająco dużo informacji Z góry dziękuję za poświęcony czas!
  6. Dzień dobry, ostatnio pytałem się jaki Attiny do wyświetlacza LCD I2C, wszyscy polecali mi Attiny85. Czy może ktoś mi powiedzieć jak programować to Attiny? Bardzo proszę zwrócić uwagę że jestem początkującym i proszę nie używać mega skomplikowanych słów Z góry dziękuję odpowiedź
  7. 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
  8. 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
  9. 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ą
  10. 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ł.
  11. 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...