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 gosc

PWM

witam,
zaczynam programować właśnie w bascomie. chce podłączyć pod procesor atmega8 8 diód LED pod wyjście PORTB i chciał bym regulować jasnością tych diod za pomocą procesora. Każda dioda ma być podłączona pod inny pin.
LED1 do PINB.0 ; LED2 do PINB.1 itd. czytałem już o PWM ale w atmedze8 są tyllko 3 takie wyjścia. zastanawia mnie jak to jest zrobione w lampce RGB 2 że można dowolnie sobie sterować każdym kolorem z osobna w stanie pauzy.

Portret użytkownika mirley

Re: PWM

W lampce występuje programowy PWM, poczytaj sobie 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 wilus

program do atmega8

No więc tak, zrobiłem tak jak radziłeś. Zmieniłem procesor na atmega8 i piny portb.6 i portb.7 ponieważ te piny w atmadze służą do podłączenia kwarcu. Teraz program wygląda tak i nie działa w czym może być problem?>

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m8def.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.1
Gd Alias Portb.2
Bd Alias Portb.3
 
Rd2 Alias Portb.0
Gd2 Alias Portb.4
Bd2 Alias Portb.5
 
Syg_led Alias Portd.5
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  ************

Portret użytkownika mirley

Re: Lampka RGB 2

Pomijając fakt że brakuje konfiguracji dla portu C na początku programu to dioda led nie może być na porcie d. na porcie d ma być tylko klawiatura bo innaczej trzeba zmieniać jej obsługę w programie.

Rd Alias Portb.1
Gd Alias Portb.2
Bd Alias Portb.3
 
Rd2 Alias Portb.0
Gd2 Alias Portb.4
Bd2 Alias Portb.5
 
Syg_led Alias Portd.5
Sw_port Alias Pind

Poza tym trzeba ustawić fusebity na zewnętrzny kwarc 16MHz

-

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 wilus

lampka rgb

czyli jak powinien wyglądać program z tą konfiguracją portu C ?? nie znam sie za bardzo na tym

Portret użytkownika mirley

Re: Lampka RGB 2

Analogicznie jak pozostałe porty:

Config Portc = &B11111111 : Portc = &B11111111

Pierwsza liczba binarna to typ wyprowadzeń 1 to wyjście a 0 to wejście drugi bajt to stan początkowy. porty są numerowane w bajcie klasycznie jak liczby binarne, to znaczy pin7 pin6 pin 5.....pin0, od prawej do lewej. Myslę że zrozumiałe jest że jak na pinie jest przycisk to musi ten pin byc wejściem a jak jest dioda itp. to pin ma być wyjściem

-

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

Prośba

Witam, planuję zrobić ww lampkę, ale nie wiem jakich uswitchy użyć. Czy mógłby mi Pan powiedzieć, które z poniższego linku będą ok?

http://allegro.pl/search.php?string=switch&us_id=224268&country=1

Z góry dzięki.

Portret użytkownika mirley

Re: Lampka RGB 2

Jesli chcesz przyciski wlutować na płytke to żadne z tamtych się nie nadają... musisz mieć uSW 12x12mm na przykład taki jak tutaj. Z punktu widzenia elektrycznego jeśli podłaczysz to na kabelkach to mogą byc dowolne z tych co podałeś

-

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

Ok. dzięki wielkie za

Ok. dzięki wielkie za odpowiedź, świetny z Ciebie gościu ;)

Portret użytkownika gosc

"Do lampki można podłączyć

"Do lampki można podłączyć praktycznie dowolną liczbę diod bez żadnego problemu. Wystarczy wykorzystać trzy dowolne tranzystory NPN (lub MOSFET). Przez rezystory 1k - 3,3k podłączamy bazy (bramki) tranzystorów do pinów PB.0 - PB.2 ich emitery (Źródła) do masy układu. Kolektory (Dreny) podłączamy do odpowiednich struktur w diodach RGB przez rezystory o wartościach takich samych jak w orginalnym schemacie. Do każdej diody należy podłączyć osobne rezystory. Wyprowadzenia procesora PB.3 - PB.5 niech zostaną wiszące w powietrzu. Mikrokontroler należy zaprogramować wersją programu dla diod ze wspólną katodą gdyż tranzystory będą działać jak inwertery i diody muszą być teraz zapalane stanem wysokim."

Czyli chcąc podłączyć więcej diód muszę wybrać te ze wspólną katodą? Czy to nie ma znaczenia?

