Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Input'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 2 wyniki

  1. Hej, piszę do Was w sprawie problemu z ekspanderem MCP23017. Próbuję od kilku dni rozgryźć jakim cudem ekspander MCP23017 odczytuje poprzez piny INPUT różne wartości (inne niż powinien). Zauważyłem, że dzieje się to losowo, zazwyczaj, gdy wgrywam nowe oprogramowanie przez kabel (tak jakby ekspander przed flashowaniem oprogramowania zapamiętał ostatnie wartości INPUT i trzymał je w pamięci wysyłając takie stany do mikrokontrolera). Ekspander podaje mi do mikrokontrolera wartości np. 0 (pin INPUT połączony z GND) w momencie, gdy pin INPUT jest odłączony od pinu GND (brak przewodzenia). Dodam także, iż stosuje zasilanie zewnętrzne 5V do ESP8266, jednakże wartości odczytują się poprawnie, gdy odłączę całkowicie mikrokontroler od zasilania (przez kabel jak i zewnętrznego), a następnie podłączę na nowo (taki jakby "RESET"). Gdy podłączę zasilanie na nowo do mikrokontrolera, stany INPUT zaczynają pojawiać się poprawnie na mikrokontrolerze (sprawdzam stany INPUT przez Serial). Tak nawiasem, zapytam się jeszcze czy dobrze zrobiłem podłączając pin RESET z MCP23017 do 3.3V z NodeMCU? Ciężko mi na ten temat było cokolwiek wyczytać i zrozumieć, co dzięki takiemu połączeniu zyskam. Natomiast próbowałem połączenie układu z pinem RESET jak i bez - niestety błędny odczyta stanów INPUT pojawia się nadal. Kod programu: #include <Arduino.h> #include <Wire.h> #include <Adafruit_MCP23017.h> // MCP23017 Adafruit_MCP23017 mcp; // INPUT int fotokomorkaStanSlupekPrzyBramie = 2; // MCP23017 A2 int fotokomorkaStanNaWyjazdzie = 3; // MCP23017 A3 int przekaznikStanOdbiornikPilota = 4; // MCP23017 A4 // OUTPUT int optoizolatorOtwieranieCalejBramy = 0; // MCP23017 A0 int optoizolatorOtwieranieFurtki = 1; // MCP23017 A1 void setup() { Serial.begin(9600); // MCP23017 mcp.begin(); // INPUT mcp.pinMode(fotokomorkaStanSlupekPrzyBramie, INPUT); mcp.pinMode(fotokomorkaStanNaWyjazdzie, INPUT); mcp.pinMode(przekaznikStanOdbiornikPilota, INPUT); mcp.pullUp(fotokomorkaStanSlupekPrzyBramie, HIGH); mcp.pullUp(fotokomorkaStanNaWyjazdzie, HIGH); mcp.pullUp(przekaznikStanOdbiornikPilota, HIGH); } void loop() { // Serial.println(millis()); // delay(10); if(millis() % 1000 == 0 || millis() % 1000 == 1 || millis() % 1000 == 2) { Serial.println(""); Serial.println("millis(): " + String(millis())); Serial.println("fotokomorkaStanSlupekPrzyBramie: " + String(mcp.digitalRead(fotokomorkaStanSlupekPrzyBramie))); Serial.println("fotokomorkaStanNaWyjazdzie: " + String(mcp.digitalRead(fotokomorkaStanNaWyjazdzie))); Serial.println("przekaznikStanOdbiornikPilota: " + String(mcp.digitalRead(przekaznikStanOdbiornikPilota))); } if (mcp.digitalRead(fotokomorkaStanSlupekPrzyBramie) == !HIGH) { } else { } if (mcp.digitalRead(fotokomorkaStanNaWyjazdzie) == !HIGH) { } else { } if (mcp.digitalRead(przekaznikStanOdbiornikPilota) == !HIGH) { } else { } } Budowa układu (bez wyjść OUTPUT A0 i A1): Przykładowy problem z niepoprawnym odczytem w krokach: 1. Podłączam układ (zasilanie zewnętrzne 5V jak i USB), stany INPUT poprzez MCP23017 odczytują się poprawnie (1 - brak zwarcia między pinem INPUT, a GND; 0 - pin INPUT zwarty z GND): millis(): 5000 fotokomorkaStanSlupekPrzyBramie: 1 fotokomorkaStanNaWyjazdzie: 0 przekaznikStanOdbiornikPilota: 1 2. Zmieniam przykładowe połączenia między GND, a stykami INPUT A2, A3, A4 (odczyt wciąż poprawny): millis(): 7000 fotokomorkaStanSlupekPrzyBramie: 0 fotokomorkaStanNaWyjazdzie: 1 przekaznikStanOdbiornikPilota: 1 3. Minimalnie zmieniam kod (np. dodaję przekaźnik jako OUTPUT do mikrokontrolera) i flashuję kod do mikrokontrolera ESP8266 przez kabel, po czym mikrokontroler na nowo wczytuję procedurę setup() jak i następnie loop(), stany INPUT z MCP8266 odczytywane przez mikrokontroler są jak "zamrożone" (dokładnie takie same jakie wcześniej przed flashowaniem). Odłączając oraz łącząc przewody między INPUT A2, A3, A4 oraz pinem GND nie ma żadnej różnicy, jako dane z MCP8266 zwracane są cały czas takie same jak przez flashowaniem z różnicą millis(): millis(): 2000 fotokomorkaStanSlupekPrzyBramie: 0 fotokomorkaStanNaWyjazdzie: 1 przekaznikStanOdbiornikPilota: 1 4. Odłączam zewnętrzne zasilanie 5V (zasilanie z kabla USB wciąż podłączone), ten sam stan pinów INPUT A2, A3, A4 (niezależnie od stykania pinów INPUT z pinem GND): millis(): 4000 fotokomorkaStanSlupekPrzyBramie: 0 fotokomorkaStanNaWyjazdzie: 1 przekaznikStanOdbiornikPilota: 1 5. Odłączam zasilanie z USB (całkowite odłączenie zasilania od mikrokontrolera (a także MCP23017)), podłączam zasilanie 5V i USB do ESP8266, stany między INPUT A2, A3, A4 oraz GND wczytały się na nowo (teraz są poprawne): millis(): 7000 fotokomorkaStanSlupekPrzyBramie: 1 fotokomorkaStanNaWyjazdzie: 1 przekaznikStanOdbiornikPilota: 1 Tak wygląda działanie mojego układu, co bardzo mi przeszkadza (nie jestem w stanie zmieniać kodu na żywo, po czym flashować i sprawdzać jak funkcjonuje urządzenie sterowane). Dodam także, iż nie miałem tego problemu odczytując stany INPUT bezpośrednio z mikrokontrolera ESP8266, jednak PIN-ów tam jest zdecydowanie za mało i potrzebowałem rozszerzyć o kolejne. Wyczytałem w internecie o ekspanderze MCP23017 i postanowiłem zamówić kilka sztuk. Natomiast po podłączeniu i skonfigurowaniu zaczęły pojawiać się takie problemy. Bardzo bym prosił o pomoc, pomysły mi już upadły co tu jeszcze może być grane, a takie funkcjonowanie na pewno nie jest "normalne". Zaczynam się też zastanawiać czy aby problem nie sprawiają wbudowane rezystory w MCP23017. Być może macie jakieś rady, bardzo prosiłbym o pomoc 🙂 Bardzo zależy mi na zbudowaniu tego układu, a im dłużej się z tym męczę, tym bardziej tracę chęci do kontynuowania dalszego rozwijania się z elektroniką i mikrokontrolerami 😕
  2. Cześć! Ostatnio starałem się zbudować układ, za pomocą którego, mógłbym otrzymywać sygnały MIDI z mojego pianina. Zbudowałem układ według tego poradnika: Dodam, że układ działa. Jednak nie mam pojęcia, jak napisać program, który umożliwiłby mi odczytywanie każdego klawisza na pianinie i np. przypisania temu klawiszowi jakiejś funkcji. Z góry dziękuję za pomoc 😀
×
×
  • 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.