Mini Lampka RGB 2


10
Ocena: None Średnia: 10 (13 głosujących)

Urządzenie jest ulepszoną i rozbudowaną wersją układu Mini Lampki RGB. Ma za zadanie podświetlać na różne kolory kryształ lub inny przedmiot dobrze rozpraszający światło. Zastosowanie mikrokontrolera z rodziny AVR powoduje większą szybkość działania i eliminacje niewielkiego migotania powstającego przy małej jasności kolorów w stosunku do poprzedniej wersji urządzenia. Lamka posiada 3 tryby pracy z czego najbardziej efektowną stanowi generowanie płynnych losowych przejść kolorów. W roli obudowy zastosowano imitację skały wykonaną z pasty modelarskiej, co znakomicie ułatwia zastosowanie kryształu o nietypowych i nieregularnych kształtach.

Działanie:


Schemat ideowy lampki przedstawia poniższy rysunek:

Sercem układu jest mikrokontroler U1 (ATTINY2313) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Stabilizator U2 (7805) wraz z kondensatorami C3 (470uF) i C4 (100uF) stanowi prosty zasilacz stabilizowany. Rezystory R2 (180R), R3 (100R) i R4 (180R) oraz R5 (180R), R6 (100R) i R7 (180R) ograniczają prąd diod D2 (Led RGB) i D3 (Led RGB). Dioda D1 (Led) wraz z rezystorem ograniczającym prąd R1 (330R) stanowi kontrolkę szybkości animacji.

Budowa:


Lampkę można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż układu nie jest skomplikowany lecz należy zwrócić uwagę na kilka istotnych szczegółów. Lutowanie rozpoczynamy od rezystorów, następnie montujemy kondensatory ceramiczne C1 i C2 na leżąco i nad nimi rezonator kwarcowy również leżąco (możemy także zastosować kwarc o mniejszych gabarytach). Stabilizator wraz z współpracującymi kondensatorami montujemy tak jak na zdjęciu u dołu strony. Przyciski klawiatury jak również diody D1 - D3 lutujemy od strony druku. Pod diody RGB można zastosować kawałki podstawki precyzyjnej co umożliwi ich ewentualną wymianę. Mikrokontroler należy obowiązkowy wyposażyć w podstawkę ze wzgledu na brak złącza programującego na płytce. Pomocą w montażu będą zdjęcia modelu a także dostępny tutaj schemat montażowy. Układ można zamknąć w małej obudowie i połączyć np. z krzyształem górskim za pomocą utwardzanej na powietrzu pasty modelarskiej jak to zrobiłem w tym projekcie. Utwardzoną pastę modelarską można pomalować dowolną farbą, najlepiej akrylową (do kupienia w sklepie dla plastyków). Gdy mamy diody RGB ze wspólną katodą należy dołączyć ich wspólne wyprowadzenia (katody) do masy i zaprogramować mikrokontroler wersją programu dla diody ze wspólną katodą.

Druga wersja płytki wraz z odpowiednim schematem montażowym jest dostępna w załącznikach. Wersja ta nie zawiera stabilizatora i jest przystosowana do rozcięcia na dwa fragmenty (klawiaturę i moduł sterujący). Ponadto część płytki z mikrokontrolerem została znacznie zmniejszona i upakowana.

Gdy chcemy podłączyć do układu więcej diod to możemy zastosować tranzystory NPN lub MOSFET N (dla diod ze wspólną anodą) według jednego ze schematów poniżej:

Dla diod ze wspólną katodą należy zastosować tranzystory PNP lub MOSFET P (schemat jest analogiczny tylko wszystko się odwraca). Ze względu na fakt iż tranzystory działają jak inwentery do mikrokontrolera należy wgrać program dla diod o przciwnej polaryzacji niż zastosowane w projekcie. Ilość dołączanych diod jest ograniczona tylko maksymalnym prądem jaki jest dopuszczalny dla zastosowanych tranzystorów.

Wykaz Elementów:


5x uSwitch

2x 100R
4x 180R
1x 330R

2x 22pF
1x 100uF Elektrolit
1x 470uF Elektrolit

1x Rezonator Kwarcowy 16MHz (przy 10MHz może migać)
1x Dioda LED
2x Dioda LED RGB (4 wyprowadzenia, wsp. anoda)
1x 7805
1x ATTINY2313 + Podstawka

Programowanie:


Mikrokontroler do lampki został zaprogramowany w wersji demo programu BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00000000 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.0
Gd Alias Portb.1
Bd Alias Portb.2
 
Rd2 Alias Portb.3
Gd2 Alias Portb.4
Bd2 Alias Portb.5
 