Portret użytkownika mirley

Re: Diody LAMPKA RGB

Nie ma znaczenia czy wybierzesz diody ze wspólna anodą czy katodą byle by były jednakowe a nie każda o innej polaryzacji. Jeśli masz diody ze wspólną anodą to korzystasz z jednego ze schematów w dziale budowa a jeśli masz ze wspólna katodą to musisz odwrócic te schematy, podłaczając katody diod do masy a zamiast tranzystorów npn musisz dac pnp do +5V

-

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 imex

czy da sie ustalic zeby po

czy da sie ustalic zeby po zaniku zasilania i odpaleniu - czyli zasilam to zaczyna sie tylko odpowiedni kod 900 kolorow płynne przejscia

mam jeszcze inna koncepcje - bo chcę tym oswietlic kominek - i żeby w zależności od wystepujacej temperatury nad kominkiem zmienia sie kolor świecenia - jak dojdzie np do 30-35 stopni to po 5 min zacznie sie zmieniac automatycznie w inne kolory

Portret użytkownika imex

zaczyna od np niebieskiego -

zaczyna od np niebieskiego - przez zielony żółty i inne az do czerwonego - zatrzymuje sie i po jakims czasie samo zmienia się - a jak zaczyna spadac temp np ponizej 28 stopni to powrot do zimnego koloru

Portret użytkownika mirley

Re: Lampka RGB 2

Da się zrobic tak aby kolor zmieniał się w zalezności od temperatury ale trzeba napisać całkiem nowy program i najlepiej na większym mikrokontrolerze (np m8).

Aby zmienić kolor startowy w trybie 900 kolorów zmień wartośc zmiennej pozycja (0-899)

-

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 IMEX2

Przerobiłem na ATMEGA 8

przerobilem na atmega 8 bo taką miałem gotowa płytkę - ogólnie działa

Quote:
$regfile = "m8def.dat" 'najpierw określamy typ proca
$crystal = 8000000 'definiujemy z jakim taktowaniem będzie pracował

Config Portd = &B11111111 : Portd = &B11111111
Config Portc = &B00000000 : Portc = &B11111111

Config Timer0 = Timer , Prescale = 1
Enable Timer0 : On Timer0 Prztimer0

Enable Interrupts
'********** Konfiguracja uC Koniec ************

'****************** Nazwy *******************
'***********************************************
Rd Alias Portd.0
Gd Alias Portd.1
Bd Alias Portd.2

Rd2 Alias Portd.3
Gd2 Alias Portd.4
Bd2 Alias Portd.5

Syg_led Alias Portd.7
Sw_port Alias Pinc

'************* Nazwy Koniec ****************

Migaja diodki a 8 mryga - ale nie działaja przyciski albo niewiem jak naciskać - Port C to przyciski

-

Grzesiek - miasto Ostróda

GG 12372371 dom
tel 502812675 SMS

Portret użytkownika mirley

Re: Lampka RGB 2

Kwarc powinien być 16MHz i na taki trzeba fusebity ustawić, dlatego diody mrugają bo program jest napisany dla 16MHz. Przyciski mają byc podłączone w takim przypadku do pinów c.0 - c.4. pozostałe piny portu c mają byc nigdzie nie podłączone i ma na nich panowac stan wysoki. Z mniejszym kwarcem przyciski będą dłużej reagować na naciśnięcie.

-

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 IMEX2

Migaja diodki a 8 mryga -

mialem na myśli to że dzialają - Prescale ustawilem na 1 i tak uzyskałem troszeczke predkości

ogólnie brakuje mieszania kolorów - niemam jeszcze podłaczonych diod RGB -

Tzn. mi brakuje tonowania bo obecnie to przechodzą kolory na poszczególnych kanałach - brakuje np R - 50% i reszta przechodzi o 100% i tak dalej z nasyceniem 10,20,30 ..... 100% w miksowaniu kolorów

20% - R , 70% - G , a B teraz przechodzi od 0 - 100%

ogólnie urządzonko proste

-

Grzesiek - miasto Ostróda

GG 12372371 dom
tel 502812675 SMS

Portret użytkownika RobertK

brak koloru...

