Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Akkor félreértettem.
![]() Ebben az esetben valószínűleg az a gond, hogy a kontroller előbb kezdi (kezdené) vezérelni a kijelzőt, mint ahogy az észhez tért volna. Bekpacsoláskor legyen pl. egy másodpercnyi késleltetés, mielőtt a kijelzővel valamit is csinál az UNO.
Ez már be van építve a progiba. Van egy késleltetés és utána egy 1 mp-es reset jel és újabb késleltetés.
Olyasmire emlékeztet a jelenség, mintha valahol lenne benne egy kondi ami nagy értékű ellenálláson keresztül csak lassan tud kisülni is meg feltöltődni is.
Logikai analizátorral kell ellenőrizni a vezérlőlábakat, mi történik bekapcsoláskor. Konkrétabbat nem tudok mondani, egyszer-kétszer foglalkoztam ilyen kijelzővel de elengedtem, nekem nem jöttek be.
Azért köszönöm.
Egy nem túl elegáns megoldás lenne. Monostabil időzítővel késleltetve adni egy reset jelet magának a kontrollernek, hogy egyetlen egyszer induljon újra néhány másodperc elteltével, csak hát.... A hozzászólás módosítva: Vas, 15:21
Hogy van bekötve, milyen libet használsz, hogy néz ki setup, enélkül...
Tényleg látni kellene a kódot, de legalább a Setup-részt.
Szerintem a hosszú idejű kikapcsoláskor a vezérlő memóriája szeméttel lesz teli és nincs rendesen inicializálva a setup-nál. A kód többi részénél lehet, hogy van olyan utasítás, ami megteszi esetleg, de nem frissül a képernyő. Gyors újraindításkor pedig már azzal frissül, ami a vezérlő memóriájában van. Ez csak tipp, de ilyen fura bug -is lehet. A másik pedig, hogy az 1 sec késleltetés hol van? A vezérlő nem jelez vissza. De csak 1x olvastam a leírását, és lehet nem ez a gond, mert azt írja, hogy auto reset van, mikor bekapcsol. (csak átfutottam) De ami a leírásból kijött még, hogy 8 és 4 bites módja van az írásnak. Melyiket használod? Ha négyet, akkor a szabadon lévő lábak mire vannak kötve? Van ott busy flag is, meg sok minden ebben a vezérlőben, szóval lehet sok minden. Gondolom valamilyen lib-et használsz. Ha nem lebegnek a lábak sehol sem, és a táp is stabil, akkor a lib-ben lehet hiba, vagy a lib-nek nincs meghívva valamelyik függvénye tisztességesen. Bár nem Arduino-nál, de nálam okozott sok meglepetést az, hogy nem bírta a táp sem meghajtani az összes eszközt, illetve a közös GND hiánya is okozott már meglepetést. No de mindez csak találgatás, több infó kellene, mint ahogy a többi fórumtárs már említette. A hozzászólás módosítva: Vas, 18:35
Vagy tényleg kondi + ellenállás hiba van valahol, mint ahogy mondod, de akkor meg a kapcsolás kellene + táp.
Ez egy korábban készült program. Annyi különbség a setup-ban, hogy ebből hiányzik az 1 sec display setup.
Ugyan úgy zavaros a kijelző hosszabb kikapcsolás után. A program eleje a loop-ig: #include <Arduino.h> #include <SoftwareSerial.h> #include <pcf8574.h> #include <U8g2lib.h> #include <SPI.h> U8G2_ST7920_128X64_1_HW_SPI u8g2(U8G2_R2, /* CS=*/ 10, /* reset=*/ 8); PCF8574 ex1(0x39); const byte interruptPin = 3; // Gomb const byte rxtxPin = 6; // Bekapcsolás első lépés const byte pttPin = 9; // Bekapcsolás második lépés volatile bool buttonPressed = false; // Gomb állapotának jelzője volatile bool processNeeded = false; // Indikálja a folyamat indítását unsigned long processStartTime = 0; // Időzítéshez bool turningOn = false; // Bekapcsolási vagy kikapcsolási folyamat bool catError = false; bool modPin = 3; bool Flag1 = 0; bool Flag2 = 0; const int monitoredPin = 3; bool lastState = HIGH; SoftwareSerial CATSerial(2, 4); // RX, TX unsigned long lastRequestTime = 0; // Előző lekérdezés időpontja const unsigned long requestInterval = 1000; // 1 másodperces intervallum float frequency; // Az aktuális frekvencia float previousFrequency = 0; // Az előző frekvencia int summa; String band = "Unknown"; // Globális változó a sáv tárolására String onair; String data; //int lastState = HIGH; // Kezdeti állapot bool risingEdgeDetected = false; bool fallingEdgeDetected = false; bool flagCATEnabled = false; // A CAT engedélyezés vezérléséhez void setup() { pinMode(7, OUTPUT); digitalWrite(7, LOW); // 12V switch pinMode(interruptPin, INPUT_PULLUP); // Gomb alapállapota HIGH pinMode(rxtxPin, OUTPUT); pinMode(pttPin, OUTPUT); digitalWrite(rxtxPin, LOW); // Kezdeti állapot digitalWrite(pttPin, LOW); delay(1000); digitalWrite(7, HIGH); // 12V ON pinMode(monitoredPin, INPUT); CATSerial.begin(4800); attachInterrupt(digitalPinToInterrupt(interruptPin), handleButtonPress, CHANGE); // Gomb megszakítás u8g2.begin(); u8g2.initDisplay(); u8g2.clearBuffer(); u8g2.firstPage(); do { u8g2.setFont(u8g2_font_9x15B_tf); // choose a suitable font u8g2.drawStr(1, 16, "DIPLEXER BLOCK"); u8g2.setFont(u8g2_font_8x13_tf); u8g2.drawStr(6, 32, " CONTROLLER"); u8g2.setFont(u8g2_font_5x8_tf); u8g2.drawStr(6, 46, " MADE BY HA4PL"); u8g2.setFont(u8g2_font_5x8_tf); u8g2.drawStr(1, 63, "IS A CAT CABLE CONNECTED?"); } while ( u8g2.nextPage() ); delay(5000); // } A hozzászólás módosítva: 8:59
Ok, köszi!
Szerintem már sokan nézik nem csak én. Tegnap elfelejtettem részletezni, hogy a busy láb nem lenne jobb? Azaz nem 1s fix figyelés, hanem egy while ciklussal figyelni ezt a lábat, mert az fordított logikával nézi, hogy foglalt-e az eszköz. Nézegetem most kicsit. |
Bejelentkezés
Hirdetés |