Syg_led Alias Portb.7
Sw_port Alias Pind
 
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rled As Byte , Bled As Byte , Gled As Byte
Dim Rand_r As Byte , Rand_g As Byte , Rand_b As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Dzielnik3 As Byte
Dim Szybkosc As Byte
Dim Licznik_sw As Byte
Dim Stan_portu As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Stopbit As Bit
 
Dim Animacja As Byte
 
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Pozycja = 0
Dzielnik2 = 0
Szybkosc = 10
Stopbit = 1
Animacja = 0
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
   Gosub Przyciski
 
   Incr Dzielnik2
   If Dzielnik2 >= Szybkosc And Stopbit = 1 Then
     Dzielnik2 = 0
 
     Syg_led = Not Syg_led
 
     'pierwszy tryb  - przejscia plynne ustalone
     If Animacja = 0 Then
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
 
     'drugi tryb - losowe przejscia
     If Animacja = 1 Then
       Incr Pozycja
       If Pozycja >= 50 Then
         Pozycja = 0
         Rand_r = Rnd(3)
         Rand_g = Rnd(3)
         Rand_b = Rnd(3)
       End If
 
       If Rand_r = 1 Then If Rled < 100 Then Incr Rled
       If Rand_r = 2 Then If Rled > 0 Then Decr Rled
 
       If Rand_g = 1 Then If Gled < 100 Then Incr Gled
       If Rand_g = 2 Then If Gled > 0 Then Decr Gled
 
       If Rand_b = 1 Then If Bled < 100 Then Incr Bled
       If Rand_b = 2 Then If Bled > 0 Then Decr Bled
     End If
 
     'trzeci tryb - losowy kolor
     If Animacja = 2 Then
       Pozycja = Rnd(900)
       Gosub Pozycja_do_rgb
     End If
 
   End If
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Rled Then
  Reset Rd
  Reset Rd2
 Else
  Set Rd
  Set Rd2
 End If
 
 If Licznik < Gled Then
  Reset Gd
  Reset Gd2
 Else
  Set Gd
  Set Gd2
 End If
 
 If Licznik < Bled Then
  Reset Bd
  Reset Bd2
 Else
  Set Bd
  Set Bd2
 End If
 
 Incr Dzielnik
 If Dzielnik = 250 Then
   Dzielnik = 0
   Set Flaga
 End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
'************   Inne Etykiety    ***************
'***********************************************
Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return
 
Pozycja_do_rgb:
  Arg = Pozycja
  Gosub Przelicz
  Rled = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Gled = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Bled = Wartosc
Return
 
Przyciski:
If Sw_port <> 255 And Stan_portu = Sw_port Then
  Incr Licznik_sw
  If Licznik_sw = 10 Then
    Select Case Stan_portu
      Case 126:                                             'plus
        Licznik_sw = 5
        If Szybkosc > 1 Then Decr Szybkosc
      Case 125:                                             'minus
        Licznik_sw = 5
        If Szybkosc < 40 Then Incr Szybkosc
      Case 124:                                             'plus i minus
        Stopbit = Not Stopbit
        Syg_led = 1
      Case 111:                                             ' R
        Pozycja = 700
        Gosub Pozycja_do_rgb
      Case 119:                                             ' G
        Pozycja = 400
        Gosub Pozycja_do_rgb
      Case 123:                                             ' B
        Pozycja = 100
        Gosub Pozycja_do_rgb
      Case 110:                                             'plus R
        Licznik_sw = 8
        If Rled < 100 Then Incr Rled
      Case 109:                                             'minus R
        Licznik_sw = 8
        If Rled > 0 Then Decr Rled
      Case 118:                                             'plus G
        Licznik_sw = 8
        If Gled < 100 Then Incr Gled
      Case 117:                                             'minus G
        Licznik_sw = 8
        If Gled > 0 Then Decr Gled
      Case 122:                                             'plus B
        Licznik_sw = 8
        If Bled < 100 Then Incr Bled
      Case 121:                                             'minus B
        Licznik_sw = 8
        If Bled > 0 Then Decr Bled
      Case 103:                                             ' R G
        Rled = 100
        Gled = 100
        Bled = 0
      Case 115:                                             ' G B
        Rled = 0
        Gled = 100
        Bled = 100
      Case 107:                                             ' R B
        Rled = 100
        Gled = 0
        Bled = 100
      Case 99:                                              ' R G B
        Rled = 100
        Gled = 100
        Bled = 100
      Case 108:                                             ' plus minus R
        Animacja = 0
      Case 116:                                             ' plus minus G
        Animacja = 1
      Case 120:                                             ' plis minus B
        Animacja = 2
 
    End Select
 
  End If
