Mini Lampka RGB 2 na Attiny24


Witam wszystkich.
Chcialem przedstawic moja przerobke projektu z tej strony Mini Lampka RGB 2

W oryginalnym projekcie lampki uzyty zostal Attiny2313. Poniewaz akurat nie posiadalem takiego, postanowilem dostosowac projekt projekt do Attiny24. Posiada on mniej wyprowadzen dlatego uzylem tylko jednej diody RGB. Najwiecej problemow sprawila obsluga klawiatury, poniewaz w oryginalnym projekcie byla na osobnym porcie, u mnie natomiast musiala byc na tym samym co dioda RGB.
Plytke zaprojektowalem w Eagle:

Program w Bascomie:

        '************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny24.dat"
$crystal = 20000000
 
Config Porta = &B00000111 : Porta = &B11111111
 
Config Pinb.2 = Output : Portb.2 = 1                        'dioda info'
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Porta.0
Gd Alias Porta.1
Bd Alias Porta.2
Syg_led Alias Portb.2
Sw_port Alias Pina
 
'*************  Nazwy Koniec  ****************
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Klawiatura 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 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
  Else
  Set Rd
  End If
 
 If Licznik < Gled Then
  Reset Gd
  Else
  Set Gd
   End If
 
 If Licznik < Bled Then
  Reset Bd
  Else
  Set Bd
  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:
 
Klawiatura = Sw_port And &B11111000                         'to trzeba dopisa?
 
If Klawiatura = &B11110000 Then If Szybkosc > 1 Then Decr Szybkosc       'plus
 
If Klawiatura = &B11101000 Then If Szybkosc < 40 Then Incr Szybkosc       'minus
 
If Klawiatura = &B11100000 Then                             'plus i minus
Stopbit = Not Stopbit
Syg_led = 1
End If
 
If Klawiatura = &B01111000 Then                             ' R
Pozycja = 700
Gosub Pozycja_do_rgb
End If
 
If Klawiatura = &B10111000 Then                             ' G
Pozycja = 400
Gosub Pozycja_do_rgb
End If
 
If Klawiatura = &B11011000 Then                             ' B
Pozycja = 100
Gosub Pozycja_do_rgb
End If
 
If Klawiatura = &B00111000 Then                             ' R G
 Rled = 100
 Gled = 100
 Bled = 0
End If
 
If Klawiatura = &B10011000 Then                             ' G B
 Rled = 0
 Gled = 100
 Bled = 100
End If
 
If Klawiatura = &B01011000 Then                             ' R B
 Rled = 100
 Gled = 0
 Bled = 100
End If
 
If Klawiatura = &B00011000 Then                             ' R G B
        Rled = 100
        Gled = 100
        Bled = 100
End If
 
If Klawiatura = &B01110000 Then                             'plus R
 If Rled < 100 Then Incr Rled
End If
 
If Klawiatura = &B01101000 Then                             'minus R
 If Rled > 0 Then Decr Rled
End If
 
If Klawiatura = &B10110000 Then                             'plus G
 If Gled < 100 Then Incr Gled
End If
 
If Klawiatura = &B10101000 Then                             'minus G
 If Gled > 0 Then Decr Gled
End If
 
If Klawiatura = &B11010000 Then                             'plus B
 If Bled < 100 Then Incr Bled
End If
 
If Klawiatura = &B11001000 Then                             'minus B
 If Bled > 0 Then Decr Bled
End If
 
If Klawiatura = &B01100000 Then                             ' plus minus R
        Animacja = 0
        End If
If Klawiatura = &B10100000 Then                             ' plus minus G
        Animacja = 1
        End If
If Klawiatura = &B11000000 Then                             ' plis minus B
        Animacja = 2
        End If
Waitms 50
 
        Return




Portret użytkownika grizz

Pokaż zdjęcia efektu

Pokaż zdjęcia efektu końcowego :)

Portret użytkownika mkcoval

zdjęcia efektu

Narazie moge pokazac dzialajacy projekt, jednak jeszcze nie wymyslilem obudowy.
Akurat nie mam teraz zasilacza od lampki, wiec podpialem na szybko do regolowanego:

pozdrawiam

Portret użytkownika matrix

Re: Mini Lampka RGB 2 na Attiny24

moje zdanie na ten temat:
ogólnie projekt ok, ale:
- płytka wykonana dość niechlujnie (nie mówię że ja robię super płytki)
- strasznie dużo cyny po polutowaniu wszystkiego
- jeśli masz procek w wersji przewlekanej to po co wchodziłeś w smd z resztą elementów?

całość wyglądała by o wiele lepiej jako wersja przewlekana.
ogólnie na plus.

Portret użytkownika mkcoval

Dzieki za opinie. Polutowane

Dzieki za opinie.

Polutowane niechlujnie bo meczylem sie troche z pinami od programowania. Nie chcialem ich wyrwac razem za sciezkami przy odlaczniu programatora. Dlatego dalem tyle cyny.
Calosc bedzie jeszcze na koniec pomalowana lakierem do PCB.
Co do komponentow, to plytka byla projektowana do razu pod czesci, ktore posiadalem czyli z odzysku.

pozdrawiam