Skocz do zawartości

Zamienione stany LOW Z HIGH


miswierz

Pomocna odpowiedź

Witam

Ostatnio wziąłem się pierwszy raz za arduino i wklepałem prosty program "zapal zgaś diodę"

I ku mojemu zdziwieniu program działał odwrotnie niż zakładałem.Dioda na start się paliła a wciśnięcie przycisku powodowało że gasła(powinno być odwrotnie"program przeklepany z filmiku wiec nie powinno być błędu.Dioda wyzwalana +5V a switch z podciągniętym sprzetowym rezystorem do masy i przekazuje 5V na pin. Wersja Arduino UNO

Dlaczego tak sie dzieje ze stany są zamienione??

int pinLed = 13;
int s1 = 0;
void setup()
{
pinMode(pinLed, OUTPUT);
pinMode(s1, INPUT);
}

void loop() 
{
if(digitalRead(s1, HIGH); 
{
digitalWrite(pinled, HIGH);
}
else
{
digitalWrite(pinLed, LOW);
}
}
Link do komentarza
Share on other sites

program przeklepany z filmiku wiec nie powinno być błędu

A jednak jest błąd. DigitalRead bierze tylko jeden parametr.

Poza tym nic nie wiemy o twoich połączeniach. Jak ta dioda jest podłączona? Daj jakiś schemat.

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

miswierz, jak to możliwe że program który wkleiłeś w ogóle działa? Po pierwsze jak zauważył deshipu, digitalRead powinno być wywoływane z jednym parametrem - więc kompilator powinien zgłosić błąd.

Ale nawet jeśli jakoś udało się skompilować to i tak napisałeś:

if(digitalRead(s1, HIGH); 

Ten średnik sprawia, że if traci sens, więc program nie powinien działać w opisany sposób - chyba że nie skompilowałeś, ani nie wgrałeś tego programu tylko coś innego.

Link do komentarza
Share on other sites

Kod programu,wczesniej pisalem z pamieci bo jestem w pracy to faktycznie mogly byc bledy.

int pinLed = 13; 
int s1 = 0; 
void setup() 
{ 
pinMode(pinLed, OUTPUT); 
pinMode(s1, INPUT); 
} 

void loop() 
{
if(digitalRead(s1) == HIGH)
digitalWrite(pinLed, HIGH);
else 
digitalWrite(pinLed, LOW);
}

Link do komentarza
Share on other sites

Kolego, dajesz nam program, który się nie kompiluje i schemat, który nie ma prawa działać i wmawiasz nam, że obserwujesz z tym jakieś dziwne zjawisko. Przecież to nawet nie jest podłączone do prądu. Może idź na spacer albo się prześpij i jak już się lepiej poczujesz, to sprawdź krok po kroku jeszcze raz.

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.