Else
  Stan_portu = Sw_port
  Licznik_sw = 4
End If
 
Return
'********    Inne Etykiety Koniec  ************

Na rysunku poniżej przedstawiona jest konfiguracja Fuse bitów mikrokontrolera (screen shot z programu BASCOM AVR Demo). Zanaczone na czerwono opcje należy koniecznie ustawić:

Na rysunku poniżej przedstawiono konfigurację Fuse bitów mikrokontrolera na podstawie programu Burn-O-Mat:

Obsługa:


W standardowej wersji oprogramowania układ może pracować w trzech trybach działania:
1. Przejścia Ustalone - kolory zmieniają się w sposób płynny według ustalonej zależności B->G->R->B (900 kolorów)
2. Przejścia Losowe - losowany jest sposób płynnej zmiany natężenia dla każdej barwy niezależnie (1000000 kolorów)
3. Przejścia Skokowe - losowany jest jeden ocień co określony czas, zmiana następuje skokowo (900 kolorów)

W poniższej tabeli zawarta jest instrukcja obsługi lampki:

Zdjęcia Projektu:

ZałącznikWielkość
Schemat44.78 KB
Płytka10.3 KB
Płytka (odbicie lustrzane)10.27 KB
Płytka (3 na stronie)25.92 KB
Montowanie14.72 KB
Opis6.91 KB
Opis (odbicie lustrzane)6.95 KB
Kod Źródłowy6.62 KB
Program po kompilacji (BIN)1.94 KB
Program po kompilacji (HEX)5.48 KB
Kod Źródłowy (Dioda ze wsp. Katodą)6.62 KB
Program po kompilacji (BIN) (Dioda ze wsp. Katodą)1.94 KB
Program po kompilacji (HEX) (Dioda ze wsp. Katodą)5.48 KB
Płytka (Wersja 2)11.1 KB
Płytka (odbicie lustrzane) (Wersja 2)11.14 KB
Płytka (6 na stronie) (Wersja 2)54.54 KB
Montowanie (Wersja 2)15.05 KB



Portret użytkownika mirley

Programowanie

Przed programowaniem nic podłączone do mikrokontrolera nie powinno świecić. Wszystko zacznie działać po zaprogramowaniu i ustawieniu fusebitów

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika piotr 171

czyli jak podłączyłem

czyli jak podłączyłem wszystko dobrze ta mała dioda nie świeci a wszystko dobrze jest polutowane to mam zepsuty programator jak mi nie wykrywa procka ?

Portret użytkownika mirley

Jeżeli nie wykrywa procka

Jeżeli nie wykrywa procka to coś musi być źle podłączone lub programator jest padnięty. Sprawdź czy podłączyłeś go do odpowiednich pinów mikrokontrolera (czy napewno wszystko styka). Zapoznaj się z artykułem dostępnym tutaj

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika piotr 171

kolory

mam pytani bo coś mi nie działa tak jak w opisie wciskając przycisk na maxsa po prawej powstaje mi kolor marski i jest tak z wszystkimi przyciskami jak by były połączone ze sobą lecz nie są nie wiem gdzie morze być problem jak wcisnę trzy przyciski to mi gaśnie miał może ktoś taki problem i mógł mi pomóc.

Portret użytkownika mirley

Kolory

Jak podłączyłeś diody i przyciski do mikrokontrolera, tak jak na schemacie u mnie. Przeczytaj poprzednie odpowiedzi odnośnie przyciskow (są odwrocone o 180 stopni, to znaczy + jest w miejscu R i na odwrot). Lampka musi działać gdyż mam taką zrobioną i działa

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Marcin

Cześć Mirley. Nie

Cześć Mirley. Nie zrobiłem stroboskopu bo po zmianie widowsa nie mogę uruchomić bascoma a jedyny bascom który mi się uruchamia to ten co nie chce kompilować i nie chce mi skompilować tego stroboskopu. Mirley znasz jakiś sklep internetowy w kturym zakupię bez problemu diody rgb?? Bo ja się u siebie w sklepach nie mogę na nie doczekać

Portret użytkownika piotr 171

problem nie tkwi w

problem nie tkwi w przyciskach bo mi łączy kolory daje zielony i mi daje morski a jak daje morski to daje mi zielony ale wzmocnienie kolorów działa tak ja pokazane

Portret użytkownika mirley

Diody

Diody RGB można kupić na allegro bez problemu. Poprostu wpisz w wyszukiwarce "Dioda RGB"

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika mirley

Nie bardzo rozumiem co

