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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.