Skocz do zawartości

Klon Arduino NANO - program przestaje działać


Pomocna odpowiedź

Napisano

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);
  }
}

 

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.

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?

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...