Nie bardzo rozumiem co chcesz przez to powiedzieć. Chodzi Ci o to że jak klikniesz jeden przycisk odpowiadający za ustawianie koloru zielonego to pojawia sie kolor morski. A jak klikniesz dwa klawisze odpowiadające kolorowi morskiemu to pojawia się zielony?

Pamiętaj że możliwość ustawienia koloru za pomocą przyciskow jest możliwe tylko podczas zatrzymania animacji. (Tak jak napisałem w tabelce)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika piotr 171

kolory

Tak wiem dobrze zrozumiał pan. jeszcze jedno pytanie jak daje wzmocnienie czerwonego to tylko jedna dioda się zapala ta po prawej a jak niebieskiego to ta po lewej a zielony to obie to też wydaje mi się dziwne

Portret użytkownika mirley

Kolory

Przeprogramuj mikrokontroler jeszcze raz bo to jest niemożliwe, używasz programu tego co udostępniam na stronie?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika sky

Przedstawie swój problem,a

Przedstawie swój problem,a mianowicie procek (mój attiny 2313-20PU),jest rozpoznawalny w bascomie ,poprawnie jest programowany wraz z fusami,ale po włączeniu przez chwile diody nie świecą potem włączają się dwa kolory (czerwony i niebieski), z czego czerwony delikatnie pulsuje.Nie mogę wybrać żadnej animacji.Jak sterować przyciskami?.Dodam tylko ,że w ukladzie kwarc mam 16Mhz.Procka programowałem kilka razy i zawsze to samo.

Portret użytkownika piotr 171

programowanie

Sky wyczyść procka zobacz czy dałeś program ze wspólną katodą jak nic to nie da spróbuj z plikiem hex.
A do mojego wcześniejszego postu po przeprogramowaniu działa normalnie oprócz tych wzmocnień kolorów że niebieska po prawej a czerwona po lewej wynika to z tego że po prostu z jednej spalił mi się kolor czerwony a z drugiej niebieski ale to moja wina.

Portret użytkownika sky

Kasowałem wielokrotnie,lecz

Kasowałem wielokrotnie,lecz problem pozostał

Portret użytkownika piotr171

A weryfikacja się powiodła?

A weryfikacja się powiodła?

Portret użytkownika sky

Tak przebiegła prawidłowo.

Tak przebiegła prawidłowo.

Portret użytkownika mirley

Programowanie

Odłącz programator po zaprogramowaniu ATTINY2313. Nic nie powinno migać na rezonatorze 16MHz i dobrze ustawionych FUSACH. Po włączeniu lampki na chwile nic się nie świeci (ok 2-3s) a potem pojawia się kolor fioletowy(jak dobrze pamiętam) i animacja idzie według rodzaju pierwszego, czyli 900 kolorow płynnie przechodzących. Oznaką poprawnego działania jest dioda D1, ktora miganiem oznacza zmianę koloru. Przyciski jak już wspominałem wielokrotnie są zamienione miejscami o 180 stopni. Żeby się o tym przekonać klikamy dwa z lewej naraz, lub dwa z prawej. Po tej akcji animacja się zatrzyma (to znaczy że wcisnięte zostały + i - razem) i będzie wiadomo ktory przycisk jest ktory.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika sky

Witam Probel

Witam
Probel rozwiązany-uszkodzony jest 2313,dziekuje wszystkim za pomoc.

Portret użytkownika gosc

Witam. Czy mógłbyś podać

Witam. Czy mógłbyś podać jakiś ogólny algorytm według którego działa program? Bo staram się, staram, ale nie potrafię go zrozumieć ;)
W jaki sposób obliczyłeś, że liczba kolorów dla trybu losowego wynosi milion? Czy jest możliwość zwiększenia tej ilości? Czysto hipotetycznie nawet kosztem migotania diody. (Bądź przy większym kwarcu - 20MHz, a nawet overclocking attiny)
Mam też jedną uwagę do projektu:
*port D jest tylko 7 bitowy, w związku z czym pierwszy warunek dla klawiszy (Sw_port <> 255) zawsze jest prawdziwy. Najstarszy bit odczytany z PIND będzie zawsze 0. Rozsądniej byłoby ustawić na początku PD.5 i PD.6 w stan niski i zrobić przyrównanie Sw_port <> 127

Portret użytkownika mirley

W linii o ktorej

W linii o ktorej wspomniałeś faktycznie jest pewne niedopatrzenie. Powinno być Sw_port <> 127 i wszystkie pozostałe piny w stan wysoki na porcie (tak jak jest). Nie wpływa to jednak na logikę działania programu. Obecnie w nowszych projektach stosuję przypisywanie portu do zmiennej a następnie maskowanie za pomocą AND

