Zapalone diody przy starcie - Minek3 - 08-03-2019
Witam,
borykam się z problemem jakim jest po podaniu zasilania do podświetlania schodów.
Po zmierzchu dochodzi dopiero prąd do całego układu i wtedy na stale zapalają się wszystkie światła,
do momentu gdy nie wejdę na czujnik i uruchomi się sekwencja i od tego momętu wszystko działa normalnie.
Próbowałem już komendy clear do TLC ale nie pomaga.
Zwracam się do was o pomoc co zrobić aby się nie uruchamiały samoczynnie.
Pozdrawiam
Oto kod jaki mam:
Kod: #include <Tlc5940.h>
const int downButtonPin = 6; // włącznik dolny
const int upButtonPin = 7; // włącznik górny
int downButtonState = 0; // status
int upButtonState = 0; //status
int ledCount = 16; //liczba aktywnych wyjść (światełek)
int brightness = 4095; //maksymalna jasność
int brightStep = 28; //krok przy rozjaśnianiu
int brightStep1 = 7; //krok przy ściemnianiu
int delayTime = 2; //szybkosc
int outs[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //wyjścia do których podpinane są taśmy
void setup()
{
Tlc.init();
for (int diode=0; diode<ledCount; diode++)
pinMode(downButtonPin, INPUT);
digitalWrite(downButtonPin, LOW);
pinMode(upButtonPin, INPUT);
digitalWrite(upButtonPin, LOW);
for (int diode = 0; diode<ledCount;diode++) {
Tlc.set(outs[diode], brightness-outs[diode]);
}
Tlc.update();
}
void loop()
{
downButtonState = digitalRead(downButtonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (downButtonState == LOW) {
downButton();
// upButton();
}
upButtonState = digitalRead(upButtonPin);
if (upButtonState == LOW) {
upButton();
}
}
void downButton() {
for (int diode = 0; diode<ledCount;diode++) {
int bright = brightness;
do {
if (bright<0) {
bright = 0;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
bright = bright - brightStep;
} while (bright>=0);
}
for (int diode = 0; diode<ledCount;diode++) {
int bright = 0;
while (bright<brightness) {
bright = bright + brightStep1;
if (bright>brightness) {
bright = brightness;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
} ;
}
}
void upButton() {
for (int diode = ledCount-1; diode>=0;diode--) {
int bright = brightness;
do {
if (bright<0) {
bright = 0;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
bright = bright - brightStep;
} while (bright>=0);
}
for (int diode = ledCount-1; diode>=0;diode--) {
int bright = 0;
while (bright<brightness) {
bright = bright + brightStep1;
if (bright>brightness) {
bright = brightness;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
}
}
}
RE: Zapalone diody przy starcie - kaczakat - 08-03-2019
Może gdzieś tu
Kod: void setup()
{
Tlc.init();
for (int diode=0; diode<ledCount; diode++)
pinMode(downButtonPin, INPUT);
digitalWrite(downButtonPin, LOW);
pinMode(upButtonPin, INPUT);
digitalWrite(upButtonPin, LOW);
brakuje Ci jakiś klamerek.
RE: Zapalone diody przy starcie - Minek3 - 10-03-2019
Witam,
Dziękuje za podpowiedz (poprawiłem błąd) ale wina była w czymś innym,
udało mi się poradzić z tym.
Teraz po podłączeniu zasilania światła mrugną i czekają na sygnał z czujników optycznych.
Przesyłam poprawiony w pełni działający kod:
Pozdrawiam
Kod: #include <Tlc5940.h>
const int downButtonPin = 6; // włącznik dolny
const int upButtonPin = 7; // włącznik górny
int downButtonState = 0; // status
int upButtonState = 0; //status
int ledCount = 16; //liczba aktywnych wyjść (światełek)
int brightness = 4095; //maksymalna jasność
int brightStep = 20; //krok przy rozjaśnianiu
int brightStep1 = 6; //krok przy ściemnianiu
int delayTime = 2; //szybkosc
int outs[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //wyjścia do których podpinane są taśmy
int outsState[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void setup()
{
Tlc.init();
{
for (int diode=0; diode<ledCount; diode++)
Tlc.set(outs[diode], brightness-outs[diode]);
}
{
pinMode(downButtonPin, INPUT);
digitalWrite(downButtonPin, LOW);
pinMode(upButtonPin, INPUT);
digitalWrite(upButtonPin, LOW);
for (int diode = ledCount-1; diode>=0;diode--)
Tlc.set(outsState[diode], brightness-outs[diode]);
Tlc.update();
}
}
void loop()
{
for (int diode = ledCount-1; diode>=0;diode--)
Tlc.set(outs[diode], brightness-outsState[diode]);
Tlc.update();
{
downButtonState = digitalRead(downButtonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (downButtonState == LOW) {
downButton();
// upButton();
}
upButtonState = digitalRead(upButtonPin);
if (upButtonState == LOW) {
upButton();
}
}
}
void downButton() {
for (int diode = 0; diode<ledCount;diode++) {
int bright = brightness;
do {
if (bright<0) {
bright = 0;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
bright = bright - brightStep;
} while (bright>=0);
}
for (int diode = 0; diode<ledCount;diode++) {
int bright = 0;
while (bright<brightness) {
bright = bright + brightStep1;
if (bright>brightness) {
bright = brightness;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
} ;
}
}
void upButton() {
for (int diode = ledCount-1; diode>=0;diode--) {
int bright = brightness;
do {
if (bright<0) {
bright = 0;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
bright = bright - brightStep;
} while (bright>=0);
}
for (int diode = ledCount-1; diode>=0;diode--) {
int bright = 0;
while (bright<brightness) {
bright = bright + brightStep1;
if (bright>brightness) {
bright = brightness;
}
Tlc.set(outs[diode], bright);
Tlc.update();
delay(delayTime);
}
}
}
RE: Zapalone diody przy starcie - es2 - 10-03-2019
(10-03-2019, 10:38)Minek3 napisał(a): udało mi się poradzić z tym.
Teraz po podłączeniu zasilania światła mrugną i czekają na sygnał z czujników optycznych. To "mrugnięcie" jest zamierzone?
RE: Zapalone diody przy starcie - Minek3 - 10-03-2019
Nie,
Ale ze względu iż tlc dostaje zasilanie zanim admega wgra program, nie ma możliwości tego usunięcia.
Chyba ze się mylę to proszę o komentarz.
Pozdrawiam
RE: Zapalone diody przy starcie - kaczakat - 10-03-2019
Nie wiem jak masz to elektrycznie podłączone, Atmega może włączać zasilanie do części LED jakimś tranzystorem.
RE: Zapalone diody przy starcie - es2 - 10-03-2019
(10-03-2019, 14:28)kaczakat napisał(a): Nie wiem jak masz to elektrycznie podłączone, Atmega może włączać zasilanie do części LED jakimś tranzystorem. Po co tranzystor? Może jeszcze spawarki traktory i kultywatory?
Tlc5940 ma wejście BLANK.
RE: Zapalone diody przy starcie - Minek3 - 10-03-2019
[attachment=783]
Mam podpięte pod Blank w TLC z admegą pin 10 a mimo to w ten sposób się uruchamia.
Oczywiście jeżeli jest możliwość wyeliminowania tego zjawiska proszę o poradę
Być może brakuje mi coś w kodzie?
Pozdrawiam
Schemat płytki:
RE: Zapalone diody przy starcie - es2 - 10-03-2019
(10-03-2019, 16:53)Minek3 napisał(a): Być może brakuje mi coś w kodzie? Może w kodzie, może w sprzęcie?
Gdzie ustawiasz wyjście BLANK?
Jak masz ustawione fuses związane z czasem startu CPU po resecie?
(10-03-2019, 16:53)Minek3 napisał(a): Schemat płytki: Chyba pierwszy raz widzę na tym forum prawdziwy schemat a nie malowanki.
RE: Zapalone diody przy starcie - kaczakat - 10-03-2019
Podłącz sobie rezystor podciągający do VCC, wartość sobie dobierze, między 1k a 10k powinno być OK, rezystor wymusza stan wysoki na BLANK, dzięki czemu wyjścia led są wyłączone, po wysterowaniu pinem 10 na 0 aktywujesz wyjścia.
|