Jeden port obsługiwany z dwóch innych - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Jeden port obsługiwany z dwóch innych (/watek-jeden-port-obs%C5%82ugiwany-z-dw%C3%B3ch-innych) |
Jeden port obsługiwany z dwóch innych - omnixcrs - 09-04-2018 Panowie i Panie, proszę o pomoc z kodem programu bo już nie wiem co źle robię. Dysponuję płytką arduino yun + ekspander PCF8574, komunikacja IC2 - tu wszystko działa ok. i teraz tak: Mam podpiętego leda pod wyjście ekspandera. Napisałem kod do zaplalnia tego leda przy użyciu przycisku zwierającego do masy w taki sposób że jak nacisnę raz to zapalam leda, a jak nacisnę drugi raz to go gaszę i tu wszyto również działa bez problemu. Chciałem jednak dodać do tego coś takiego że po pojawieniu się stanu HIGH na wejściu nr 13 Led się zapala, a po zniknięciu tego stanu gasi. i napisałem drugi kod niestety coś chyba schrzaniłem bo po podaniu HIGH na 13 led się zapala ale po zniknięciu HIGH z 13 nie gaśnie. Rzucie okiem czy coś robię nie tak. z góry dzięki: Kod pierwszy bez obsługi portu 13, który działa: Kod: reading = expander3.digitalRead(4); drugi kod: Kod: reading = expander3.digitalRead(4); RE: Jeden port obsługiwany z dwóch innych - Robson Kerman - 09-04-2018 Ten drugi kod nie ma sensu. Z jednej strony zapalasz i gasisz przyciskiem z ekspandera, a jednocześnie chcesz, gdy jest HIGH na 13 było zapalone, a jak LOW to zgaszone? Musisz się zastanowić, czy chcesz sterować diodą przyciskiem z ekspandera, czy z pinu 13. Dla mnie nie ma tu żadnej logiki, ale na upartego, możesz zrobić tak, że gdy wciskasz przycisk w ekspanderze, to wyłączasz sterowanie diodą z pinu 13, a gdy zmieniasz stan pinu, to wyłączasz testowanie stanu na ekspanderze. Mi by było łatwiej zrobić to w obiektówce, było by przejrzyście. RE: Jeden port obsługiwany z dwóch innych - omnixcrs - 09-04-2018 chodzi o to że zapalanie leda przez ekspander to fizyczny przycisk, a stan wysoki na porcie 13 będę uzyskiwał z internetu RE: Jeden port obsługiwany z dwóch innych - Robson Kerman - 10-04-2018 (09-04-2018, 19:56)omnixcrs napisał(a): chodzi o to że zapalanie leda przez ekspander to fizyczny przycisk, a stan wysoki na porcie 13 będę uzyskiwał z internetu Z punktu widzenia diody, nie ma znaczenia w jaki sposób realizowana jest dostawa prądu. Mamy interfejs w postaci dwóch przycisków, jeden fizyczny, drugi sieciowy. Programista powinien zastanowić się nad implementacją. Mi przychodzą do głowy trzy rozwiązania. 1) Operator AND 2) Operator OR 3) A tu mamy negację NOT W Twoim przypadku to raczej chodzi o przykład trzeci? RE: Jeden port obsługiwany z dwóch innych - kaczakat - 10-04-2018 Witam Jeśli podasz HIGH na 13 to wchodzi do tego ifa: Kod: if (digitalRead(13) == HIGH || reading == LOW && previous == HIGH && millis() - time > debounce) Kod: if (digitalRead(13) == HIGH || reading == LOW && previous == HIGH && millis() - time > debounce) RE: Jeden port obsługiwany z dwóch innych - es2 - 10-04-2018 (09-04-2018, 19:56)omnixcrs napisał(a): chodzi o to że zapalanie leda przez ekspander to fizyczny przycisk, a stan wysoki na porcie 13 będę uzyskiwał z internetu Zrób przycisk chwilowy. Naciśnięcie przycisku (opadające zbocze) zmieni stan leda na przeciwny. Zmiana stanu z internetu z niskiego na wysoki włączy diodę, z wysokiego na niski zgasi. |