Opis działania programu:
Najważniejszą częścią programu jest obsługa przerwania od Timer0 w ktorej działa licznik od 0 do 99. Następnie fragment programu:

If Licznik < Rled Then
  Reset Rd
...

porownuje aktualną wartość licznika ze zmienną Rled określającą natężenie koloru czerwonego (czym większa wartość Rled tym na więcej czasu zostanie włączona dioda czerwona. Np dla wartości Rled=50, przez czas gdy licznik ma wartości 0-49 dioda świeci a dla wyższych wartości już nie). Jest to sterowanie natężeniem za pomocą programowego PWM. Takie same fragmenty kodu są dla dwóch pozostałych diod.

W przerwaniu ustawiana jest też flaga co 32ms, która obsługiwana jest w pętli głównej programu. Co 32ms obsługiwana jest klawiatura i ustawiane parametry takie jak szybkość (dzielnik), animacja itp. Dalej w obsłudze flagi mamy wspomniany dzielnik ustalający szybkość oraz w zależności od zmiennej animacja sterujemy sposobem modyfikacji zmiennych: Rled, Gled i Bled odpowiedzialnych za natęzenie poszczegolnych barw. W pierwszym trybie mamy 900 kolorow bo są one obliczane na podstawie funkcji Przelicz o kształcie \_ _ _ _/^^^ ustalającej wartość natężenia w zależności od argumentu Arg. W trybie drugim losowane są (niezależne dla każdego koloru) jedna z trzech akcji: zwiększaj kolor, zostań, zmniejszaj kolor. Daje to 100x100x100 kolorów bo każda barwa może przyjąć 100 natężeń. W trzecim trybie losowany jest jeden z 900 kolorów działających w trybie 1.

Odnośnie zwiększenia liczby kolorów to powinno się udać nawet kilkakrotnie ale wymaga to przebudowy programu. Przerwania muszą przychodzić z większą częstotliwością. Trzeba by było trochę testów żeby uruchomić. Ze względu na mało wolnego czasu nie jestem wstanie tego teraz zrobić.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika ja ;D

Zasilanie

Czy ładowarka od telefonu 5V - 0,4A pociągnie cały układ tzn. w wersji dwudiodowej??

Portret użytkownika mirley

Szczerze mówiąc nie

Szczerze mówiąc nie zmierzyłem średniego poboru prądu układu ale wydaje mi się że ładowarka da sobie radę. Sam do zasilania użyłem małej ładowarki (5-8V 800mA). Moja miała troche większą wydajność prądową

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc

Dioda RGB

Jak zbudowana jest dioda RGB. Mam na myśli gdzie umiejscowiony jest - i + kazdego koloru. Mam diode ze wspolna anoda...

Portret użytkownika mirley

Jak sama nazwa wskazuje

Jak sama nazwa wskazuje dioda ze wspolna anodą ma wspolny +. Ja jeżeli nie znam wyprowadzeń ani modelu diody korzystam z rezystora 330R i zasilacza 5V. Poprostu podłączaj diodę rożnymi wyprowadzeniami do +5V(przez rezystor) i masy. Jeżeli zaświeci jedna ze struktur to wyprowadzenie podłączone do + jest wspolna anodą. Pozostałe trzy to katody trzech kolorow

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Dawid

Konfiuracja przycisków

Witam
A ja mam takie pytanie, przejrzałem cały kod i nie mogę znaleźć konfiguracji przycisków, jedynie co mnie zainteresowało to Sw_port Alias Pind
ale nie mogę tego zrozumieć. Potrzebne mi to bo kiedyś zrobiłem już układ, ale na atmega8 i tam mam przyciski podłączone pod inne piny niż tak jak tutaj jest przedstawione. Konfiguracje ledów zmieniłem i układ chodzi, kolory się zmieniają ale się powtarzają, rozjaśnia się i ściemnia każdy kolor po kolei i tak w kółko i przyciski nie działają. Więc czy można się spytać jak to zmienić? Pozdrawiam

Portret użytkownika mirley

Obsługa przyciskow jest

Obsługa przyciskow jest bardzo prosta, tylko może na pierwszy rzut oka troche zaplątana. Ten sposob obsługi klawiatury wymysliłem właśnie na potrzeby tego projektu, bo nie chciało się nic innego zmieścić u ATTINY2313. Ogolnie Sw_port jest zmienną (lub tak jak w tym przypadku nazwą całego portu do ktorego jest podpięta klawiatura). Stan_portu jest zmienną przechowującą stany przyciskow żeby można było wykryć czy coś kliknięto (zmieniły się stany).

