Помогите исправить одну ошибку в скетче

Remmeh
Offline
Зарегистрирован: 10.06.2016

Скачал с инета скетч кодового замка. Почему то при проверке он выдовал много ошибок. Я немного поисправлял в меру своих ограниченных знаний ардуино и почти все ошибки убрались, но одна осталась и я не могу найти. Кто сможет подскажите где она, желательно поподробней. Заранее спасибо

001#include <Servo.h>//Подключение библиотеки для сервопривода
002 
003#include <SPI.h>//Библиотека SPI
004#include <LiquidCrystal.h>//Подключаем библиотеку для дисплея.
005LiquidCrystal lcd(22, 23, 24, 25, 26, 27);//Указываем пины куда подключен дисплей.
006 
007Servo MyServo;//Называем сервопривод.
008 
009char* password = "258A"; //Здесь вы можете указать свой пароль. Я сделал на 4 знака, но можно и больше, изменив несколько строк ниже.
010int position = 0;//Данная переменная указывает на какой позиции при вводе пароля находится курсор
011char key;//Здесь временно хранятся знаки, которые мы считали.
012 
013void setup()
014{
015    MyServo.attach(11);//Указываем, к какому пину подключен сервопривод.
016     
017    lcd.begin(16, 2);//Инициализация дисплея.
018     
019    pinMode(2, INPUT);//Здесь и ниже мы указываем пины выходом. К этим пинам подключена клавиатура.
020    pinMode(3, INPUT);
021    pinMode(4, INPUT);
022    pinMode(10, INPUT);
023    pinMode(6, OUTPUT);
024    pinMode(7, OUTPUT);
025    pinMode(8, OUTPUT);
026    pinMode(9, OUTPUT);
027    pinMode(13, OUTPUT);
028       
029    lcd.print(" Enter Password ");//Пишем "Введите пароль"
030    lcd.setCursor(0, 1);//Переводим курсор на 2 строку.
031    lcd.print("Pass: ");//Пишем "Пароль: "
032  }
033  int rows[]={9,8,7,6}; //Здесь указываем пины рядов нашей клавиатуры.
034  int cols[]={10,4,3,2}; //А здесь строк.
035 
036  char simbols[][2]=//Массив с знаками.
037  {
038    {0,'1'},
039    {1,'2'},
040    {2,'3'},
041    {3,'A'},
042    {4,'4'},
043    {5,'5'},
044    {6,'6'},
045    {7,'B'},
046    {8,'7'},
047    {9,'8'},
048    {10,'9'},
049    {11,'C'},
050    {12,'*'},
051    {13,'0'},
052    {14,'#'},
053    {15,'D'}
054  };
055 
056  void loop()
057   if(key != password[position])//Если вы ошиблись во время ввода пароля хотя бы на один знак, все сбросится.
058          {
059            {
060            position=0;//Сбрасываем позицию пароля.
061          lcd.clear();//Чистим дисплей
062          lcd.print(" Enter Password ");
063          lcd.setCursor(0, 1);
064          lcd.print("Pass: ");
065          delay(200);
066          }
067           
068          if(key == password[position])//А если ввели знак правильно, то...
069          {
070            position++;//То переходите к следующему.
071          }
072           
073          if(position == 4)//Если вы достигли последнего знака, то...
074          {
075            MyServo.write(180);//Поворачиваем серво.
076             
077            position=0;//Сбрасиваем позицию пароля, т.к мы его ввели.
078            delay(100);
079            lcd.clear();//Чистим дисплей
080            lcd.setCursor(0, 0);
081            lcd.print("  Password Ok!  ");//И пишем что пароль правильный.
082            delay(1000);
083            lcd.clear();
084          lcd.print(" Enter Password ");
085          lcd.setCursor(0, 1);
086          lcd.print("Pass: ");
087          delay(200);
088          }
089         delay(200);
090        }
091 
092      digitalWrite(rows[i], LOW);  //выключаем высокий уровень для пройденной строки.
093 
094}
095     
096  //функция возвращающая код нажатой кнопки
097 
098  char FindKey(unsigned int keyCode){
099 
100    for(int i=0;i<16;i++){
101 
102      if(simbols[i][0]==keyCode){
103 
104        return simbols[i][1];
105 
106      }
107    }
108  
109   { return '-'; //если код на найден возвращаем ‘-‘
110 
111  }

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Строка 108 лишняя, в строке 109 открывающая скобка лишняя. В строке 56 не хватает открывающей скобки. Строка 59 лишняя. Строка 90 лишняя.

Это то, что заметил навскидку.

Darwetra
Offline
Зарегистрирован: 18.04.2016

Мне кажется, что каждому знаку из пароля нужно присваивать свою переменную, это если хотите, чтобы при неверном выборе хотя бы одного знака пароль сбрасывался. Но при такой тактике подбор пароля любой сложности будет очень простым делом.

Нужно чтобы пароль проверялся весь полностью уже после его полного набора.

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

Remmeh пишет:

но одна осталась и я не могу найти. Кто сможет подскажите где она, желательно поподробней. 

А тескт сообщения об ошибке секретен? Или это игра такая - "попробуй найди без текста, с текстоми дурак найдёт"? :)))))))