Elektronika Radiotechnika Elementy Schematy - Hobby dla każdego



Strona Główna | Artykuły i Schematy | Tutoriale | Pliki do pobrania | Szukaj | Forum | Mapa Serwisu | Zobacz nas na YouTube!
Nawigacja
Strona Główna
Artykuły i Schematy
Elektronika
Elementy
Audio
Auto
Alarmy
Dla domu
Komputer
Radio
Robotyka
Telefonia
Video
Warsztat
Zabawa
Lampy elektronowe
Tutoriale
Pliki do pobrania

FAQ
Szukaj
Forum
Kontakt
O nas

Katalog Stron WWW
Mapa Serwisu
Ostatnio na forum
Najnowsze tematy
These students make ...
Within “Save T...
People watch lion da...
ile the world looks for
Devin Booker scored ...
ng issues of land an...
To Kill a Mocking
e, becoming the firs...
]Nike Air Max 93 UK[/ur
How to reduce stress...
Najciekawsze tematy
line Storage [1]
These students ma... [0]
Within “Sav... [0]
People watch lion... [0]
ile the world loo... [0]
Aktualnie online
Gości online: 3

Użytkowników online: 0

Łącznie użytkowników: 12,837
Najnowszy użytkownik: Hilton William
drukujkomentujLedomania - wasze projekty
...Numery programów sa zapisane w kodzie dwójkowym 0000|2 =0|10,
0001|2 = 1|10.itd.

Sterowanie diody RGB odbywa sie poprzez programowalny PWM(regulacja
szerokości impulsu), który steruje tranzystor N-MOS o wydajności do 750mA. licząc, że
dioda LED pobiera 25mA, mamy możliwość równoległego zasilenia do 30 takich diod.

|PROGRAM|
//Program odpowiedzialny za przebieg PWM.
cli(); //zablokowane przerwania
status=SREG; // zapamiętany rej.statusowy
TCNT0=200; //liczy od 250 do zera
licznik++;
if (licznik==100) licznik = 0;
//Wyjścia PWM - PB1, PB2, PB3.
if (licznik if (licznik if (licznik SREG=status;
sei();
}
Na początku przerwanie zostaje zablokowane, a rejestr SREG przypisany do

zmiennej status. Licznik liczy od 250 do 0. Co przerwanie, dodajemy 1 do licznik, a do uzyskania wartości 100. Wartość zmiennej licznik określa nam, że wypełnienie może
zawierać sie miedzy 0-100. Gdy licznik jest mniejszy od PWMx, to ustawiamy PORTBx na
stan wysoki (komenda sbi(PORTB,x) ), zas gdy jest PORTBx ustawiamy na stan niski
(komenda cbi(PORTB, x) ). Przy zegarze 8MHz oraz nie dzielimy zegara w przerwaniach, to
daje nam to częstotliwość 0.96kHz.
Wiedząc już, jak działa część programu odpowiedzialna za sterowanie diod, zajmijmy
sie samym efektem przełączania poszczególnych kolorów. Mona to zrealizować na różne
sposoby. Np. doświadczalnie dobierając wypełnienie poszczególnych wyjść PWMx, ale jest
to mozolne i czasochłonne. Przedstawię metodę prosta i szybsza. Otwieramy program PAINT
w opcjach wybieramy kolor -> edytuj kolor, potem klikamy definiuj kolory
niestandardowe. Widzimy tam, że kademu kolorowi przypisane są odpowiednie wartości czerwonego, zielonego, niebieskiego oraz odcień szarości, nasycenie i jasność.
Interesuje nas tylko odcienie czerwonego, zielonego oraz niebieskiego. Używając prostego
wzoru, wyliczamy wartości odpowiednio PWM1, PWM2, PWM3.
PWMx = 100-
255
(wartosc _ koloru)*100

gdzie x = 1,2,3.
Oczywiście wiemy, że gdy uzyskamy wartość PWMx = 1.34… to bierzemy 1 lub 2.
Mamy już działająca lampkę, która wyświetla nam wymarzone kolory. Czas, wiec zając sie
płynnym przejściem pomiędzy kolorami.
|PROGRAM|
if(!bit_is_clear(PINC,PC3))
{
PWM1=100;
PWM2=100;
PWM3=100;
if(bit_is_clear(PINC,PC2))
{
if(bit_is_clear(PINC,PC1))
{
if(bit_is_clear(PINC,PC0))
{
porty=PINC;
//**********************ZAŁĄCZENIE NIEBIESKIEGO

for(char y=0;y<50;y++) //petla od 0 do50
{
PWM1=PWM1-1;
if(porty==PINC);else break; // zmienimy program, wyjscie z petli
_delay_ms(50);
}
//************************ ZAŁĄCZENIE ZIELONEGO
for(char y=0;y<50;y++)
{
PWM2=PWM2-1;
if(porty==PINC);else break;
_delay_ms(50);
}
//************************** ZAŁĄCZENIE CZERWONEGO


for(char y=0;y<50;y++)
{
PWM3=PWM3-1;
if(porty==PINC);else break;
_delay_ms(50);
}
//***********************WYŁĄCZANIE NIEBIESKIEGO
for(char y=0;y<50;y++)
{
PWM1=PWM1+1;
if(porty==PINC);else break;
_delay_ms(50);
}
//************************* WYŁĄCZANIE CZERWONEGO

for(char y=0;y<50;y++)
{
PWM3=PWM3+1;
if(porty==PINC);else break;
_delay_ms(50);
}
//************************ WYŁACZANIE ZIELONEGO
for(char y=0;y<50;y++)
{
PWM2=PWM2+1;
if(porty==PINC);else break;
_delay_ms(50);
}
}
}
}
}

Najpierw przypisujemy, PWMx=100 (stan wysoki na tranzystorach), jest to wartość
początkowa (diody zgaszone). Następnie poprzez instrukcje IF(…) wybieramy nasz program
(sa 4 instrukcje IF, gdy mamy 4 przyciski). Gdy warunki zostana spełnione to wykonywana
jest pelta FOR(…), której zadaniem jest zmniejszanie lub zwiekszanie wartosci PWMx.
Kolejne pętle FOR(…) odpowiadają innym wartością PWMx. W efekcie daje płynne
przejście pomiędzy kolorami.
No to mamy gotowa lampke, która potrafi świecić wymarzonymi kolorami. By
uzyskać niepowtarzalny efekt, umieściłem lampkę pod kawałkiem szkła, a na nim wazon
szklany, na którym możemy własnoręcznie wyrzeźbić jakieś różyczki itp.
Lampka nadaje sie idealnie na prezent dla dziewczyny np. na walentynki lub inna
okazje. Projekt wykonał nasz kolega Thor :)


Oto film prezentujący lampkę



Komentarze
#1 | bastek206p dnia 23.12.2009 13:13:03
thor gratuluje wygranej ;D
#2 | OpAmp dnia 05.01.2010 00:22:03
czemu wygranej? fakt bardzo ładana praca ale każdy ma szansę Usmiech
#3 | R3miX dnia 07.02.2010 11:05:16
Myślę że ten projekt zdecydowanie wybija się wśród innych i to on zasługuje na wygraną Usmiech
#4 | bronek dnia 21.02.2010 20:04:44
BARDZO DOBRY
Dodaj komentarz
Zaloguj się, aby móc dodać komentarz.
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartośœć strony

Zaloguj się lub zarejestruj, żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
Logowanie
Nazwa użytkownika

Hasło



Nie masz jeszcze konta?
Zarejestruj się

Nie możesz się zalogować?
Poproœś o nowe hasło
Shoutbox
Musisz zalogować się, aby móc dodać wiadomość.

15 Jan : 08:38
Smutny ... Wzajemnie, i również Życzę powodzenia w tym roku w życiu prywatnym/zawodowy
m, dużo Zdrowia!

15 Jan : 08:38
Witam tych, którzy jeszcze tutaj pozostali, choć od pewnego czasu obserwuję to aż mnie zabolało, że forum się tak osunęło. Szok Bardzo szkoda mi go, co za id*oci się rejestrują że to zniszczone niemal

02 Jan : 20:04
I tym optymistycznym akcentem, życzę udanych projektów i najlepszego w Nowym Roku. Oczko

01 Jan : 20:45
Oczywośie nie żywie do Ciebie pretensji a wręcz podziwiam że sam zostałeś tak długo. pozdrawiam.

01 Jan : 20:44
romek_xx wiem obserwuję regularnie forum i widziałem twoje walki i że ostałeś się chyba sam wśród moderacji, po prostu przykro mi iż forum z którym wkraczałem w świat elektroniki zaginie ;( Oczywiśc

26 Dec : 21:45
R3miX: cd:...Poszukaj jak nie wiesz gdzie i nie masz jak ich znaleźć. Ja jak mam za frajer szukać? wolę głupoli na YT oglądać. Czasem bywało że usunąłem SB a jutro było to samo. Bez sensu walka

26 Dec : 21:44
R3miX: Chcesz poświęcić 2-4 godz. dziennie za free na czyszczenie spamu? Ja nie mam żadnej pomocy, taki liyijing46 ma 159, jkelley3 -95, scott154 -157. I wielu innych czasem ponad 1000 postów na forum

17 Dec : 22:03
straszne na polskim forum żeby przeczytać trzeba używać translatora i te tematy ?

12 Dec : 21:26
Nikt ostatnio nie moderuje i bałagan się robi ;(

12 Dec : 19:06
co się dzieje z eresem ?

Copyright ERES S.I. & " Sendela Design a33; 2003-2018 - "Elektronika Radiotechnika Elementy Schematy"
Reprodukcja bez zezwolenia zabroniona.
Serwis nie ponosi odpowiedzialności za ewentualne szkody powstałe przy wykorzystaniu zawartych w nim informacji.

Używamy informacji zapisanych za pomocą cookies i podobnych technologii m.in. w celach reklamowych i statystycznych oraz w celu dostosowania naszych serwisów do indywidualnych potrzeb użytkowników.
Powered by PHP-Fusion copyright © 2002 - 2019 by Nick Jones.
Released as free software without warranties under GNU Affero GPL v3. website monitoring services