If Sw_port <> &B11111111 And Stan_portu = Sw_port Then
  Incr Licznik_sw
  If Licznik_sw = 10 Then
    Select Case Stan_portu
      Case &B11111110:                                    
         'to się wykonuje jak kliknięty jest przycisk o stanie wpisanym do pierwszego bitu
         Licznik_sw = 0
      Case &B11111101:                                   
         'wykonywane gdy klikniety jest przycisk o stanie z bitu 2
         Licznik_sw = 0
      Case &B11111001:
         'gdy klikniete są przyciski 2 i 3 naraz
         Licznik_sw = 0
    End Select
  End If
Else
  Stan_portu = Sw_port
  Licznik_sw = 4
End If

Zapis Sw_port <> &B11111111 sprawdza czy przyciski roznią się od ich stanu spoczynkowego (nic nie nacisnięte) zapisanego w liczbie &B11111111 (podałem binarnie żeby było łatwiej). Warunek Stan_portu = Sw_port zapewnia zerowanie licznika Licznik_sw = 4 gdy zanim przycisk zareaguje zostanie wciśniety inny (innaczej mowiąc gdy zmieni się Sw_port). Zmienna Sw_port zawiera stany przyciskow więc gdy nie są one na jednym porcie musimy je do niej przypisać np tak:

  Sw_port.0 = pinx.y
  Sw_port.1 = pinx.y
  Sw_port.2 = pinx.y  
  Sw_port.3 = pinx.y
  Sw_port.4 = pinx.y
  Sw_port.5 = pinx.y
  Sw_port.6 = pinx.y
  Sw_port.7 = 1

Nieużywane bity zmiennej Sw_port ustawiamy na 1 tak jak to zrobiłem wyżej dla przykładu z bitem numer 7. Do testowania ktory z przyciskow jest wciśnięty używana jest struktura case. Przyciski zwierają linie mikrokontrolera do masy więc stan 0 odpowiada przyciskowi klikniętemu. Dla przykładu wpis pod Case &B11111110: wykona się gdy zostanie wciśnięty przycisk (i tylko on) o stanie przepisanym do bitu pierwszego (Sw_port.0) w zmiennej Sw_port. Roznica między stanami zmiennej Licznik_sw ustawionej w dolnej części procedury ( Licznik_sw = 4) i w instrukcji warunkowej (If Licznik_sw = 10 Then) daje ilość cykli obsługi klawiatury po ktorych zareaguje przycisk. W moim projekcie klawiatura obsługiwana jest co 32ms a roznica jest 6 (10-4) więc przycisk trzeba trzymać conajmniej 192ms aby zadziałał. W każdym Case xxxx jest wpis Licznik_sw = 0. Oznacza to że jak przycisk jest trzymany cały czas to drugie zadziałanie będzie po 10 (10-0) cyklach czyli po 300ms.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Dawid

Hm coś nie co rozumiem, ale

Hm coś nie co rozumiem, ale nadal nie wiem. U siebie przyciski mam wpięte pod Pb0, Pd7, Pd6, Pd5, Pb7 Więc mam taki kod napisać? :

  Sw_port.0 = pinb.0
  Sw_port.1 = pind.7
  Sw_port.2 = pind.6  
  Sw_port.3 = pind.5
  Sw_port.4 = pinb.7

I do jakiej sekcji mam ten kod wpisać?

Portret użytkownika mirley

Przyciski

Musisz zadeklarować zmienną na początku programu (Dim Sw_port as byte) i nadaj jej wartość 255 (nie będzie wtedy trzeba pisać Sw_port.5 = 1 itd. bo i tak bedzie tylko 5 przyciskow). Oczywiście linijka z wpisem Sw_port alias pind musi być usunięta. Fragment kodu wklej zaraz przed linijką If Sw_port <> 255 And Stan_portu = Sw_port Then

Jeśli piny ktore podałeś to odpowiednio +,- B, G, R to nie musisz nic modyfikować w case'ach przyciskow.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Dawid

Zrobiłem tak jak

Zrobiłem tak jak napisałeś, ale niestety bez skutku, zmieniłem kod na początku dodawając zmienną Dim Sw_port As Byte oraz w warunkach początkowych Sw_port = 255 usunąłem wpis Sw_port alias pind W sekcji przyciski zrobiłem tak:

Przyciski:
  Sw_port.0 = Pinb.0
  Sw_port.1 = Pind.7
  Sw_port.2 = Pind.6
  Sw_port.3 = Pind.5
  Sw_port.4 = Pinb.7
If Sw_port <> 255 And Stan_portu = Sw_port Then