Zbudowałem ten układzik, wszystko fajnie i pięknie tylko brak koloru zielonego( w momencie gdzie powinien być, dioda gaśnie i cały cykl się powtarza). Dioda jest sprawna bo sprawdzałem wszystkie (RGB).
Przyciski są w nieco innej kolejności ale to nie problem (od lewej strony B; G; R; -; +;
Może mam uszkodzony procek, ale nie jestem w stanie tego zweryfikować bo nie mam drugiego, zwarć na płytce również brak.
Może ktoś miał podobny problem i się z tym uporał?

-

Power of Atmega16 ;)

Portret użytkownika mirley

Re: Lampka RGB 2

Sprawdzałeś czy jest połączenie od diody do miejsca w podstawce procesora w którym powinna być podłączona? Może po prostu jedna ścieżka nie przewodzi

-

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 RobertK

Re: Lampka RGB 2

połączenia od gniazda diody do nóżek procesora są ( sprawdzałem omomierzem pokazywał oporność taka jaka była miedzy punktami pomiarowymi )

-

Power of Atmega16 ;)

Portret użytkownika mirley

Re: Lampka RGB 2

A próbowałeś ponownie zaprogramować procesor? Mógł się uszkodzić ale to bardzo mało prawdopodobne. Może podłącz jakąś inną diodę do tego pinu co powinien na zielono ją zaświecać. Masz zbudowaną wersję z tego opisu z dwoma diodami? Czy na wyjściach dla obu diod nie ma sygnału zaświecającego zielony kolor?

-

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 RobertK

Wyszło chyba na to, że te

Wyszło chyba na to, że te diody które mam są jakieś trefne ;) bo niebieska świeci swoją "normalną mocą, czerwona i zielona tylko "ćmi" (może jest na wyższe napięcie), a w układzie tylko niebieska świeci poprawnie. Zrezygnuje z jednej diody RBG i zastosuje 3 pojedyncze diody. :)
Dziękuje za pomoc.

Pozdrawiam Robert.

-

Power of Atmega16 ;)

Portret użytkownika mirley

Re: Lampka RGB 2

Ale podłączona dioda przez te same 3 rezystory bezpośrednio do 5V i GND też tak słabo świeci? Napewno masz poprawne wartość rezystancji? A może dałeś 1 rezystor?

-

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 RobertK

dla czerwonej jest 100 dla 2

dla czerwonej jest 100 dla 2 pozostałych 2x 180 ohm, pojedyncze diody podłączone wszystkie 3, niebieska zielona i czerwona świecą normalnie, ja włożę RBG to tylko niebieska świeci normalnie (wygląda mi to na uszkodzone diody RBG. Lampka działa na pojedynczych więc jest OK.

-

Power of Atmega16 ;)

Portret użytkownika darson

RGB w rytm muzyki

Czy dało by sie napisac program ktory sterowal by ledami RGB w rytm muzyki...??

Portret użytkownika mirley

Re: RGB

Takie bajerki będą, jak uda się zrobić w 3 wersji lampki RGB. Na ATTINY2313 będzie z tym problem, trzeba będzie użyć większego uC ale ogólnie powinno dać rady zmieniać kolory w zależności od muzyki

-

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 RobertK

Nie dawało mi to spokoju, że

Nie dawało mi to spokoju, że dla pojedynczych diod lampka działa znakomicie, a dla RGB (wsp. anoda)już nie.
I wydało się, dlaczego przyciski nie są w odpowiedniej kolejności i brak zielonego koloru.
Otóż wkładałem diody RBG w gniazdo nie tą stroną co trzeba, a połączenie dla zielonej było w stanie zaporowym :( .
Czas wrócić chyba do pierwszej technikum hehehe.

Pozdrawiam Robert.

-

Power of Atmega16 ;)

Portret użytkownika wilus14

program atega8

Ja mam tak i nie działają przyciski ,czy w programie jest jakiś błąd?? aha i jeszcze jedno piszesz na niepodłączonych pinach ma być stan wysoki czyli od C4 do C7 maja być podłączone do minusa ??

$regfile = "m8def.dat"                                      
$crystal = 16000000                                         
 
Config Portd = &B11111111 : Portd = &B11111111
Config Portc = &B00000000 : Portc = &B11111111
 
Config Timer0 = Timer , Prescale = 1
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec ************
 
'****************** Nazwy *******************
'***********************************************
Rd Alias Portd.0
Gd Alias Portd.1
Bd Alias Portd.2
 
Rd2 Alias Portd.3
Gd2 Alias Portd.4
Bd2 Alias Portd.5
 
Syg_led Alias Portd.7
Sw_port Alias Pinc
 
'*************  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  ************

