betonowy Napisano Czerwiec 4, 2019 Udostępnij Napisano Czerwiec 4, 2019 Cześć, mam prosty program na arduino nano - wpisujemy w klawiaturę kod ( klawiatura 4x3, keypad.h), jeśli jest poprawny, zmienia stan na przekaźniku i wyłącza elektromagnes, jeśli nie, nic się nie dzieje. Dodatkowo reset wpisanego hasła za pomocą '*'. Otóż program po prostu przestaje działać w losowym momencie, nie pomaga reset ani wyłączenie zasilania na dłuższy czas, jedynie wgranie programu od nowa. Spotkał się ktoś kiedyś z taką sytuacją? Sytuacja już z 2 takim arduino. Załączam cały kod, może coś przeoczyłem. Pozdrawiam, Kamil #include <Keypad.h> char password[9] = {'2','2','4','4','2', '2','5','5','5'}; //char password1[5] = {'1','1','1','1','1'}; char dane[9] = {}; const byte ROWS = 4; //four rows const byte COLS = 3; //three columns int x = 0; char hexaKeys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte rowPins[ROWS] = {5, 6, 7, 8}; //connect to the row pinouts of the keypad byte colPins[COLS] = {2, 3, 4}; //connect to the column pinouts of the keypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(9600); pinMode(11, OUTPUT); digitalWrite(11, HIGH); // keypad.addEventListener(keypadEvent); } void loop(){ char customKey = customKeypad.getKey(); if (customKey == '*')reset(); else if (customKey) { dane[x]= customKey; x++; } if ( dane[0]== password[0] && dane[1]==password[1] && dane[2] == password[2] && dane[3] == password[3] && dane[4] == password[4] && dane[5] == password[5] && dane[6] == password[6] && dane[7] == password[7] && dane[8] == password[8] ) { Serial.println("DZIAŁA"); digitalWrite(11, LOW); delay(500); digitalWrite(11, HIGH); delay(500); reset(); } } void reset() { for(int i=0; i<9; i++) { dane[i]=0; x=0; Serial.println("RESET"); digitalWrite(11, HIGH); } } Cytuj Link do komentarza Share on other sites More sharing options...
marek1707 Czerwiec 4, 2019 Udostępnij Czerwiec 4, 2019 Napisz co to za elektromagnes, jak podłączony, jak sterowany, z czego zasilasz całość i czy zamiast wgrywać nowy kod próbowałeś po prostu wyłączyć i włączyć zasilanie. Jest bardzo mała szansa, by program sam się kasował czy niszczył. Być może z powodu machania indukcyjnością umiera USB i to zawiesza cały program. Nie wypisuj niczego przez konsolę, nie używaj w ogóle Serial. Po uruchomieniu zapal na sekundę jakąś dodatkową diodę LED a potem np. migaj nią po każdym wykryciu przycisku na klawiaturze. Przynajmniej będziesz widział czy program jeszcze żyje. Cytuj Link do komentarza Share on other sites More sharing options...
betonowy Czerwiec 4, 2019 Autor tematu Udostępnij Czerwiec 4, 2019 Elektromagnes trzymający, indukcyjność nieznana, udźwig jakieś 60kg. Podłączony pod przekaźnik, w momencie wpisania kodu przekaźnik zmienia stan i rozwiera obwód, jednocześnie zwalniając magnes. Oddalony od kontrolera o jakieś 30 cm. Nano zasilane jest z zewnętrznego zasilacza podłączonego pod 5V. Do tego zasilacza podłączone są jeszcze ledy i kilka przekaźników. Elektromagnes zasilany z osobnego zasilacza +12V. Tak, próbowałem zarówno resetu z przycisku jak i wyłączenia zasilania. Wnioskuje że program nie żyje po tym, że po starcie powinien ustawić odpowiedni stan przekaźnika i zewrzeć magnes a tego nie robi. Dodam że raz przestało działać po miesiącu, raz po tygodniu, po zmianie uC i oddaleniu go od magnesu po jakichś 2 tygodniach. Na stałe nie ma nic podłączone pod USB, w takim wypadku też Serial może wywalić program? Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!