Naciskam dłużej, krócej, z różnymi kombinacjami ale nie widać żadnych zmian, Przyciski działały z moim innym programem, są podpięte do masy. Czy masz może jakiś pomysł jak to rozwiązać? Pozdrawiam

Portret użytkownika mirley

A wspomniane piny masz

A wspomniane piny masz ustawione jako wejścia?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Dawid

Tak, mam je skonfigurowane

Tak, mam je skonfigurowane tak jak poniżej:

Config Pind.7 = Input
Config Pind.6 = Input
Config Pinb.0 = Input
Config Pind.5 = Input
Config Pinb.7 = Input

I na przyciski lampka nie reaguje

Portret użytkownika Cyka

Zasilanie

Bardzo ciekawy projekt. Zastanawiam się nad jego wykonaniem :)
Jakim napięciem jest zasilana całość ?
5V ? Na jakie napięcie powinny być kondensatory ? (ze zdjęć widzę, że na 25V)

Pozdrawiam

Portret użytkownika mirley

Zasilanie

Całość zasilana jest napięciem ok. 8-15V czyli takim aby stabilizator 7805 miał z czego wystabilizować zasilanie 5V do mikrokontrolera. Kondensatory elektrolityczne na dowolne napięcie, byle by było większe od napięcia jakie na nich panuje. Na 25V mogą być.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Joker

switche

Witam wszystkich!! mam jedno pytanko. ktos kiedys na elektrodzie wypowiadal się ze z tymi uswitchami jest błąd, a dokladniej chodzi o to ze np switch SR powinien byc podlączony do 8 pinu, SG do 7 itd. czyli zupelnie na odwrot. jak to jest??

Portret użytkownika mirley

SR jest zamieniony z S+ a SG

SR jest zamieniony z S+ a SG jest zamieniony z S-. Nie będe tego zmieniał bo znowu wszyscy będą się pytać czemu nie działa :)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika joker

switche

aha, spoko ;) ale to zeby te switche dzialaly wedlug tej tabelki to maja byc podlaczone jak na shemacie?? bez zmian??

Portret użytkownika mirley

W tabelce jest napisane co

W tabelce jest napisane co robi przycisk +, - i tak dalej. To gdzie mają być podłączone to kwestia programu i nie ma to nic wspolnego z tabelką. Tabelka jest dobra, przyciski podłącz tak jak napisalem wcześniej (Nie rozumiem w czym jest problem z tymi przyciskami, przecierz jednym kliknięciem można sprawdzić ktory jest ktory)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika rocket

a nie

A nie prawda. Nie będzie spełniony, gdy to co jest po prawej stronie "=" będzie miało wartość 0.

Portret użytkownika rocket

ups

Ta odpowiedź miała być do komentarza na pierwszej stronie. Nie wiem czemu linki "odpowiedz" są przy każdym komentarzu, to tylko myli.

Portret użytkownika mirley

Odpowiadanie

Proszę przytoczyć fragment odpowiedzi o którą chodzi. Lista odpowiedzi jest "płaska" a nie wątkowa :)

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika To ja ;D

Mała zmiana

Witam
Czy dałoby się przerobić ten układ aby nie posiadał on switchow ani stabilizatora napięcia? Posiadam ładowarkę od telefonu 5V 400mA. Co należałoby zmienić w programie aby usunąć switche i ustawić start z przejściem płynnym (1000000 kolorów)? Czy schemat zmieniłby się w jakiś sposób czy tez może należałoby usunąć tylko switche i stabilizator?
Pozdrawiam...

Portret użytkownika mirley

Zmiana

Przyciskow wytarczy nie montować :). Zmiana w programie to popraostu modyfikacja sekcji:

'************ Warunki Poczatkowe ***************
'***********************************************
Pozycja = 0
Dzielnik2 = 0
Szybkosc = 10                      'od 1 do 40, czym mniej tym szybsza zmiana
Stopbit = 1
Animacja = 1                        '0- 900 kolorow 1- płynne przejscia    2- skokowe przejscia
'*******  Warunki Poczatkowe Koniec  ***********

Wszystko jest już napisane wyżej, odpowiadałem już na takie pytanie

Stabilizator 5V nie jest wymagany o ile napięcie zasilające będzie wynosiło 4,5 - 5,5V. Moja ładowarka od komorki ktorą zastosowałem dawała 11V mimo napisu 5,2V na obudowie, więc sprawdź napięcie zanim podłączysz

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika osvch

Bład ID:FFFFFF

Witam, mi po podłączeniu i wciśnieciu F4 pokazuje się najpierw błąd oznaczony ID:FFFFFF, następny błąd: Selected chip and target chip do not match AT90S1200 <> ATtiny461... Co zrobić, programator już przeglądałem x razy. Dodam że wcześniej po podłączeniu nic się nie działo, zapisywał do ROMu, następnie po odczycie ROMu za każdym razem był błąd że komórki się różnią.

