Skocz do zawartości

Problem z sterowaniem światłem


Motyl

Pomocna odpowiedź

Mianowicie mam problem taki że zrobiłem sterowanie przyciskiem dzwonkowym światła i wszystko działa w prototypie jednak gdy podłączyłem to do instalacji to przy włączaniu różnych obciążeń w domu, sterownik sam włącza/wyłącza światło. Ma ktoś jakiś pomysł zo z tym zrobić?

Wszystko działa poprawnie dopóki nie podłączę przycisku dzwonkowego.

Link do komentarza
Share on other sites

Przyciskiem dzwonkowym? Takim monostabilnym?

Opisz bardziej swój układ, bo na razie to za dużo informacji nie ma.

Obstawiałbym że łapiesz jakieś szpilki z sieci, ale bez znajomości układu to tylko wróżenie.

Jak sprawdzasz czy przycisk został wciśnięty?

Pojedynczym warunkiem bez opóźnienia?

Jeśli tak, to sprawdź przy podwójnym warunku, tj. pierwszy warunek sprawdza wciśnięcie przycisku, później będzie potrzebne jakieś opóźnienie (20-100ms) i drugi warunek sprawdza czy przycisk jest dalej wciśnięty.

Link do komentarza
Share on other sites

int buttonState = 0;

const int buttonPin = 47;

void setup() {

Serial.begin(9600);

pinMode(26,OUTPUT);

// pinMode(27,OUTPUT);

// pinMode(28,OUTPUT);

pinMode(47,INPUT);

digitalWrite(26, HIGH); //Włączenie swiatla

}

void loop() {

buttonState= digitalRead(buttonPin);

while (digitalRead(buttonPin) == HIGH) {} //Jeśli przycisk jest wciśnięty

digitalWrite(26, LOW);

delay(1000);

while (digitalRead(buttonState) == HIGH) {} //Jeśli przycisk jest wciśnięty

Serial.println(buttonState);

digitalWrite(26, HIGH);

delay(1000);

}

[ Dodano: 14-06-2018, 21:19 ]

Jest to zwykły przycisk zwierny, działanie jak switch

[ Dodano: 14-06-2018, 21:20 ]

nie wiem jak to zrobić przy takim programie żeby sprawdzał kilka razy warunek i dopiero później działał

__________

Komentarz dodany przez: Treker

Kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu składania programów jest automatycznie kolorowana, a wtedy wszystkim znacznie łatwiej analizować wklejone programy. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum.

Link do komentarza
Share on other sites

To jest to arduinowe środowisko?

Nie bardzo rozeznany z nim jestem.

void loop() { 

buttonState= digitalRead(buttonPin); 

while (digitalRead(buttonPin) == HIGH) {} //Jeśli przycisk jest wciśnięty 
digitalWrite(26, LOW); 

delay(1000); 
while (digitalRead(buttonState) == HIGH) {} //Jeśli przycisk jest wciśnięty 
Serial.println(buttonState); 
digitalWrite(26, HIGH); 

delay(1000); 

}

To jest main, tak?

Można spróbować tak (powinno przejść kompilacje):

void loop() { 

buttonState= digitalRead(buttonPin); 

if(digitalRead(buttonPin)==1)//pierwsze sprawdzenie przycisku
{
delay(100);//jeśli delay w ms - opoznienie przed drugim sprawdzeniem przycisku
if(digitalRead(buttonPin)==1)//drugie sprawdzenie
{
if(digitalRead(26)==1))//sprawdzenie czy swiatlo zapalone
{
digitalWrite(26,LOW);//jesli zapalone to zgas
}
else
{
digitalWrite(26,High);//jesli zgaszone to zapal
}
}
}

Serial.println(buttonState); 

}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Niekoniecznie wystarczy dodać delay dla eliminacji drgań styków. Zresztą w ogóle to nie jest dobre rozwiązanie, jeśli procesor miałby robić coś jeszcze, no OK jak jest tylko do przycisku (MICROPROCESOR do przycisku?). Pin ustawiony na wejście powinien mieć określony stan bez naciśniętego przycisku. W Arduino AVR zwykle robi się to linijką pinMode(47,INPUT_PULLUP); zamiast tylko INPUT. Samo INPUT można dać wtedy, gdy mamy zewnętrzny rezystor podciągający do VCC lub do GND. Przycisk wtedy zwiera na odwrót odpowiednio do VCC lub GND. Z INPUT_PULLUP przycisk zwiera do GND. Bez określonego stanu będzie się wzbudzał sam, losowo, tydzień może być OK, potem będzie robił dyskotekę przez godzinę i znowu będzie OK lub vice-versa.

Link do komentarza
Share on other sites

A kto mu zabroni użyć MIKROKONTROLERA do sterowania światłem?

Chciał/miał potrzebę/miał taki kaprys to niech i użyje nawet raspberry do tego 🙂

No przecież wpisałem mu delaya do eliminacji drgania styków.

Co do włączania podciągnięcia, to nie proponowałem tego bo nie wiemy w dalszym ciągu jak dokładniej ma zbudowany ten układ, prosiłem żeby bardziej opisał układ ale nie było odzewu. A dlaczego akurat pullup? Może ma układ który by wymagał pulldown? A może ma zewnętrzne podciągnięcie? Bez znajomości schematu to tylko wróżenie 🙂

Link do komentarza
Share on other sites

A kto mi zabroni zabraniać? 😃 Nie wiem czy pullup, opisałem oba, nie mniej jednak AVR ma wewnętrzny tylko up, oba można dać zewnętrzne. I na koniec coś co Cię na pewno uspokoi: usiądź i się uspokój... 😃 No i przepraszam, że zaproponowałem dodatkowe opcje.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.