в serial постоянно пишет сообщение из void setup(){

ssergey74
Offline
Зарегистрирован: 05.01.2018

делаю кодовый замок, при отладке вылезает постоянно в порт сообщение из void setup()



#include <Keypad.h>
//-----------------------------------------------------------------
char enter [5] = {'Z','Z','Z','Z','Z'};    // массив ввода
int i = 0;                                 // переменная ячейки массива
//---------------------------клава------------------
const byte ROWS = 4;              // клавиатура имеет четыре ряда
const byte COLS = 4;              // клавиатура имеет четыре столбика
char hexaKeys[ROWS][COLS] = {     // определяем символы на клавиатуре, которые соответствуют кнопкам
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // подключение к выводам строк клавиатуры
byte colPins[COLS] = {5, 4, 3, 2}; // подключение к выводам столбцов клавиатуры
Keypad keypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
//---------------------------------------------------------
void setup(){
  Serial.begin(9600);
  Serial.println("start program");
}
  
void loop(){
  char key = keypad.getKey();
  
 
  if ((key != NO_KEY)&&(key !=' ')){
    Serial.print("key ");
    Serial.println(key);
    
    enter [i] = key;
    Serial.print("enter ");
    Serial.println(enter);
    i ++;
    if (i == 5) i=0;
    Serial.print("i= ");
    Serial.println(i);
  }

  if (enter [4] != 'Z'){
    Serial.print("code= ");
    Serial.println(enter);
    // сравнение с запрограмированным кодом
    // действие при совпадении кода
    enter [0] = 'Z';
    enter [1] = 'Z';
    enter [2] = 'Z';
    enter [3] = 'Z';
    enter [4] = 'Z';
    Serial.println("code reset");

    
  }
}

получаю в параллельном порту следующее:

start program
key 1
enter 1ZZZZstart program
i= 1
key 2
enter 12ZZZstart program
i= 2
key 3
enter 123ZZstart program
i= 3
key 4
enter 1234Zstart program
i= 4
key 5
enter 12345start program
i= 0
code= 12345start program
code reset
key 6
enter 6ZZZZstart program
i= 1
 
не могу понять, откуда лезет после каждого enter и code надпись start program?
пробовал добавлять значения времени с начала програмы, контроллер не перезагружается.
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Массив символов enter нормально объявите и будет счастье http://arduino.ru/Reference/String

ssergey74
Offline
Зарегистрирован: 05.01.2018

спасибо, поменял на 

char enter[] = "ZZZZZ";                    // массив ввода

все заработало, ура!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ssergey74 пишет:

все заработало, ура!

А в ошибке то разобрались? В чём дело было поняли? С числом элементов правильно объявить можете? Если нет, - то не ура.

ssergey74
Offline
Зарегистрирован: 05.01.2018

думаю смогу, не сталкивался раньше с массивами, только версию прошивки отопительной печки объявлял :)