Portret użytkownika osvch

dodam jeszcze że kiedy

dodam jeszcze że kiedy programowanie mi w miare wychodziło (pomijając błąd Difference at.) nagle zaczęło pojawiać się ciągle Difference at.00000....

Portret użytkownika mirley

Zakładam że masz

Zakładam że masz podłączony mikrokontroler ATTINY2313 do zasilania i nie zmieniałeś konfiguracji sprzętowej programatora ani go nie odpinałeś od układu programowanego to pozostaje tylko uszkodzony mikrokontroler. Po kliknięciu "Identify" nie powinno się pojawić nic lub ewentualnie komunikat że mikrokontroler zdefiniowany w programie jest inny niż ATTINY2313, który chcemy programować. Jeśli występuje Difference at. i zawsze inna liczba to należy programować kilkakrotnie i zobaczyć co się dzieje (zawsze udawało mi się pozbyc tego błędu programując kilkukrotnie). Jak pojawia sie ta sama liczba to, gdy jest FFFFFF to brak komunikacji, 000000 to możliwe zwarcie do masy którejś z linii danych programatora.

Przede wszystkim sprawdź połączenia i poprawnośc zasilania procesora i programatora, a także podłączenie sygnału masy między nimi. Długość kabla do portu LPT też może generować błędy. Nie możliwe aby nie działało bo już setki razy programowałem mikrokontrolery i zawsze jakoś szło.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika osvch

"Zakładam że masz

"Zakładam że masz podłączony mikrokontroler ATTINY2313 do zasilania i nie zmieniałeś konfiguracji sprzętowej programatora ani go nie odpinałeś od układu programowanego to pozostaje tylko uszkodzony mikrokontroler." nie rozumiem :P Robiłem tak: attiny włożyłem do programatora, programator podłączyłem do portu LPT i na końcu podłączałem zasilanie +5V. Pierwszy raz jak to robiłem wykrywało mi attiny, niby zaprogramowałem, mimo że wyskakiwały błędy "difference at.." odłączyłem z zasilania wyjąłem LPT, wyciągnąłem z podstawki att i włożyłem do prawie już gotowej lampki, prawie bo mam jeden kwarc, więc przelutowałem z programatora do lampki :P Póxniej ponownie przelutowałem kwarc do programatora i już pojawiał mi się błąd FFFFFF...

Portret użytkownika mirley

Zrób jeszcze raz wszystko

Zrób jeszcze raz wszystko tak jak to napisałem tutaj. Dokładnie wszystko kontroluj i uważaj żeby nie było zwarć. Kabel od podstawki do LPT daj jak najkrótszy i sprawdź czy jest połączenie od podstawki z ATTINY do pinów we wtyczce i czy nie ma zwarć. Masę GND podłącz we wtyczce tak jak napisałem w opisie z tego linka a następnie do nóżki 10 procesora. Napięcie zasilania (5V) podłącz plusem do pinu 20 ATTINY2313 a masę do GND (nóżka 10), Kwarc z kondensatorami tak jak na schemacie lampki. Nie musisz przy tym robić specjalnej podstawki do programowania. Dolutuj przewody od spodu płytki od twojej lampki i po sprawie. Bascoma ustaw tak jak w linku wyżej.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika osvch

Teraz zauważyłem że napis

Teraz zauważyłem że napis na kondensatorach to 22n Mb, czyli mam złe kondensatory? Ok, już robie tak jak mówisz :)

Portret użytkownika osvch

podłączyłem wszystko, po

podłączyłem wszystko, po podłączeniu zasilania zapaliła się dioda led, gdy wziąłem autoprogram led zgasła a zapaliła się jedna RBG na niebiesko i za każdym razem kiedy klikam autoprogram chip rgb niebieska mignie dwa razy i nadal świeci ciągłym światłem...

Portret użytkownika mirley

A dioda D1 podłączona do

A dioda D1 podłączona do portu Pb.7 zmienia swój stan? Sygnalizuje ona poprawną pracę (każde zgaszenie i oświecenie to zmiana koloru o jeden). W twoim przypadku powinna ona migać bardzo wolno (bo jeśli nie ustawiłeś fuse bitow to procesor będzie pracował na 1MHz). Ustaw Fuse bity tak jak jest pokazane na zdjęciu w Opisie lampki, sekcja Programowanie.

Podczas programowanie nie pojawiły się żadne błędy? ATTINY został poprawnie wykryty?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.