Portret użytkownika mirley

Re: Lampka RGB 2

Nie trzeba niczego do "minusa" podłączać, poza tym "minus" czyli masa to stan niski a nie wysoki :)

Należy troszkę zmienić przy obsłudze klawiatury a mianowicie zamaskować nieuzywane piny za pomocą polecenia AND i OR.

Przyciski:
klawiatura = Sw_port and &B00011111                       'to trzeba dopisać
klawiatura = Sw_port or  &B01100000                       'to trzeba dopisać
If klawiatura <> 255 And Stan_portu = Sw_port Then        'tutaj zmienić
  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:    
.........               

Na początku programu masz zadeklarować nową zmienną:

Dim Klawiatura as byte

Przyciski mają być podłaczone do Pc.0 - Pc.4 przy czym Pc.0 to S+, PC.1 to S- itd. Teraz powinno już działać. Polecenie linijce z AND'em i OR'em daje odpowiednie wartości na miejscach gdzie nie ma klawiatury i dostosowuje to do stanów logicznych jakie czytane sa z ATTINY. Można to zrobic lepiej i bardziej elegancko ale trzeba modyfikować każda liczbę przy Case xxx:

-

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 wilus14

program atmega8

ok dzięki a mógłbyś to jeszcze wkleić w odpowiednie miejsce w programie bo mi nie chce skompilować:)byłbym wdzięczny;)

Portret użytkownika mirley

Re: Lampka RGB 2

Nie chcę wklejać całego kodu bo za duzo miejsca zajmuje... nie rozumie w czym problem poprostu zamieniasz linijkę:

If Sw_port <> 255 And Stan_portu = Sw_port Then

na linijki:

klawiatura = Sw_port and &B00011111                       'to trzeba dopisać
klawiatura = Sw_port or  &B01100000                       'to trzeba dopisać
If klawiatura <> 255 And Stan_portu = Sw_port Then        'tutaj zmienić

oraz w następnej linijce po:

Dim Animacja As Byte

dodajesz:

Dim Klawiatura as byte

Wszystko powinno działać, jeśli tak nie jest to zamieść jakiś screen z tym błędem co się pojawia

-

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 wilus14

program atmega8

zmieniłem program się skompilował ale guziki nadal nie działają lampka płynnie zmienia kolory ale na guziki nie reaguje

Portret użytkownika mirley

Re: Lampka RGB

Do których pinów masz podłączone te "guziki" i co jest na pozostałych pinach portu c?

-

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 wilus14

program atmega 8

do portów od pc0 do pc4 reszta portów jest wolna niepodpięta do niczego

Portret użytkownika mirley

Re: Lampka RGB


W takim razie zmodyfikujmy trochę procedurę "przyciski":

Przyciski:
klawiatura = Sw_port And &B00011111                       
If klawiatura <> &B00011111 And Stan_portu = Sw_port Then        
  Incr Licznik_sw
  If Licznik_sw = 10 Then
    Select Case Stan_portu
      Case &B00001111:                                             'plus
        Licznik_sw = 5
        If Szybkosc > 1 Then Decr Szybkosc
      Case &B00010111:                                             'minus
        Licznik_sw = 5
        If Szybkosc < 40 Then Incr Szybkosc
      Case &B00000111:                                             'plus i minus
        Stopbit = Not Stopbit
        Syg_led = 1
      Case &B00011110:                                             ' R
        Pozycja = 700
        Gosub Pozycja_do_rgb
      Case &B00011101:                                             ' G
        Pozycja = 400
        Gosub Pozycja_do_rgb
      Case &B00011011:                                             ' B
        Pozycja = 100
        Gosub Pozycja_do_rgb
      Case &B00001110:                                             'plus R
        Licznik_sw = 8
        If Rled < 100 Then Incr Rled
      Case &B00010110:                                             'minus R
        Licznik_sw = 8
        If Rled > 0 Then Decr Rled
      Case &B00001101:                                             'plus G
        Licznik_sw = 8
        If Gled < 100 Then Incr Gled
      Case &B00010101:                                             'minus G
        Licznik_sw = 8
        If Gled > 0 Then Decr Gled
      Case &B00001011:                                             'plus B
        Licznik_sw = 8
        If Bled < 100 Then Incr Bled
      Case &B00010011:                                             'minus B
        Licznik_sw = 8
        If Bled > 0 Then Decr Bled
      Case &B00011100:                                             ' R G
        Rled = 100
        Gled = 100
        Bled = 0
      Case &B00011001:                                             ' G B
        Rled = 0
        Gled = 100
        Bled = 100
      Case &B00011010:                                             ' R B
        Rled = 100
        Gled = 0
        Bled = 100
      Case &B00011000:                                              ' R G B
        Rled = 100
        Gled = 100
        Bled = 100
      Case &B00000110:                                             ' plus minus R
        Animacja = 0
      Case &B00000101:                                             ' plus minus G
        Animacja = 1
      Case &B00000011:                                             ' plis minus B
        Animacja = 2
 
    End Select
 
  End If
