Ошибка при загрузке скетча. Подскажите что делать.
- Войдите на сайт для отправки комментариев
Вс, 12/06/2016 - 09:50
Пытаюсь загрузить любой скетч и постоянно пишет ошибка. Загружаются только базавые примеры скетчей.
Пробовал загружать через другие версии программы, не помогает.
Подскажите что делать? Всем заранее спасибо.
При загрузке вылазит вот такие ошибки:
C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino: In function 'void setup()':
ArduinoCodeLock:34: error: 'mfrc522' was not declared in this scope
C:\Documents and Settings\Admin\Рабочий стол\ArduinoCodeLock\ArduinoCodeLock.ino: In function 'void loop()':
ArduinoCodeLock:145: error: 'mfrc522' was not declared in this scope
ArduinoCodeLock:151: error: 'mfrc522' was not declared in this scope
ArduinoCodeLock:157: error: 'mfrc522' was not declared in this scope
Вот скетч который я загружаю
#include <Servo.h>//Подключение библиотеки для сервопривода
#include <SPI.h>//Библиотека SPI
#include <LiquidCrystal.h>//Подключаем библиотеку для дисплея.
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);//Указываем пины куда подключен дисплей.
Servo MyServo;//Называем сервопривод.
char* password = "258A"; //Здесь вы можете указать свой пароль. Я сделал на 4 знака, но можно и больше, изменив несколько строк ниже.
int position = 0;//Данная переменная указывает на какой позиции при вводе пароля находится курсор
char key;//Здесь временно хранятся знаки, которые мы считали.
void setup()
{
MyServo.attach(11);//Указываем, к какому пину подключен сервопривод.
SPI.begin(); //Инициализация SPI шины.
mfrc522.PCD_Init(); //Инициализация считывателя.
lcd.begin(16, 2);//Инициализация дисплея.
pinMode(2, INPUT);//Здесь и ниже мы указываем пины выходом. К этим пинам подключена клавиатура.
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(10, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
lcd.print(" Enter Password ");//Пишем "Введите пароль"
lcd.setCursor(0, 1);//Переводим курсор на 2 строку.
lcd.print("Pass: ");//Пишем "Пароль: "
}
int rows[]={9,8,7,6}; //Здесь указываем пины рядов нашей клавиатуры.
int cols[]={10,4,3,2}; //А здесь строк.
char simbols[][2]=//Массив с знаками.
{
{0,'1'},
{1,'2'},
{2,'3'},
{3,'A'},
{4,'4'},
{5,'5'},
{6,'6'},
{7,'B'},
{8,'7'},
{9,'8'},
{10,'9'},
{11,'C'},
{12,'*'},
{13,'0'},
{14,'#'},
{15,'D'}
};
void loop()
{
byte uidCard[4] = {0xD9, 0x40, 0xE9, 0xD5}; //Здесь код вашей карты, измените на свой.
for(int i=0;i<4;i++){ //цикл для перехода по всем строкам.
digitalWrite(rows[i], HIGH); //подаем на текущую строку высокий уровень.
for(int j=0;j<4;j++){ //цикл для переходов по всем столбцам.
if(digitalRead(cols[j])==HIGH){ //если уровень высокий, то кнопка нажата.
key = FindKey(4*i+j);//Помните переменную которая временно хранит знаки? Так вот это она и есть.
lcd.setCursor(position + 7, 1);//Переводим курсор на 2 строку. position + 7 нужно для того, чтобы правильно отображать пароль.
lcd.print(FindKey(4*i+j));//Пишем знак который считали.
if (key == '*' || key == '#')//Если нажата кнопка * или #, то сбрасываем пароль.
{
position = 0;//Сбрасываем позицию пароля.
lcd.clear();//Чистим дисплей
lcd.print(" Enter Password ");
lcd.setCursor(0, 1);
lcd.print("Pass: ");
delay(200);//Небольшая задержка + фикс мигания во время нажатия.
MyServo.write(0);//Возвращаем сервопривод.
}
if(key != password[position])//Если вы ошиблись во время ввода пароля хотя бы на один знак, все сбросится.
{
position=0;//Сбрасываем позицию пароля.
lcd.clear();//Чистим дисплей
lcd.print(" Enter Password ");
lcd.setCursor(0, 1);
lcd.print("Pass: ");
delay(200);
}
if(key == password[position])//А если ввели знак правильно, то...
{
position++;//То переходите к следующему.
}
if(position == 4)//Если вы достигли последнего знака, то...
{
MyServo.write(180);//Поворачиваем серво.
position=0;//Сбрасиваем позицию пароля, т.к мы его ввели.
delay(100);
lcd.clear();//Чистим дисплей
lcd.setCursor(0, 0);
lcd.print(" Password Ok! ");//И пишем что пароль правильный.
delay(1000);
lcd.clear();
lcd.print(" Enter Password ");
lcd.setCursor(0, 1);
lcd.print("Pass: ");
delay(200);
}
delay(200);
}
}
digitalWrite(rows[i], LOW); //выключаем высокий уровень для пройденной строки.
}
//Ниже идет проверка карты, то есть, если карта которую приложили имеет такой адресс, который вы указали в начале, то...
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
for (byte i = 0; i < 4; i++) {
if (uidCard[i] != mfrc522.uid.uidByte[i])
return;
}
MyServo.write(180);//То поворачиваем серво.
lcd.clear();//Чистим дисплей.
lcd.setCursor(0, 0);
lcd.print(" Card Ok! ");//И пишем, что карта принята.
delay(1000);//Задержка.
lcd.clear();
lcd.print(" Enter Password ");
lcd.setCursor(0, 1);
lcd.print("Pass: ");
}
//функция возвращающая код нажатой кнопки
char FindKey(unsigned int keyCode){
for(int i=0;i<16;i++){
if(simbols[i][0]==keyCode){
return simbols[i][1];
}
Вам же написали: "не объявлена переменная mfrc522".
Что делать? - разобраться с её типом и объявить.
Сильно подозреваю, что долно быть что-то вроде этого:
Источник
Сделал как вы написали. Теперь вот что выдаёт :
Ладно, еще раз поработаю переводчиком:
MFRC522.h: No such file or directory - нет (не нашли) файл (библиотеку) MFRC522.h
Всё сделал. Установил дополнительные библиотеки. Спасибо)