Ostatnio bardzo dużo się u mnie działo w temacie przeprowadzki do nowego domu, przez co niestety zaniedbałem trochę bloga. Mam jednak nadzieję że teraz znajdę trochę więcej czasu na nowe wpisy. Udało się produkcyjnie odpalić sterowanie oświetleniem za pomocą arduino i OpenHab. Wrażeniami z tego rozwiązania podzielę się jednak w kolejnych wpisach.
Dzisiaj chciałem pochwalić się działaniem sterownika oświetlenia schodów, o którym pisałem jakiś czas temu. Płytka leżała sobie od tego czasu w szufladzie i czekała aż schody będą gotowe.
Teraz już mogę pokazać końcowy rezultat. Warstwa sprzętowa pozostała bez zmian. Gruntownie zostało zmienione oprogramowanie. Wcześniejsza wersja nie przyjmowała żadnych sygnałów w trakcie zapalania / gaszenia oświetlenia. Obecnie nie ma już tego ograniczenia.
W projektach tego typu świetne jest to, że mając jedno rozwiązanie sprzętowe można zmieniać działanie układu jedynie modyfikując oprogramowanie układu ATMEGA.
Przykładowo - w trakcie korzystania z oświetlenia pojawiła się potrzeba zapalania światła na stałe, bez automatycznego gaszenia. W prosty sposób udało się osiągnąć efekt jedynie zmieniając program.
Fajne... :)
Jeśli macie jakieś pytania lub uwagi, piszcie w komentarzach
Pod tym adresem znajdziecie pliki Eagle ze schematem i płytką (pamiętajcie że płytkę trzeba "oblać masą" przed wydrukiem):
https://drive.google.com/file/d/0BzJpXXOh01BRcTc4YXRyOUJnR00/view?usp=sharing&resourcekey=0-QLeEtdx8OaUEFYTvnlSHrg
EDIT2: Załączam aktualny kod źródłowy:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Tlc5940.h> | |
#include "ClickButton.h" | |
const int downButtonPin = 8; | |
const int upButtonPin = 6; | |
const int midButtonPin = 7; | |
int ledCount = 18; //liczba aktywnych wyjść (taśm led) | |
int brightness = 4095; //maksymalna jasność | |
int delayTime = 1; | |
int midStep = 13; | |
int outs[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; //wyjścia do których podpinane są taśmy | |
int outState[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; | |
// Nr. of buttons in the array | |
const int buttons = 3; | |
ClickButton button[3] = { | |
ClickButton (downButtonPin, LOW, CLICKBTN_PULLUP), | |
ClickButton (upButtonPin, LOW, CLICKBTN_PULLUP), | |
ClickButton (midButtonPin, LOW, CLICKBTN_PULLUP), | |
}; | |
int LEDfunction[buttons] = { 0, 0, 0 }; | |
const int DOWN_BUTTON = 0; | |
const int UP_BUTTON = 1; | |
const int MID_BUTTON = 2; | |
const int STAN_WYLACZONY = 0; | |
const int STAN_ROZJASNIANIE_OD_DOLU = 1; | |
const int STAN_SCIEMNIANIE_OD_DOLU = 2; | |
const int STAN_ROZJASNIANIE_OD_GORY = 3; | |
const int STAN_SCIEMNIANIE_OD_GORY = 4; | |
const int STAN_ROZJASNIANIE_OD_SRODKA = 5; | |
const int STAN_SCIEMNIANIE_OD_SRODKA = 6; | |
const int STAN_ROZJASNIANIE_CALOSCI = 7; | |
const int STAN_SCIEMNIANIE_CALOSCI = 8; | |
const int STAN_WLACZONY = 9; | |
const int SCIEMNIANIE_POJEDYNCZE_STEP = 5; | |
const int SCIEMNIANIE_CALOSCI_STEP = 10; | |
const int ROZJASNIANIE_POJEDYNCZE_STEP = 25; | |
const int ROZJASNIANIE_CALOSCI_STEP = 10; | |
int STAN = STAN_WYLACZONY; | |
void setup() | |
{ | |
Tlc.init(); | |
for (int i=0; i<buttons; i++) | |
{ | |
// Setup button timers (all in milliseconds / ms) | |
// (These are default if not set, but changeable for convenience) | |
button[i].debounceTime = 20; // Debounce timer in ms | |
button[i].multiclickTime = 250; // Time limit for multi clicks | |
button[i].longClickTime = 800; // Time until long clicks register | |
} | |
updateLed(); | |
} | |
void loop() | |
{ | |
for (int i=0; i<buttons; i++) { | |
// Update state of all buitton | |
button[i].Update(); | |
// Save click codes in LEDfunction, as clicks counts are reset at next Update() | |
if (button[i].clicks != 0) LEDfunction[i] = button[i].clicks; | |
// Simply toggle LED on single clicks | |
// (Cant use LEDfunction like the others here, | |
// as it would toggle on and off all the time) | |
if(button[i].clicks == 1) { | |
wlaczPianino(i); | |
} | |
// slow blink (must hold down button. 1 second long blinks) | |
if(LEDfunction[i] == -1) { | |
ustawStanStaly(i); | |
LEDfunction[i] = 0; | |
} | |
} | |
updateCircuitState(); | |
updateLed(); | |
delay(delayTime); | |
} | |
void updateLed() { | |
for (byte diode = 0; diode<ledCount;diode++) { | |
Tlc.set(outs[diode], brightness-outState[diode]); | |
} | |
Tlc.update(); | |
} | |
void updateCircuitState() { | |
if (STAN == STAN_ROZJASNIANIE_OD_DOLU) { | |
rozjasnianieOdDolu(); | |
} | |
if (STAN == STAN_SCIEMNIANIE_OD_DOLU) { | |
sciemnianieOdDolu(); | |
} | |
if (STAN == STAN_ROZJASNIANIE_OD_GORY) { | |
rozjasnianieOdGory(); | |
} | |
if (STAN == STAN_SCIEMNIANIE_OD_GORY) { | |
sciemnianieOdGory(); | |
} | |
if (STAN == STAN_ROZJASNIANIE_CALOSCI) { | |
rozjasnianieCalosci(); | |
} | |
if (STAN == STAN_SCIEMNIANIE_CALOSCI) { | |
sciemnianieCalosci(); | |
} | |
if (STAN == STAN_ROZJASNIANIE_OD_SRODKA) { | |
rozjasnianieOdSrodka(); | |
} | |
if (STAN == STAN_SCIEMNIANIE_OD_SRODKA) { | |
sciemnianieOdSrodka(); | |
} | |
} | |
void rozjasnianieOdSrodka() { | |
bool changed = false; | |
for (int diode = midStep; diode<ledCount;diode++) { | |
if (outState[diode] < brightness) { | |
int newState = outState[diode]; | |
newState = newState + ROZJASNIANIE_POJEDYNCZE_STEP; | |
if (newState > brightness) { | |
newState = brightness; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
for (int diode = midStep-1; diode>=0;diode--) { | |
if (outState[diode] < brightness) { | |
int newState = outState[diode]; | |
newState = newState + ROZJASNIANIE_POJEDYNCZE_STEP; | |
if (newState > brightness) { | |
newState = brightness; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_SCIEMNIANIE_OD_SRODKA; | |
} | |
} | |
void sciemnianieOdSrodka() { | |
bool changed = false; | |
for (int diode = midStep; diode<ledCount;diode++) { | |
if (outState[diode] > 0) { | |
int newState = outState[diode]; | |
newState = newState - SCIEMNIANIE_POJEDYNCZE_STEP; | |
if (newState < 0 ) { | |
newState = 0; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
for (int diode = midStep-1; diode>=0;diode--) { | |
if (outState[diode] > 0) { | |
int newState = outState[diode]; | |
newState = newState - SCIEMNIANIE_POJEDYNCZE_STEP; | |
if (newState < 0) { | |
newState = 0; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_WYLACZONY; | |
} | |
} | |
void rozjasnianieCalosci() { | |
bool changed = false; | |
for (int diode = 0; diode<ledCount;diode++) { | |
if (outState[diode] < brightness) { | |
int newState = outState[diode]; | |
newState = newState + ROZJASNIANIE_CALOSCI_STEP; | |
if (newState > brightness) { | |
newState = brightness; | |
} | |
outState[diode] = newState; | |
changed = true; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_WLACZONY; | |
} | |
} | |
void sciemnianieCalosci() { | |
bool changed = false; | |
for (int diode = 0; diode<ledCount;diode++) { | |
if (outState[diode] > 0) { | |
int newState = outState[diode]; | |
newState = newState - SCIEMNIANIE_CALOSCI_STEP; | |
if (newState < 0) { | |
newState = 0; | |
} | |
outState[diode] = newState; | |
changed = true; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_WYLACZONY; | |
} | |
} | |
void rozjasnianieOdDolu() { | |
bool changed = false; | |
for (int diode = 0; diode<ledCount;diode++) { | |
if (outState[diode] < brightness) { | |
int newState = outState[diode]; | |
newState = newState + ROZJASNIANIE_POJEDYNCZE_STEP; | |
if (newState > brightness) { | |
newState = brightness; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_SCIEMNIANIE_OD_DOLU; | |
} | |
} | |
void sciemnianieOdDolu() { | |
bool changed = false; | |
for (int diode = 0; diode<ledCount;diode++) { | |
if (outState[diode] > 0) { | |
int newState = outState[diode]; | |
newState = newState - SCIEMNIANIE_POJEDYNCZE_STEP; | |
if (newState < 0) { | |
newState = 0; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_WYLACZONY; | |
} | |
} | |
void rozjasnianieOdGory() { | |
bool changed = false; | |
for (int diode = ledCount-1; diode>=0;diode--) { | |
if (outState[diode] < brightness) { | |
int newState = outState[diode]; | |
newState = newState + ROZJASNIANIE_POJEDYNCZE_STEP; | |
if (newState > brightness) { | |
newState = brightness; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_SCIEMNIANIE_OD_GORY; | |
} | |
} | |
void sciemnianieOdGory() { | |
bool changed = false; | |
for (int diode = ledCount-1; diode>=0;diode--) { | |
if (outState[diode] > 0) { | |
int newState = outState[diode]; | |
newState = newState - SCIEMNIANIE_POJEDYNCZE_STEP; | |
if (newState < 0) { | |
newState = 0; | |
} | |
outState[diode] = newState; | |
changed = true; | |
break; | |
} | |
} | |
if (!changed) { | |
STAN = STAN_WYLACZONY; | |
} | |
} | |
void wlaczPianino(int button) { | |
/* | |
jesli swiatla byly wlaczone, tylko plynnie wylaczamy | |
*/ | |
if (STAN == STAN_WLACZONY) { | |
if (button == DOWN_BUTTON) { | |
STAN = STAN_SCIEMNIANIE_OD_DOLU; | |
} | |
if (button == UP_BUTTON) { | |
STAN = STAN_SCIEMNIANIE_OD_GORY; | |
} | |
if (button == MID_BUTTON) { | |
STAN = STAN_SCIEMNIANIE_OD_SRODKA; | |
} | |
} | |
/* | |
jesli swiatla byly wylaczone, wtedy plynnie wlaczamy | |
*/ | |
if (STAN == STAN_WYLACZONY) { | |
if (button == DOWN_BUTTON) { | |
STAN = STAN_ROZJASNIANIE_OD_DOLU; | |
} | |
if (button == UP_BUTTON) { | |
STAN = STAN_ROZJASNIANIE_OD_GORY; | |
} | |
if (button == MID_BUTTON) { | |
STAN = STAN_ROZJASNIANIE_OD_SRODKA; | |
} | |
} | |
} | |
void ustawStanStaly(int button) { | |
Serial.print("ustawStanStaly "); | |
Serial.print(button); | |
Serial.print(" "); | |
Serial.println(STAN); | |
if ( | |
STAN == STAN_WLACZONY || | |
STAN == STAN_SCIEMNIANIE_OD_DOLU || | |
STAN == STAN_SCIEMNIANIE_OD_GORY || | |
STAN == STAN_SCIEMNIANIE_OD_SRODKA | |
) { | |
STAN = STAN_SCIEMNIANIE_CALOSCI; | |
} | |
if ( | |
STAN == STAN_WYLACZONY || | |
STAN == STAN_ROZJASNIANIE_OD_DOLU || | |
STAN == STAN_ROZJASNIANIE_OD_GORY || | |
STAN == STAN_ROZJASNIANIE_OD_SRODKA | |
) { | |
STAN = STAN_ROZJASNIANIE_CALOSCI; | |
} | |
} |
Szacun ziom!
OdpowiedzUsuńNo i gdzie mój komentarz!? Napisałem, że czaderskie!
OdpowiedzUsuńJest Twój komentarz, dzięki :)
OdpowiedzUsuńMocne, robi wrażenie :)
OdpowiedzUsuńSuper gratulacje niezła robota !
OdpowiedzUsuńMógł byś zamieścić oprogramowanie do atmegi gdyż na twój wzór zrobiłem podobny który już działa i spisuje się rewelacyjnie .Dzięki
Pozdrawiam
Załączyłem zmieniony kod źródłowy
UsuńSuper sprawa - czekam na opis :)
OdpowiedzUsuńMógłbyś jeszcze umieścić kod źródłowy pliku "ClickButton.h" ??
OdpowiedzUsuńTo biblioteka: https://code.google.com/p/clickbutton/
UsuńCzy byłaby możliwość wysłania pliku z eagla lub schematu płytki do wydrukowania i wytrawienia? Jeśli jest możliwość to proszę o kontakt hipek189@gmail.com z góry Dziękuje
OdpowiedzUsuńa ja mam pytanie apropo oswietlania ktorego uzyles? to jakies paski led czy co to jest i jak jest to podlaczone?
OdpowiedzUsuńSuper to wymysliles, Ale brakuje mi jeszcze wyjscia na przekaznik odcinajacy zasilanie jak schody sa wylaczone. Ja u siebie planuje zrobic podobnie ale z wyjsciem na przekaznik i kontroler pozostanie z Arduino.
OdpowiedzUsuńDlaczego? 1W mocy to rocznie 8.8kWh czyli ok 5PLN
kontroler to tylko 1-1.5W ale zasilacz to 10W+ a do tego garsc tranzystorow to juz calkiem sporo.
Schody swieca sie tylko "przejsciowo" wiec marnowanie takiej energii na samo standby to dla mnie nieprzyzwoicie za duzo.
Co o tym myslisz?
pozdrawiam
Masz rację, tylko że zasilacz do którego mam podpięty sterownik wykorzystuję jednocześnie do innych układów które muszą być stale zasilane, więc u mnie takie rozwiązanie się nie sprawdzi
OdpowiedzUsuńno dobrze,
OdpowiedzUsuńale te tranzystory sie tez grzeja na standby a schody pala sie na dobe jakies ok 10 minut.
I tak caly rok na okraglo, nie boisz sie ze beda sie zbyt szybko 'palic'?
A z tego co zauwazylem TLC5940 oraz Ethernet shield korzystaja z tych samych wyjsc SPI, czy to oznacza, ze tych dwoch rozwiazan nie da sie ze soba polaczyc i uzytkowac jednoczesnie? czy cos z tym juz robiles?
Tranzystory są dość wytrzymałe. Nie zauważyłem żadnego przegrzewania, więc powinny działać dość długo. Nie pamiętam już dokładnie jak jest z TLC, ale czy nie da się przepiąć go na inne PIN'y?
OdpowiedzUsuńrozumiem, ze zasilanie 5V do kontrolerow/arduino tez bierzesz z tego samego zasilacza.
OdpowiedzUsuńPytam bo chcialbym zrobic inteligentne oswietlenie w domu na jednym kontrolerze ale:
-potrzebuje 96 wyjsc na przekazniki lub tranzystory/triaki
-ok 120 wejsc na przyciski (96 na kazdy + grupowce)
u ciebie same schody to 18 obwodow.
z tego co wiem to TLC obsluguje tylko wyjscia ale nie jestem pewny czy nie konfliktuje sie z ethernet shieldem a z kolei np PCF8574 tylko do 64 I/O a PCF8575 do 128 wejsc/wyjsc ale to i tak malo.
zatem planuje polaczyc TLC + PCF + Ethernet.
Jakys byl w stanie u siebie zrobic sterowanie schodami przez internet to by mi pomoglo.
Jakbys chcial cos zrobic wspolnie to sie polecam.
pzdr
Witam
OdpowiedzUsuńJestem początkującym w programowaniu mikrokontrolerów i chciałem wykorzystać twój kod w moim projekcie. I tu pojawiły się schody :) chodzi o to która część kodu decyduje o tym ile zaświeci się schodów w dół a ile w górę po naciśnięciu klawisza na półpiętrze. Mam inny układ schodów 8 do półpiętra i 7 od półpiętra w górę i nie mogę tego ogarnąć.
Pzdr
Zmienna midStep (ustawiona na 13) określa który schodek licząc od dołu wypada na półpiętrze
UsuńDzięki wielkie za ekspresową odpowiedź, zachęciłeś mnie do dalszych zmagań. Pozostało mi tylko czekać na Tlc5940 z china
Usuńciekawy blog, będę częściej zaglądał
Witam
OdpowiedzUsuńSuper to wygląda. U mnie schody i kabelki już są, także powoli zabieram się za montaż. Co do opcji dodatkowych to może załączanie na stałe oświetlenia pierwszego i ostatniego stopnia na np. 20-40% mocy. Jako takie oświetlenie nawigacyjne co by w nocy trafić do schodów. Czy zastosowałeś tranzystor IRF 512 czy jakiś inny? Ile diod na metr jest w taśmie którą zastosowałeś? Czy mógłbyś wysłać plik eagla na e_tomi@tlen.pl. Z góry dziękuję
Witam
UsuńCzy mógłbyś podesłać plik eagla? Z góry dziękuję za odpowiedź
Jest załączony do wpisu :)
UsuńJuż doczytałem, że plik jest zamieszczony. Pozdrawiam
UsuńWitam czy mogę prosić o wzur płytki drukowanej i pliku hex do atmegi na marcin94_1981@o2.pl
OdpowiedzUsuńDziękuje
Ten komentarz został usunięty przez autora.
OdpowiedzUsuńŚwietny projekt,przymierzam się do zmiany swojego dotychczasowego sterownika na taki jak Twój,próbowałem wkleić kod do arduino ale sypie błędami,czy masz może plik w pde?Pozdrawiam!
OdpowiedzUsuńPliku pde niestety nie mam. Kod jest kompletny, więc powinien się kompilować. Być może nie masz dogranych bibliotek do arduino?
UsuńZgadza się problem tkwił w bibliotekach,dzięki za podpowiedź.Jeśli mógłbym to poproszę o plik eagla na quadrokopter1@gmail.com.Dziękuję.
OdpowiedzUsuńWitam jakich bibliotek uzyłes
OdpowiedzUsuńWitam czy mogę prosić o wzur płytki drukowanej i pliku hex do atmegi na filipowski.jacek451@gmail.com .Dziękuje
OdpowiedzUsuńzałączyłem pliki Eagle
OdpowiedzUsuńWitam czy zamiast irf512 mogą być inne tranzystory?
OdpowiedzUsuńwitam po wgraniu kodu do płytki arduino diody świecą potem gasną i znowu się zapalają i tak zostaje a powinno być odwrotnie proszę o pomoc.
OdpowiedzUsuńTo wina źle podłączonych diod. Katody podłączamy do masy, anody do wyjścia TLC i pomiędzy wyjściem TLC a plusem zasilania rezystor.
UsuńWitam,
OdpowiedzUsuńniestety nie wiem w jaki sposób mógłbym pomóc bez dostępu do płytki... Schemat i kod na pewną są ok. Kilka osób już robiło wg tego i układ działał poprawnie...
Witam.projekt super. Wykonałem ten sterownik i niby wszystko fajnie tylko niem czemu zapalanie diod odbywa się co jakieś 1,5 sekundy a wygaszanie przez około minute,nie wiem co mogłem zrobić nie tak.Proszę o pomoc
OdpowiedzUsuńCzasy załączania i wygaszania dla poszczególnych sekcji są zdefiniowane zdaje się zmiennymi STEP w kodzie źródłowym
UsuńMogłeś nie ustawić dla atmegi taktowania na zewnętrzny oscylator 16MHz. A pracuje ona na wewnętrznym 1MHz lub np. 8MHz
UsuńCzy mógłbyś podać źródło tych irf512?Ewentualnie jakie zastosować zamienniki?Dziękuję i pozdrawiam!
OdpowiedzUsuńZastosowałem IRF520, testy przeszły pozytywnie ;)
Usuńa Ja mam pytanie widzę, że na płytce są otwory pod montaż, czy stosowałeś jakieś pudełko z gotowych czy tak poprostu, jeśli z gotowych to poproszę o link do pudełka
OdpowiedzUsuńProjekt rewelacyjny, też chce cos takiego zrobić u siebie Tylko muszę przekonać żonę, bo wiąże się to z bałaganem (kuciem ściany itp...i tak ja będę sprzątał)
Pozdrawiam ...
Witam, jestem fanem tak użytecznych projektów, można zapytać o dokładną listę potrzebnych części żeby to skleić ? Napewno 2 x TLC5940(po 16x pwm na 1 kości), Arduino, Zasilacz 12v, Płytki Stykowe, tranzystory x ilość taśm (IRF520N ?), kondensatory (jakie ?), przewody połączeniowe, rezystory (ile ohm?), stabilizator napięcia 5v (jakiś model/nr?). Wtedy to skleje i będę mógł zastosować u siebie w domu. Dzięki :)
OdpowiedzUsuńAutorze czy jestes w stanie narysowac schemat podlaczenia przewodow w fritzing ? Juz kilka dni probuje to wszystko podlaczyc do kupy ale dziala zawsze inaczej niz powinno :)
OdpowiedzUsuńFizycznie pewnie byłbym w stanie, ale niestety nie mam na to czasu :(
UsuńKilka osób uruchomiło z sukcesem projekt na podstawie podanego schematu, więc po prostu musi zadziałać :)
Jakiej taśmy led użyłeś, ile diod na metr?
OdpowiedzUsuńSzczerze mówiąc to już nie pamiętam. Jakaś zwykła taśma kupowana na aliexpress
UsuńZastanawiam się nad 150 LED 3528 SMD - 30 LED/m. Pobiera to 2,4W/m , ale nie wiem czy nie będzie za ciemno. Generalnie fajny pomysł. Gratuluje.
UsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńWitam, czy mógłbym prosić o załączenie lub przesłanie kodu źródłowego - we wpisie na końcu nie widzę żadnego odnośnika tylko sam tekst "EDIT: Załączam aktualny kod źródłowy:" Dziękuję i pozdrawiam.
OdpowiedzUsuńKod jest widoczny na listingu
UsuńJest faktycznie, tylko zablokowali mi GitHub w pracy :) Przepraszam za zamieszanie...
OdpowiedzUsuńDzięki temu może będę mógł dołożyć parę cegiełek od siebie :)
Witam
OdpowiedzUsuńMam szybkie pytanko, bo głowię się nad tym. Jak w eaglu płytkę zalać masą?
Czy dałoby się użyć zamiast włączników dzwonkowych 2 czujniki ruchu? Jeden na dole, drugi na górze.
OdpowiedzUsuńNa taki projekt nie potrzebny jest układ TLC5940. Wystarczyła by sama atmega, ma na tyle wyjść.
OdpowiedzUsuńNie ma na tyle wyjść PWM... Wyjścia cyfrowe nie załatwią płynnego rozjaśniania i przyciemniania
UsuńŚwietny układ. Gratuluję !
OdpowiedzUsuńCzy może kolega dać wskazówkę w którym miejscu zmienić program aby działał tylko na 10 schodków bez półpiętra?
Pozdrawiam
JarekM
wystarczy zmienić zmienną ledCount zmienić na 10 i nie podłączać przełącznika od półpiętra :)
UsuńDZIĘKUJĘ ZA PODPOWIEDŹ !!! Będę testowac jak już zrobię układ. Moze uda mi się zmniejszyc go trochę gabarytowo (ew. zlikwodowac jeden układ TLC) bo fajnie by było to wcisnąc w obudowę do szyny TH-35 w rozdzielnicy :)
OdpowiedzUsuńTymczasem kończę się pastwic nad sterownikiem do wentylatora kominkowego prototyp na stykówce chodzi, pcb z eagla jest, zostalo wytrawic plytke i sprawdzic :)
Pozdrawiam
JarekM
Witam
OdpowiedzUsuńZ jakiej wersji Eagla korzystałeś , ja mam 7.5.0 wersja demo i nie mogę otworzyć schematu.
Również jestem na etapie tworzenia takiego sterownika tylko na osiem schodów , zamiast przełączników dwie czujki PIR , oraz załączanie zasilania na diody dopiero po zapadnięciu zmroku.
Pozdrawiam
Uzi008
Witam
OdpowiedzUsuńMa ktoś jakieś info gdzie w PL można kupić TLC5940
Robert
W Polsce nie, ale na www.aliexpress.com nie ma problemu
UsuńWitam. Mam jeszcze pytanie. W jakim programie (środowisku) kolega kompilował program? Biblioteki tlc5940 i clickbutton są napisane dla arduino i pod eclipse jest kłopot z ich załadowaniem. Rozumiem że trzeba było wgrac bootloader arduino do atmegi 328 i to pewnie poprzez samo arduino?
OdpowiedzUsuńW Arduino IDE skompilowało się bez błędów. Wyexportowało 3 pliki. 1 z kodem źródłowym, 2- HEX i 3 - HEX z bootloaderem. Czy wystarczyłoby wgrac tego hexa z bootloaderem bezposrednio do atmegi poprzez np. USBASP czy STK-200 ?
UsuńZ tego co pamiętam ja wgrywałem przez USBASP bezpośrednio z arduinoIDE.
UsuńInnych sposobów niestety nie próbowałem
Witam
UsuńWidzę że temat wsadu został poruszony a więc podepnę się kompilowanie zawsze było kłopotliwe dla mnie czy mogę prosić o skompilowany wsad do Atmegi i jakie powinny być ustawienia Fuse Bity fabryczne +zew kwarc ? robert_kazmierski@interia.pl dziękuje
Robert
Witam
OdpowiedzUsuńMam pytanie co do TLC5940. Czy trzeba programować układ czy wystarczy samą ATMEGE?? Płytke już wykonałem i jestem w trakcie lutowania ale pytanie czy zastępczo można wykorzystac IRF510?? posiada podobne parametry jak 512. Efekt finalny jest powalający. Życzę kolejnych owocnych prac z Atmegą.
Ja w końcu z tego co pamiętam zastosowałem IRFZ44n.
UsuńProgramuje się wyłącznie atmegę, ale do ArduinoIDE będziesz potrzebował bibliotek dla obsługi TLC
Biblioteki do IDE można dograć bez problemu. Ale czy w arduino UNO można atmege włożyc i wsad do niej wrzucić?? Uno ma atmege na stopce co jets atutem do przełożenia i zaprogramowania atmegi. Ja zakupiłem IRF510 powinny być jak znalazł. Z TLC jest problem w nabyciu ale na allegro już się ukazały.
OdpowiedzUsuńallegro.pl/tlc5940nt-16x-pwm-led-sterownik-spi-arduino-avr-i5935201595.html
Powinny być jak znalazł.
A tego już nie wiem. Jeśli masz atmegę z wgranym bootloaderem to teoretycznie powinno się dać. Ja wgrywałem przez usbasb
OdpowiedzUsuńWszystko mnożna zrobic również bez płytki arduino i bez bootloadera, ale jeszcze tego nie testowałem:
OdpowiedzUsuńhttp://wileczeknet.blogspot.com/2014/01/po-co-mi-to-cae-arduino.html
Właśnie jestem po testach. Udało się i działa na razie na płytce stykowej bez tranzystorów IRF. W związku z tym iż nie posiadam płytki arduino ani również programatora USBASP, do załadowania wsadu użyłem zrobionego pod port LPT zwykłego STK200. Postępując zgodnie instrukcjami w linku: http://wileczeknet.blogspot.com/2014/01/po-co-mi-to-cae-arduino.html
OdpowiedzUsuńTo czego nie było w tym linku to dodanie programatora stk200 gdzie trzeba było dopisac kilka linijek w pliku programers.txt w arduino IDE.
Ustawienia fusebitów też są bardzo dobrze opisane jak ustawic w programie AVR Burn-O-Mat.
Podsumowując poprzez tak skonfigurowane środowisko Arduino IDE można pisac, kompilowac i wgrywac programy na atmegę bezpośrednio z Arduino IDE bez bootloadera i bez samego Arduino stosując jakikolwiek programator dla procesorów AVR. Jeszcze taka uwaga - W najnowszym Arduino IDE 1.6.7 nie udało mi się tego zrobic dopiero po zaisntalowaniu wersji 1.0.5 poszło bez problemów.
Witam
OdpowiedzUsuńCo do wgrywania bootloadera przez arduino jest to osiągalne tylko trzeba dobrze szukać. ten proces dziś mi się udał i Atmega jest już zaprogramowana. Mam jeszcze prośbę do Pana Anatola czy jest możliwość wysłania zdjęcia płytki sterownika PCB z dwóch stron bo chciałbym porównać efekt końcowy z Pana.
e-mail do mnie: l.gadzinskiu@gmail.com
Pozdrawiam
Poprawka e-mail gadzinskiu@gmail.com
Usuńczyli można zaprogramować atmega na podstawce arduino uno i potem zamontować na płytce?
UsuńW końcu udało mi się znaleźć chwilę czasu i wykonałem ów sterownik,wykorzystując arduino nano v.3 oraz płytkę z TLC i tranzystorami,którą sam wytrawiłem.Wpakowałem to w obudowę na szynę DIN Z101 wszystko działa jak należy i na dodatek mam możliwość zmiany ustawień przez złącze usb oraz podglądu efektu na wmontowanych w obudowę diod z poszczególnych kanałów.Jeszcze raz dziękuję za pomoc i gratuluję świetnego pomysłu.Pozdrawiam-Sławek
OdpowiedzUsuńMa kolega gdzieś jeszcze projekt tej płytki? Jeśli tak to poprosiłbym wrzucić.
UsuńWitam. Mam mały problem. Złożyłem wszystko na płytce stykowej wg schematu, na razie jako źródło - diody 5mm, kod działa prawidłowo. Problem polega na tym, że pomiędzy GND a wyjściami układu TLC5940 na anody diód mam napięcie 1,8V i bardzo słabo świecą. Próbowałem zmieniać rezystory na 100 Ohm (2,03V), trochę lepiej, jednak podczas sterowania przyciskami diody nie gasną. Żeby sterować bramką IRL540, bo takich chcę użyć docelowo, potrzebuję na wyjściu TLC ok 5V. Może ktoś was jest w stanie mi pomóc. Dziękuję i pozdrawiam.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńWitaj
UsuńA cz nie dokonywałeś jakiś zmian w programie zwłaszcza
int brightness = 4095; //maksymalna jasność ten parametr odpowiada za sterowanie max jasności w szczycie jasności powinieneś mieć na wyprowadzeniu TLC napięcie równe napięcia
zasilania układu
Witam. W kodzie niczego nie zmieniałem, skopiowałem, wkleiłem i wgrałem, działa prawidłowo, ale jak pisałem wyżej, na wyjściu zbyt niskie napięcie, żeby sterować bramka mosfeta. Zrobiłem schemat jak to wszystko mam połączone https://goo.gl/WzQpG1 Proszę o wskazówki. Pozdrawiam.
UsuńWitaj
UsuńDokładnie nie analizowałem Twojego sposobu połączenia ale na pierwszy rzut oka widać że zasilasz układ 5V ja spojrzysz na schemat autora to że na rezystory podciągające (drabinki 8x10k)trzeba podać 12v wtedy powinieneś uzyskać wystarczające napięcie wysterowania tranzystora
Ten komentarz został usunięty przez autora.
OdpowiedzUsuńDziękuję za odpowiedź. Problem rozwiązany. Diody led wpięte tak jak na moim schemacie, czyli pomiędzy wyjściem TLC a GND obniżały napięcie między wyjściem a GND. Będę musiał jeszcze pomyśleć gdzie je wpiąć, żeby mieć podgląd tak jak na Pana sterowniku.
OdpowiedzUsuńMam jeszcze pytanie odnośnie kodu. Chciałbym wydłużyć czas wygaszania stopni, np. do 3 minut. Która zmienna za to odpowiada?
Cześć
Usuńza czas wygaszania odpowiada
int delayTime = 1;
dostosuj według potrzeb
Ta zmienna odpowiada za opóźnienie wygaszania ale i zapalania kolejnych ledów, oraz zapalania i gaszenia wszystkich jednocześnie. Trzeba chyba utworzyć kolejną zmienną np. delayTime_2 i umieścić ja w funkcji odpowiadającej za pojedyncze ściemnianie. Problem w tym, że żaden ze mnie programista, po prostu napaliłem się żeby zrobić ten projekt.
UsuńTo niestety trochę większa zmiana w kodzie programu. Trzeba by wprowadzić dodatkowy stan układu i dodatkowy licznik zliczający czas do momentu rozpoczęcia wygaszania.
UsuńWitam, jestem amatorem jeśli chodzi o eagle i o drukowanie i wytrawianie płytek, czy ktoś mógłby mi pomóc i wytłumaczyć jak krok po kroku mogę stworzyć taką płytkę ?
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńZ zainteresowaniem przeczytałem opis projektu układu sterującego oświetleniem LED schodów, ponieważ sam kilka lat temu zainteresowałem się tym tematem i zacząłem pracować nad sterownikiem schodowym oświetlenia LED schodów. Założenie było podobne - kolejno i płynnie zapalanie (także gaszenie) oświetlenia schodów stopień po stopniu. Zaczynałem od procesora ATMEGA8 i programu w C. Od początku przyjąłem założenie, że sterowanie PWM będę realizował programowo, co, wbrew pojawiającym się tu opiniom, nie jest wcale trywialne, zwłaszcza gdy ściemnianie poszczególnych lamp nakłada się w czasie. W mojej opinii wybór przez Autora wersji sprzętowej z wielokanałowymi driverami PWM LED jest jak najbardziej słuszny, pozwolił na zaoszczędzenie sporo czasu. Mój pierwszy sterownik schodowy obsługiwał tylko 8 lamp, ale efekty były na tyle zadowalające, że pracowałem nad dalszymi wersjami. Aktualnie moje sterowniki pracują na procesorze ATMEGA168PB. Najbardziej zaawansowany SP23LED obsługuje do 23 stopni schodowych, posiada tryb ostrzegania przed zgaszeniem świateł, obsługę lampy Master (podświetlenie poręczy lub oświetlenie górne), funkcję obsługi ruchu z półpiętra, funkcję podświetlenia po zmierzchu, funkcję świecenia stałego, i parę innych. Sporo uwagi poświęciłem na opracowanie konfiguratora, pozwalającego na łatwą zmianę konfiguracji przez osobę z zewnątrz. Konfigurator umożliwia łatwą zmianę nawet 20 parametrów działania, w tym liczby lamp, poziomów podświetlenia i świecenia, czasów zapalania, świecenia, gaszenia, stopnia płynności zapalania i wielu innych. To co pierwotnie było tylko pasją, doprowadziło mnie do opracowania profesjonalnych sterowników schodowych, które sprzedaję we własnym sklepie internetowym smartleds.pl Niecierpliwym polecam gotowe sterowniki schodowe smartLEDs, a Autorowi i wszystkim majsterkowiczom życzę powodzenia w zmaganiach przy tworzeniu własnych sterowników schodowych i płynącej stąd satysfakcji, efekt jest naprawdę wart wysiłku.
OdpowiedzUsuńWitam Ciekolego mam wielka prosbe do Ciebie czy mogl bym Cie prosic bo nie rozumie (pamiętajcie że płytkę trzeba "oblać masą" przed wydrukiem): wydrukowalem ta plytke co podales w PDF ale w nie ktorych punktach zauwazylem ze nie ma podlaczenia masy bardzo bym Cie prosil o pomoc jesli jest taka mozliwosc pozdrawiam Roman czy mogl nym prosic o pomoc moj adres email malizja14@wp.pl
OdpowiedzUsuńWitam. Mam mały problem. Płytkę wykonałem i zmontowałem według Twojego schematu i programu, i wszystko działa prawie ok. Tranzystory mam podpięte pod 16 wyjść pierwszego TLC (OUT 0-15) i 2 wyjścia drugiego TLC (OUT 0 i OUT 1). Problem w tym, że te 2 wyjścia drugiego TLC działają w tym samym czasie co wyjścia OUT 0 i OUT 1 pierwszego TLC, a powinny zadziałać w kolejności po wyjściu OUT 15 pierwszego TLC. Wygląda jakby dwa TLC działały równocześnie. Nawet nie wiem od czego zacząć
OdpowiedzUsuńW kodzie źródłowym biblioteki TLC includowanej do arduino IDE ustawia się liczbę podłączonych układów TLC. Zmieniłeś na 2? Domyślnie jest 1
UsuńTo było to. Dzięki wielkie. Teraz wszystko działa tak jak powinno
Usuńw którym miejscu należy zmienić tą wartość z 1 na 2?
UsuńWitam Cię Anatol super sprawa za udostępnienie takiego wspaniałego projektu jak sterownik schodowy wszystko już gotowe oprócz programy czy mógł bym Cię prosić o wsad tego programu do USBASB pod AVR z góry dziękuję pozdrawiam Roman
OdpowiedzUsuńWitam Cię Anatol super sprawa za udostępnienie takiego wspaniałego projektu jak sterownik schodowy wszystko już gotowe oprócz programy czy mógł bym Cię prosić o wsad tego programu do USBASB pod AVR z góry dziękuję pozdrawiam Roman
OdpowiedzUsuńNiestety nie mam gotowego wsadu w postaci binarnej, ale możesz go sobie przygotować za pomocą Arduino IDE. Kod źródłowy jest dostępny. Pozdrawiam
UsuńWitam autora tego sterownika zakupilem arduino uno probuje zaprogramowac ten kod zrodlowy ale nie stety w linijce 14 wyskakuje blad "czy mogl bym prosic o podpowiedz ewentualnie plik wsadowy do arduino ??? Z gory dziekuje
OdpowiedzUsuńCzy mogl bym Cie prosic o kontakt na skype Anatol moj login : roman5962 mam problem z wprowadzeniem tego kodu plytke juz wykonalem z elementami jak przedstawiles i jak na razie stoje w punkcie martwym bardzo bym Cie prosil o pomoc z Twojej strony oczywiscie jestem sklonny zrewanzowac sie ale to juz mozemy omowic na skype pozdrawiam autora do uslyszenia
OdpowiedzUsuńmusisz mieć atmegę z wgranym bootloaderem, a następnie zaprogramować ją za pomocą USBAsp. Przynajmniej ja tak robiłem. Tyle że robiłem to 2 lata temu, więc szczegółów technicznych dokładnie nie pamiętam
OdpowiedzUsuńWItam, ja również mam problem całość odpaliłem na arduino działa świetnie z tym ze ja zamiast guzików chciałbym używać czujników ultradźwiękowych i za diabla nie wiem jak to dopisać żeby 1 czujnik uruchamiał sekwencje zapalania schodów od dołu a 2 od góry
OdpowiedzUsuńWitaj,
OdpowiedzUsuńCzy udostępniony przez Ciebie kod można wykorzystać przy opcji z Arduiono? Czy tylko przy opcji sterownika z twojego schematu?
Marcin :)
Oczywiście można z arduino :)
UsuńTen kod można używać z arduino sam tak mam
OdpowiedzUsuńBłażej, udało ci sięz tymi czujnikami?
UsuńM
Genialne,
OdpowiedzUsuńspróbuje dorobić do tego czujnik zmierzchowy oraz czujniki ruchu.
Może sie uda :)
M.
Jak dasz radę to proszę o info bo nie mogę sobie z tym poradzić ja mam i czujniki ruchu i odległości te 2 są lepsze ale obojętnie jakie będą działać będzie super
OdpowiedzUsuńPlik w nagłówku jest napisany przez Pana, czy jest on pobierany z biblioteki? --> ClickButton.h
OdpowiedzUsuńPozdrawiam!
Z tego co pamiętam to z biblioteki
UsuńMam pytanie, która część kodu odpowiada za czas przytrzymania przycisku w celu załączenia wszystkich diód? Chciałbym wydłużyć ten czas,aby móc podpiąć czujniki ruchu,a w nich jest zbyt długie opóźnienie i od razu załącza wszystkie.
OdpowiedzUsuńbutton[i].longClickTime = 800; // Time until long clicks register
UsuńCzesc Anatol,
OdpowiedzUsuńCzy zablokowales mozliwosc przesuwania obiektow na plytce w eagle?
Mozna to jakos odblokować?
Marcin
Mam pytanie do autora.
OdpowiedzUsuńW którym miejscu znajduje się szybkość zapalania oraz gaszenia? Chciałbym tam wstawić odczyt z potencjometru na ADC. Tj jeden potencjometr od regulacji szybkości zapalania a drugi od szybkości gaszenia.
Przede wszystkim gratuluję udanego projektu oraz dziękuję za udostępnienie tak obszernego materiału.
Pozdrawiam
Z tego co pamiętam to chyba zmienna delayTime za to odpowiada.
Usuńi dodatkowo stałe:
const int SCIEMNIANIE_POJEDYNCZE_STEP = 5;
const int SCIEMNIANIE_CALOSCI_STEP = 10;
const int ROZJASNIANIE_POJEDYNCZE_STEP = 25;
const int ROZJASNIANIE_CALOSCI_STEP = 10
Super, dzięki :) Ostatnie pytanie - czy układ jest przygotowany gdy np osoba na dole i na górze w tym samym momencie naciśnie przycisk lub w małym odstępie? Chcę dać u siebie czujniki pir i chciałbym być przygotowany na obsługę 2osób lub więcej w rzadkich przypadkach.
OdpowiedzUsuńPozdrawiam
No to po paru godzinach tak wygląda płytka. Dodane 3 potencjometry.
OdpowiedzUsuń- regulacja jasności,
- regulacja szybkości gaszenia,
- regulacja szybkości rozjaśniania.
- Dodane złącze od programowania
- Dodane wyprowadzenie 6 wolnych pinów procesora PD2, PD1, PD0, PC5,PC4,PC3.
- Dodano jeden pin na kostce od zasilania, dodatkowy +5V do zasilania czujek PIR.
- Mosfety w wersji n-channel dwukanałowe.
- Atmega328 w wersji SMD
Płyta przygotowana pod obudowę na szynę DIN > DIN Z104
http://obrazki.elektroda.pl/1207785500_1478960427.png
Cześć,
UsuńMasz swój wątek na elektroda.pl?
obserwowałem ale nie natrafiłem...
:)
Na elektrode dawno nie zagladalem a co dopiero coś udostepnic. Czekam za paczka z Chin i bede testować na plytce stykowej. Pozniej zamowie pcb i dam znac tutaj:)
UsuńHej możesz podzielić się plikiem z eagla?
Usuńlink jest w treści posta
Usuńa czy mozesz podzielić się przerobioną wersją, udostępnić poliki dla eagla i kod programu ??
UsuńWitam mógł bym poprosić o kod do wersji z potencjometrami ?
UsuńPodpinam się pod pytanie powyżej, czy jest szansa na pliki dotyczące płytki i programu z potencjometrami?
UsuńCzy myślał ktoś nad wykorzystaniem tensometru np. ze starej wagi łazienkowej? Po wejściu na pierwszy schodek oświetlenie mogło by się włączyć i nie trzeba do tego przycisku. Obsługa chyba banalna bo działa to jak regulowany rezystor. cena też znośna https://botland.com.pl/czujniki-nacisku/753-czujnik-sily-nacisku-okragly-13-mm-06-.html
OdpowiedzUsuńWitam. Jestem początkującym, Jak a raczej gdzie podpiąć przyciski zapalające na prototypowej płytce i arduino...
OdpowiedzUsuńCześć wszystkim. Która część kodu odpowiada za wygaszanie taśm LED. Całość zapala mi się bez żadnych problemów ale diody nie chcą gasnąć. Pozdrawaiam
OdpowiedzUsuńWitam mam problem bo nie mogę znaleźć gdzie gdzie mam zmienić ilość tlc w bibliotece byłbym wdzięczny za pomoc
OdpowiedzUsuńw pliku nagłówkowym biblioteki do TLC. Nie pamiętam teraz dokładnie jak się nazywa. Z rozszerzeniem .h
UsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńCzy mógł by ktoś dorzucić zdjęcie gotowej płytki będę wdzięczny. Pozdrawiam
OdpowiedzUsuńZdjęcie gotowej płytki ułatwiło by lutowanie ale jakoś sobie poradzimy. Pozdrawiam
OdpowiedzUsuńWitam, Co może być przyczyną że cały czas się świeci od załączenia gł. zasilania:( Pozdrawiam proszę pomóżcie
OdpowiedzUsuńWitam, mam taki sam objaw, tzn. po podłączeniu zasilania na każdym wyjściu od razu jest 12v. Ma ktoś pomysł co może być nie tak ? Pozdrawiam
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńMiałem podobny problem pomogła wymiana TLC jakość tych układów jest losowa
OdpowiedzUsuńWitam, zdaje sobie sprawę, ze moja wiedza jest dość skromna, ale czy moglibyście mi powiedzieć dlaczego lampki świecą mi się na odwrót? Chodzi mi o to, ze jak nacisnę przycisk to najpierw się gaszą a potem zapalają i tak zapalone zostają. TLC5940NT podłączyłem jak na instrukcji łączenia do Aruino. pozdrawiam
OdpowiedzUsuńCóż ciężko mi powiedzieć. U mnie niestety jest tak, że mimo takiego samego programu jak ten, który został załączony przez autora diody zapalają się bardzo szybko, właściwie niezauważalny jest efekt rozjaśniania. Gasną jak trzeba, ale ich włączanie następuje błyskawicznie. Czy ktoś ma jakiś pomysł ?
OdpowiedzUsuńWitam. Miałem inną oporność jednego z kondensatorów przez co źle działał Kwarc. Teraz jest OK ale nie mogę doszukać się gdzie zmienić aby działały 2 układy TLC. Proszę o jakieś wskazówki (który plik i co zmienić) Pozdrawiam
OdpowiedzUsuńWitam,
OdpowiedzUsuńWykonałem sterownik na bazie autora bloga. Jednak chciałbym rozbudować projekt o dwa czujniki PIR (jeden na dole, drugi na górze schodów). Nie bardzo wiem jak rozbudować kod programu, aby po zadziałaniu jednego czujnika nastąpiła aktywacja załączania się pasków LED oraz blokada aktywacji drugiego czujnika.
Witam, mam ten sam problem, kombinuję na przerobienie na czujniki ruchu jednak bez skutków, Jak by ktoś mógł pomoc to będziemy wdzięczni.
OdpowiedzUsuńA jaki jest generalnie problem? Jeśli czujnik ruchu będzie podpięty zamiast włącznika i da wysoki stan na wejście to powinno obyć się bez żadnych zmian w kodzie.
OdpowiedzUsuńchodzi tu o czasy jakie daje czujnik (minimum to 1-2s) a pstryknięcie guzika trwa w milisekundach. Próbowałem podnieś czasy ale bez rezultatu, tak samo wymiana clikbution na czujniki to wywala błędami.
OdpowiedzUsuńrozumiem że wtedy zapalają się wszystkie diody od razu bo wykrywane jest jako długie przytrzymanie przycisku?
UsuńWystarczy dodać układ różniczkujący RC i przekaźnik i wpiąć zamiast przycisku albo równolegle z przyciskiem, wtedy będzie możliwość sterowania ręcznego lub poprzez czujnik PIR. Testowałem na płytce stykowej i działa.
UsuńDokładnie tak, na pewno trzeba będzie coś zmienić w kodzie ale jak dotychczas nie udało mi się tego zrobić. Dodatkowo w moim przypadku po wgraniu Pana programu ledy zapalają się po naciśnięciu przycisku po kolei,ale bardzo szybko. Wygaszanie następuje już tak jak na Pana układzie. Ma Pan może pomysł co może być przyczyną?
OdpowiedzUsuńGeneralnie pewnie trzeba wywalić zupełnie wywołanie funkcji ustawStanStaly w głównej pętli loop w okolicach 80'tej linii... Dokładnych zmian nie jestem w stanie podać bez testów, a nie mam akurat układu na którym mógłbym sprawdzić kod
UsuńMiałem ten sam problem, rozwiązałem go stosując optyczne czujniki odległości, działają w zakresie do 80 cm i dobrze działa funkcja załączania wszystkich stopni na raz, wystarczy chwilę stanąć na danym stopniu.
OdpowiedzUsuńWitam,
UsuńCzy kolega chciałby podzielić się kodem oraz podać symbole tych czujników odległości?
Dodatkowo można nie załączać stopni gdy nie chcemy,np w dzień, wchodząc lub schodząc dalej od czujnika.Tyle że w moim przypadku mam tylko na dole i u góry czujniki,bez półpiętra.
OdpowiedzUsuńja użyłem dodatkowe arduno i mam pod nie podłączone zwykle czujniki ruchu. w ten sposób poradziłem sobie z problemem
OdpowiedzUsuńCześć,
OdpowiedzUsuńCzy ktos myslał o dodaniu funckji podswietlania dwóch skrajnych stopni na powiedzmy 20% jasnosci? Az do momentu wcisniecia przycisku oczywioscie...
Wiecie szanowni koledzy/koleżanki jak to zrobic?
M
Czujniki, które zastosowałem to E18-D80NK.Pozdrawiam
OdpowiedzUsuńA czy jest szansa na kod ? Mam też tylko górę i dół bez półpiętra. Będę bardzo wdzięczny :)
UsuńPodłączasz je zamiast lub równolegle do włączników na ścianie,nie potrzeba żadnego dodatkowego kodu.
OdpowiedzUsuńCześć, Czy ktoś z sznownych kolegów wiedziałby jak wykonać ...
OdpowiedzUsuńnie moge tego ogarnąć>>
Czy ktos myslał o dodaniu funckji podswietlania dwóch skrajnych stopni na powiedzmy 20% jasnosci? Az do momentu wcisniecia przycisku oczywioscie...
Wiecie szanowni koledzy/koleżanki jak to zrobic?
Albo zapytam inaczej...
OdpowiedzUsuńJak przywrocić
int outState[] = {200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200};
po każdej animacji?
Marcin
Jakie napięcie ma kondensator c5 1000uF?? Proszę o szybką odpowiedź
OdpowiedzUsuńJa wstawiłem na 25V i działa:) W pierwszej wersji był na 16V i również było ok.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
UsuńTen komentarz został usunięty przez autora.
UsuńO matko, gratuluję rzeczowego podejścia do tematu i podjętej próby ogarnięcia takiego skomplikowanego zagadnienia. Pokażę to mojemu chłopakowi, który zajmuje się tego typu elektronicznymi gadżetami i może mi coś takiego ogarnie ;) W ramach studiów robi własny analizator widma i wszędzie sporo różnych części jest porozrzucanych w mieszkaniu i trudno jest to ogarnąć :O Pozdrawiam serdecznie i mam nadzieję, że oświetlenie na schodach działa jak należy. Podziwiam ludzi, którzy się tym zajmują ;) Godne pochwały!
OdpowiedzUsuńWitam, Gratuluje pomysłu ale mam jedno pytanie.
OdpowiedzUsuńJak usunąć rozjaśnianie i ściemnianie całości na dolnym i górnym przycisku? Ale żeby na półpiętrze zostało? Chce użyć do wejsc od dołu i góry czujniki ruchu, a do półpiętra zwykłe przełączniki dzwonkowe podłączone równolegle aby włączyć/wyłączyć całość.
Niestety nie pomogę w sprawie modyfikacji kodu. W każdym razie miałem podobny problem z czujnikiem ruchu, niestety ma on zbyt dużą zwłokę i od razu włącza całość. Poradziłem sobie z problemem stosując czujnik optyczny taki jak e18-d80nk - można kupić na Ali za 2 dolary. Po podłączeniu do płytki (na płytce dodałem 2 zaciski do zasilania tych czujników) działa jak złoto :) Mam schowane je w listwie naściennej - jak staniesz dłużej na stopniu odpala całość, po krótkim przejściu włączają się sekwencyjnie.
Usuńwitam nie mogę skompilować programu czemu
OdpowiedzUsuńWitam mam taki problem. Wciskam przycisk ledy startują zapalają się jeden po 2 aż do ostatniego. I tu zaczyna się problem bo nie gasną tylko cały czas się świecą. W czym może tkwić problem? Gdy przycisk przytrzymam dłużej to zaswiecaja sie wszystkie i świeca do momentu kolejnego dłuższego przytrzymania przycisku.
OdpowiedzUsuńCzy ktoś możne rozważał sytuacje gdy w szeregowcu mamy półpiętra?
OdpowiedzUsuńW takim przypadku są np. 3 rzędy schodów po 10 stopni.
Jak z jednego układu/sterownika obsłużyć 6 czujników ruchu i 30 linii LED?
Ten komentarz został usunięty przez autora.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńTen komentarz został usunięty przez administratora bloga.
OdpowiedzUsuńTen komentarz został usunięty przez administratora bloga.
OdpowiedzUsuńPrzede wszystkim, moim zdaniem, inteligentny dom to taki, którym można zarządzać za pomocą systemu. Obecnie, można się z nimi spotkać coraz częściej. Na rynku nie brakuje firm, które posiadają go w swojej ofercie. Ta: https://www.se.com/pl/pl/product-range/1424-system-knx jest jedną z nich.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńDzień dobry, Panie Anatolu od dłuższego czasu próbuję ogarnąć temat, walczę z TLC5940 choć już nie wiem gdzie popełniłem błąd. Mianowicie po złożeniu wszystkiego na płytce którą wykonałem metodą żelazkową, podłączyłem ledy zasilacz, kod źródłowy został wczytany za pomocą arduino uno. Zapala się pierwsza druga listwa itd do 10 po czym zapala się reszta od razu. Myślałem że może to błąd w połączeniu na płytce ale wszystko jeszcze raz sprawdziłem wygląda ok. To zacząłem analizować Pana wpis o TLC5940 na blogu że trzeba (czy nie trzeba) programować układ za pomocą tego kodu
OdpowiedzUsuń#include
void setup()
{
Tlc.init();
Tlc.set(1, 2048);
while (Tlc.update());
}
void loop()
{
}
Być może to jest powód tego problemu? Trzeba czy nie trzeba programować TLC?
Pozdrawiam
i jeszcze jedno pytanie: Zmieniając zmienną ilości ledów podłączonych do układu int ledCount = 17 jeżeli ustawię na np 12 to 13 wejście na płytce nie powinno wykonywać zadania? Dobrze myślę czy jednak się mylę i inna zmienna za to odpowiada?
OdpowiedzUsuńPozdrawiam
Cześć.
OdpowiedzUsuńA jest szansa otrzymania skompilowanego programu do bezpośredniego wgrania do Atmegi poprzez USBasp ?.
wykorzystuje identyczny typ tranzystorów i mam dziwny efekt. Przy wypełnieniu 0 mam pełne świecenie pasków, a przy maxymalnym wypełnieniu 4095 brak świecenia. Instrukcja Tlc.clear() powoduje zapalenie wszystkich pasków pełną mocą. o co tu chodzi i dlaczego tak jest?
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńTen komentarz został usunięty przez autora.
OdpowiedzUsuńPrzez pomyłkę sklepu złozyłem układ na IRF840.
OdpowiedzUsuńPo uruchomieniu układu wszystkie LEDy się świecą. Nie wiem dlaczego void setup() nie jest w stanie ich wyłączyć.
Opcje są 2:
1.
Opóźnienie tuż po zainicjowaniu TLC:
void setup()
{
Tlc.init(0);
delay(1); //opóznienie 1/1000s i wszystko działa
Tlc.set(0, 4095);
Tlc.update();
}
2.
Ustawienie stanu wszystkich wyjść za jednym razem:
void setup()
{
Tlc.init(4095);
}
Ten komentarz został usunięty przez administratora bloga.
OdpowiedzUsuńWitam
OdpowiedzUsuńBardzo prosiłbym o dostęp do pliku ze schematem oraz płytką.
Dziękuję bardzo , Zdrowych Wesołych Świąt dużo zdrowia oraz spokoju .
UsuńPozdrawiam.
Witam
OdpowiedzUsuńw jaki sposób można by było zrobić podświetlenie np.10 procent jasności w stanie spoczynku ,a rozswietlenie po podaniu sygnalu .