Else
  Stan_portu = Sw_port
  Licznik_sw = 4
End If
 
Return

teraz masz to wkleić do programu w miejsce istniejącej tam procedury "Przyciski:"

-

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 wilus14

program atmega8

dalej nic może problem polega na złym ustawieniu fusebitów?? mam ustawione tak moze ma być inaczej??[url=][/url]http://img42.imageshack.us/img42/5628/fusebity.png

Portret użytkownika mirley

Re: Lampka RGB 2

Fusebity są OK. Ale w tym przypadku i tak nie mogą one wpływać na działanie klawiatury.... narazie nie wiem co jest nie tak. Sam muszę to sprawdzić aby być pewnym.... ale na to będziesz musiał zaczekać... poprostu nie wiem kiedy mam te wszystkie rzeczy 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 wilus14

program atega8

ok dzięki:)

Portret użytkownika enterprise

Konfiguracja portów w celu modyfikacji klawiatury

Witam,
interesuje mnie, jak należy ustawić konfigurację portów, aby można było zastosować dodatkowe przyciski zastępujące naciskanie kilku klawiszy jednocześnie. Porty PD.5 i PD.6 łatwo dopisać do programu, to nie sprawia kłopotu. Natomiast w modyfikacji wystarczy sterowanie jedną diodą (porty PB.0 do PB.2) a porty PB.3 do PB.6 właśnie chciałbym wykorzystać jako wejściowe i tak np. klawisz z PB.3 do zwierany masy powodowałby wyświetlenie koloru białego(wszystkie trzy kolory naraz) bez potrzeby włączenia trzech klawiszy R,GiB naraz tak, jak w pierwotnym programie. Jest możliwość wykorzystania diod prostowniczych do rozbudowy układu pięcioprzyciskowego tak, by używać tylko jednego klawisza, jednak bardziej zależy mi na wykorzystaniu portów mikroprocesora. Szczególnie jak ustawić tę konfigurację portów oraz jak w programiku odczytywać stan portu (funkcja Case). Oczywiście na Attiny2313.

Portret użytkownika mirley

Re: Lampka RGB 2

Poczytaj sobie dokładnie jak działa procedura obsługi klawiatury którą zawsze stosuje. opracowałem dwa rodzaje: http://mirley.firlej.org/obsluga_klawiatury_wieloprzyciskowej Jednak musisz pamiętać że program lampki RGB na attiny2313 jest już napchany do końca i niewiele w nim zmieścisz

Co do konfiguracji portów to wykonuje się nią w początkowej części programu w linijkach:

Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00000000 : Portd = &B11111111

Pierwsza liczba binarna po Config oznacza typ wyprowadzeń dla całego portu. 0 to wejście a 1 wyjście. Druga liczba to wartości początkowe. Numeracja pinów jest w naturalnej binarnej kolejności: 7...5....3....0. Czyli w powyższym przykładzie cały port d jest wejściami a port d wyjściami. Nie muszę chyba przypominać że przycisk powinien być podłączony do 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 gosc

Kryształ

Witam.
Co to za pasta modelarska i jak zrobić z niej taki kryształ?

Portret użytkownika mirley

Re: Lampka RGB 2

Pasta modelarska to takie coś: http://www.szal-art.pl/pasta-modelarska-jovi-biala-paczka-1-kg_157_650/ po uformowaniu kształtu jak z plasteliny, twardnieje w ciągu 24 godzin lub coś koło tego. kryształ oczywiście musisz sobie kupić znaleźć na allegro lub poszukać w sklepach lampki z kryształem soli i żarówką w środku. Z pasty jest sama podstawa. Kryształu nie da się w prosty sposób zrobić (sam musi urosnąć), można próbować z solą (wzrost z roztworu soli) ale nie udało mi się nigdy nic takiego

-

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 R2-D2

Lampka RGB w C

Witam, chciałbym się podzielić małym kodem do animacji lampmki napisanym w języku C gdyż nie widziałem w postach by taki się pojawił, a myślę, że niektórym może się przydać. Jest to tylko animacja kolorów, bez żadnych dodatkowych funkcji. Do kompilacji użyłem AVR-GCC.

#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
 
 
/*0001-czerwony, 0010-niebieski, 0100-zielony  porty B  */
 
#define czas 5000
char kolor[4]={0x00,0x01,0x02,0x04};
short int i,j;
 
int main(void){
 
  DDRB  = 0x07;  
 
  /* Główna pętla */
  while(1){ 
   przejscie(1,2);
   przejscie(2,3);
   przejscie(3,1);
   przejscie(1,3);
   przejscie(3,2);
   przejscie(2,1);
   przejscie(1,0);
   przejscie(0,2);
   przejscie(2,0);
   przejscie(0,3);
   przejscie(3,0);
   przejscie(0,1);
 
  }  
}
 
/* Funkcja przejscia*/
void przejscie(i,j) {
    for(short int t=0; t<=czas; t++){      
      PORTB = kolor[j];
      _delay_us(t); 
      PORTB = kolor[i];
      _delay_us(czas-t);
    }  
}

Portret użytkownika mirley

Re: Lampka RGB

Zamieść swój kod źródłowy z kilkoma zdaniami opisu na moim forum w dziale "Wasze opracowania-> kody źródłowe", tutaj nie powinien się on znajdować bo to miejsce tylko i wyłącznie dla pytań odnośnie opisywanej wyżej lampki 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 gosc

Witam. Jestem w trakcie

Witam. Jestem w trakcie tworzenia sznura z diodami led (dyfuzyjnymi). Poszczególne kanały sterowane miały by byś przez PWM jakiegoś avr`ka i mam pytanie jaki tranzystor można by zastosować aby uciągnął 50 diód na 1 kanał. Nie wiem ile pobierają prądu diody bo miernik mi właśnie padł, a nigdy nie mierzyłem, tak samo nie znam wielu tranzystorów i maksymalnego ich obciążenia. Dlatego proszę o jakieś propozycje.
Dziękuje

Portret użytkownika mirley

Re: Diody

Generalnie stwierdzenie Ile pobierają diody jest trochę bez sensu bo diody steruje się zawsze określonym prądem więc wiesz ile pobierają. Generalnie jedna zwykłą diodę tak się steruje aby płynął przez nią prąd do max 20mA ale czy to będzie 5mA czy np 12mA to zależy od diody. Zakładając nawet maksymalny prąd jaki napisałem czyli 20mA na diodę to daje ci 1A na kanał. No chyba że chcesz dać diody dużej mocy to wtedy pobór prądu może być nawet 1A na diodę ale raczej wątpię abyś takie diody stosował. jeśli stosujesz jakiś fabryczny moduł led to popatrz do specyfikacji ile to prądu pobiera i jakim napięciem ma byc zasilane.

Tranzystory możesz dać BUZ11 (MOSFET z kanałem N) wytrzymuje ogromny prąd a niewiele kosztują

-

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

witam. złożyłem Twój układzik

witam. złożyłem Twój układzik ale zastosowałem kwarc 10 MHz. Mam taki problem że animacja nie reaguje na przyciski lub robi to w bardzo wolny sposób i nie ma mozliwości tego sprawdzic. Czy jesli zmienie kwarc na 16 to bedzie wszystko ok?? czy jesli w tabeli dzialanie przycisków jest przechodzenie do np. koloru niebieskiego to oznacza to że animacja przejdzie do niebieskiego i zatrzyma sie na niebieskim, nie pójdzie dalej?

Portret użytkownika mirley

Re: Lampka RGB 2

Dla kwarca 16MHz będzie lepiej, 10MHz było w pierwszych testach i potem zmieniłem na 16MHz. Przyciski z przejściami do określonych kolorów działają w trybie gdy jest stop, zmieniają bezpośrednio kolor do określonego

-

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

bezposrednio czyli jak?

bezposrednio czyli jak? natychmiast?? czy po jakimś czasie?

-----

układ wogóle nie reaguje na przyciski. Co trzeba zmienic? Switche mam podłączone według schematu

Portret użytkownika Michalo_007

Diody RGB

A da się jakoś podpiąć diody RGB ze wspólną katodą bo takie znalazłem ?