Offline
Зарегистрирован: 15.08.2020
Код ошибки «Arduino: 1.8.13 (Windows 10), Плата:»Arduino Nano, ATmega328P (Old Bootloader)»
In file included from C:UsersПенёкDocumentsArduinosketch_aug15asketch_aug15a.ino:4:0:
C:Users����DocumentsArduinolibrariesTime-master/Time.h:1:2: warning: #warning «Please include TimeLib.h, not Time.h. Future versions will remove Time.h» [-Wcpp]
#warning «Please include TimeLib.h, not Time.h. Future versions will remove Time.h»
^~~~~~~
sketch_aug15a:9:11: error: expected unqualified-id before numeric constant
C:UsersПенёкDocumentsArduinosketch_aug15asketch_aug15a.ino: In function ‘void setup()’:
sketch_aug15a:120:7: error: unable to find numeric literal operator ‘operator»»dig_display.init’
C:UsersПенёкDocumentsArduinosketch_aug15asketch_aug15a.ino: In function ‘void loop()’:
C:UsersПенёкDocumentsArduinosketch_aug15asketch_aug15a.ino:166:27: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
sketch_aug15a:195:10: error: unable to find numeric literal operator ‘operator»»dig_display.display’
sketch_aug15a:197:10: error: unable to find numeric literal operator ‘operator»»dig_display.display’
sketch_aug15a:199:10: error: unable to find numeric literal operator ‘operator»»dig_display.display’
sketch_aug15a:201:10: error: unable to find numeric literal operator ‘operator»»dig_display.display’
sketch_aug15a:203:10: error: unable to find numeric literal operator ‘operator»»dig_display.point’
exit status 1
expected unqualified-id before numeric constant
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»»
Сам код:
#include
#include
#include
#include
#include «TM1637.h»
#define CLK 6
#define DIO 5
TM1637 4dig_display(CLK, DIO);
// для данных времени
int8_t ListTime[4]={0,0,0,0};
// для данных dd/mm
int8_t ListDay[4]={0,0,0,0};
// разделитель
boolean point=true;
// для смены время / день-месяц
unsigned long millist=0;
tmElements_t datetime;
OLED myOLED(4, 3, 4); //OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
///// часы ..
byte decToBcd(byte val){
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val){
return ( (val/16*10) + (val%16) );
}
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
Wire.beginTransmission(0x68);
Wire.write(0);
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(0x68);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(0x68, 7);
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
///// температура ..
float get3231Temp(){
byte tMSB, tLSB;
float temp3231;
Wire.beginTransmission(0x68);
Wire.write(0x11);
Wire.endTransmission();
Wire.requestFrom(0x68, 2);
if(Wire.available()) {
tMSB = Wire.read(); //2’s complement int portion
tLSB = Wire.read(); //fraction portion
temp3231 = (tMSB & B01111111); //do 2’s math on Tmsb
temp3231 += ( (tLSB >> 6) * 0.25 ); //only care about bits 7 & 8
}
else {
//oh noes, no data!
}
return temp3231;
}
void setup()
{
Serial.begin(9600); // запустить последовательный порт
// запуск дисплея
4dig_display.init();
// яркость дисплея
//tm1637.set(7);
Serial.begin(9600);
myOLED.begin();
Wire.begin();
// установка часов
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
second = 30;
minute = 0;
hour = 14;
dayOfWeek = 3; // день недели
dayOfMonth = 1; // день
month = 4;
year = 14;
//setDateDs1307(00, 40, 15, 6, 15, 8, 2020);
}
void loop(){
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
char week[8][10] = {«Monday», «Tuesday», «Wednesday», «Thursday», «Friday», «Saturday», «Sunday»};
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
char time[10];
char data[11];
snprintf(time, sizeof(time),»%02d:%02d:%02d»,
hour, minute, second);
snprintf(data, sizeof(data), «%02d/%02d/%02d»,
dayOfMonth, month, year);
myOLED.setFont(SmallFont);
myOLED.print(time, CENTER, 15);
myOLED.print(data, CENTER, 0);
myOLED.printNumF(get3231Temp(), 2, 55, 30);
myOLED.print(«C», 43, 30);
myOLED.update();
// получение времени
if (RTC.read(datetime)) {
ListTime[0]= datetime.Hour/10;
ListTime[1]= datetime.Hour%10;
ListTime[2]= datetime.Minute/10;
ListTime[3]= datetime.Minute%10;
ListDay[0]= datetime.Day/10;
ListDay[1]= datetime.Day%10;
ListDay[2]= datetime.Month/10;
ListDay[3]= datetime.Month%10;
}
else {
// ошибка
4dig_display.display(0,ListDay[0]);
4dig_display.display(1,ListDay[1]);
4dig_display.display(2,ListDay[2]);
4dig_display.display(3,ListDay[3]);
4dig_display.point(false);
}
delay(500);
// поменять индикацию точек
point=!point;
delay(1000);
}
Первая прошивка
Итак, разобрались со средой разработки, теперь можно загрузить прошивку. Рекомендую загрузить пустую прошивку, чтобы убедиться, что все драйвера установились и плата вообще прошивается. Также лучше делать это с новой или заведомо рабочей платой.
1. Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:
- Неисправен USB кабель.
- Неисправен USB порт компьютера.
- Неисправен USB порт Arduino.
- Попробуйте другой компьютер, чтобы исключить часть проблем из списка.
- Попробуйте другую плату, чтобы исключить часть проблем из списка.
- На плате Arduino сгорел диод по питанию USB.
- Плата Arduino сгорела полностью из-за неправильного подключения питания или короткого замыкания
2. Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:
- См. предыдущий список неисправностей.
- Кабель должен быть data-кабелем, а не “зарядным”.
- Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб.
- Не установлены драйверы для Arduino.
3. В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, отличный от COM1. Если этого не произошло:
- См. предыдущий список неисправностей.
- Некорректно установлен драйвер CH341.
- Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
- Возникла системная ошибка, обратитесь к знакомому компьютерщику
4. Выбираем свою плату. Если это Arduino Nano, выбираем в ИнструментыПлатаArduino Nano. Если другая – выбираем другую. Нажимаем стрелочку в левом верхнем углу (загрузить прошивку). Да, загружаем пустую прошивку.
- [Для Arduino Nano] В микроконтроллер китайских нанок зашит “старый” загрузчик, поэтому выбираем ИнструментыПроцессорATmega328p (Old Bootloader). Некоторые китайцы зашивают в свои платы новый загрузчик, поэтому если прошивка не загрузилась (загрузка идёт минуту и вылетает ошибка avrdude: stk500_getsync()) – попробуйте сменить пункт Процессор на ATmega328p.
Если появилась надпись “Загрузка завершена” – значит всё в порядке и можно прошивать другие скетчи. В любом случае на вашем пути встретятся другие два варианта событий, происходящих после нажатия на кнопку “Загрузка” – это ошибка компиляции и ошибка загрузки. Вот их давайте рассмотрим более подробно.
Ошибки компиляции
Возникает на этапе компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки.
- В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
- В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать.
- В скачанных с интернета готовых скетчах часто возникает ошибка с описанием название_файла.h no such file or directory. Это означает, что в скетче используется библиотека <название файла>, и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по название файла.
- При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
- Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
- Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча
- Ошибка недостаточно свободного места возникает по вполне понятным причинам. Возможно поможет урок по оптимизации кода.
Частые ошибки в коде, приводящие к ошибке компиляции
- expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
- stray ‘320’ in program – русские символы в коде
- expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
- … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
- redefinition of … – повторное объявление функции или переменной
- storage size of … isn’t known – массив задан без указания размера
Ошибки загрузки
Возникают на этапе, когда программа успешно скомпилирована и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.
- USB кабель, которым подключается Arduino, должен быть Data-кабелем, а не кабелем только для зарядки. Нужным нам кабелем подключаются к компьютеру плееры и смартфоны.
- Причиной ошибки загрузки являются не установленные/криво установленные драйвера CH340, если у вас китайская NANO.
- Также будет ошибка avrdude: ser_open(): can’t open device, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта выше, либо попробуй другой USB порт, или вообще другой компьютер.
- Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляем USB и по новой прошиваем.
- Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”. Также в свежих версиях IDE нужно выбирать ATmega328P (Old Bootloader) для китайских плат NANO.
- Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
- Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
- Если в описании ошибки встречается bootloader is not responding и not in sync, а все предыдущие пункты этого списка проверены – с вероятностью 95% сдох загрузчик. Второй неприятный исход – загрузчик “слетел”, и его можно прошить заново.
Предупреждения
Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет критических ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:
- # Pragma message… – это просто сообщения, оставленные разработчиком проекта или библиотеки. Чаще всего номер версии и прочая информация.
- Недостаточно памяти, программа может работать нестабильно – Чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти. Так что ещё раз: это всего лишь предупреждение, а не ошибка.
FAQ
Завершая раздел Введение в Arduino поговорим о вопросах, которые очень часто возникают у новичков:
- Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс Flash памяти. А он довольно большой.
- Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
- Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов. Подробнее в этом уроке.
- Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Подробнее в этом уроке.
- Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
- Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу.
- Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь.
- Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
After debugging and having some conflicting declarations about analog pins, I finally thought it was done, after compiling I got this error:
32:0,
1:
31:12: error: expected unqualified-id before numeric constant
2:5: note: in expansion of macro 'B1'
I can’t understand what this means. What’s wrong with my code down here?
// don't judge me if it's too long and overcomplicated :P I'm still new xD
int AA1 = 0;
int B1 = 1;
int C1 = 2;
int D1 = 3;
int AA2 = 4;
int B2 = 5;
int C2 = 6;
int AA3 = 8;
int B3 = 9;
int C3 = 10;
int D3 = 11;
int B4 = 12;
int C4 = 13;
int sec = 0;
int min1 = 0;
int min2 = 0;
int hour1 = 8;
bool hour2 = 0;
void setup() {
pinMode(AA1, OUTPUT);
pinMode(B1, OUTPUT);
pinMode(C1, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(AA2, OUTPUT);
pinMode(B2, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(AA3, OUTPUT);
pinMode(B3, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(B4, OUTPUT);
pinMode(C4, OUTPUT);
}
void loop() {
OutputOn();
delay(1000);
sec++;
if(sec == 60) {
sec = 0;
min1++;
if(min1 == 10) {
min1 = 0;
min2++;
if(min2 == 6) {
min2 = 0;
hour1++;
if(hour1 == 10) {
hour1 = 0;
hour2 = 1;
}
if(hour2 == 1, hour1 == 3) {
hour1 = 1;
hour2 = 0;
}
}
}
}
}
void OutputOn() {
digitalWrite(B1, LOW);
digitalWrite(C1, LOW);
digitalWrite(D1, LOW);
digitalWrite(A2, LOW);
digitalWrite(B2, LOW);
digitalWrite(C2, LOW);
digitalWrite(A3, LOW);
digitalWrite(B3, LOW);
digitalWrite(C3, LOW);
digitalWrite(D3, LOW);
digitalWrite(B4, LOW);
digitalWrite(C4, LOW);
if(min1 == 1) { digitalWrite(AA1, HIGH); }
if(min1 == 2) { digitalWrite(B1, HIGH); }
if(min1 == 3) { digitalWrite(B1, HIGH); digitalWrite(AA1, HIGH); }
if(min1 == 4) { digitalWrite(C1, HIGH); }
if(min1 == 5) { digitalWrite(C1, HIGH); digitalWrite(AA1, HIGH); }
if(min1 == 6) { digitalWrite(D1, HIGH); digitalWrite(B1, HIGH); }
if(min1 == 7) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); digitalWrite(B1, HIGH); }
if(min1 == 8) { digitalWrite(D1, HIGH); }
if(min1 == 9) { digitalWrite(D1, HIGH); digitalWrite(AA1, HIGH); }
if(min2 == 1) { digitalWrite(AA2, HIGH); }
if(min2 == 2) { digitalWrite(B2, HIGH); }
if(min2 == 3) { digitalWrite(B2, HIGH); digitalWrite(AA1, HIGH); }
if(min2 == 4) { digitalWrite(C2, HIGH); }
if(min2 == 5) { digitalWrite(C2, HIGH); digitalWrite(A2, HIGH); }
if(min2 == 6) { digitalWrite(C2, HIGH); digitalWrite(B2, HIGH); }
if(hour1 == 1) { digitalWrite(AA3, HIGH); }
if(hour1 == 2) { digitalWrite(B3, HIGH); }
if(hour1 == 3) { digitalWrite(B3, HIGH); digitalWrite(AA3, HIGH); }
if(hour1 == 4) { digitalWrite(C3, HIGH); }
if(hour1 == 5) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); }
if(hour1 == 6) { digitalWrite(C3, HIGH); digitalWrite(B3, HIGH); }
if(hour1 == 7) { digitalWrite(C3, HIGH); digitalWrite(AA3, HIGH); digitalWrite(B3, HIGH); }
if(hour1 == 8) { digitalWrite(D3, HIGH); }
if(hour1 == 9) { digitalWrite(D3, HIGH); digitalWrite(C3, HIGH); }
if(hour2 == 1) { digitalWrite(B4, HIGH); digitalWrite(C4, HIGH); }
}
It’s supposed to be code for a clock (if it wasn’t obvious enough) hooked up to 4 7-segment decoders, also connected to 4 7-segment LED displays.
-
помогите найти ошибку
а то он выдает
exit status 1
expected unqualified-id before numeric constant
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int valR1, valR2, valR3, valR4;
const uint8_t pinR1 = A2;
const uint8_t pinR2 = A3;
const uint8_t pinR3 = A4;
const uint8_t pinR4 = A5;
const uint8_t pinS1 = 10;
const uint8_t pinS2 = 9;
const uint8_t pinS3 = 8;
const uint8_t pinS4 = 7;
void setup() {
Serial.begin(9600);
servo1.attach(pinS1);
servo2.attach(pinS2);
servo3.attach(pinS3);
servo4.attach(pinS4);
}
void loop() {
valR1=map(analogRead(pinR1). 0, 1024, 10,170); servo1.write(valR1);
valR2=map(analogRead(pinR2). 0, 1024, 80,170); servo2.write(valR2);
valR3=map(analogRead(pinR3). 0, 1024, 60,170); servo3.write(valR3);
valR4=map(analogRead(pinR4). 0, 1024, 40, 85); servo4.write(valR4);
Serial.println((String) «A1 = «+valR1+»,t A2 = «+valR2+»,t A3 = «+valR3+»,t A4 = «+valR4);
}Вложения:
-
valR1=map(analogRead(pinR1).
Точку влепили везде
I’m attaching my rfid MFRC522 to my Arduino when I get this error:
Arduino: 1.6.6 Hourly Build 2015/09/18 03:38 (Windows 7), Board: "Arduino/Genuino Uno"
sketch_mar11b:34: error: expected unqualified-id before numeric constant
sketch_mar11b.ino:36:10: note: in expansion of macro 'SS_PIN'
sketch_mar11b:34: error: expected ')' before numeric constant
sketch_mar11b.ino:36:10: note: in expansion of macro 'SS_PIN'
sketch_mar11b.ino: In function 'void setup()':
sketch_mar11b:41: error: expected initializer before '.' token
sketch_mar11b.ino: In function 'void loop()':
sketch_mar11b:47: error: 'mfrc522' was not declared in this scope
sketch_mar11b:52: error: 'mfrc522' was not declared in this scope
sketch_mar11b:57: error: 'mfrc522' was not declared in this scope
exit status 1
expected unqualified-id before numeric constant
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
But this is my regular code for my stuff:
/*
* MFRC522 - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT.
* The library file MFRC522.h has a wealth of useful info. Please read it.
* The functions are documented in MFRC522.cpp.
*
* Based on code Dr.Leong ( WWW.B2CQSHOP.COM )
* Created by Miguel Balboa (circuitito.com), Jan, 2012.
* Rewritten by Søren Thing Andersen (access.thing.dk), fall of 2013 (Translation to English, refactored, comments, anti collision, cascade levels.)
* Released into the public domain.
*
* Sample program showing how to read data from a PICC using a MFRC522 reader on the Arduino SPI interface.
*----------------------------------------------------------------------------- empty_skull
* Aggiunti pin per arduino Mega
* add pin configuration for arduino mega
* http://mac86project.altervista.org/
----------------------------------------------------------------------------- Nicola Coppola
* Pin layout should be as follows:
* Signal Pin Pin Pin
* Arduino Uno Arduino Mega MFRC522 board
* ------------------------------------------------------------
* Reset 9 5 RST
* SPI SS 10 53 SDA
* SPI MOSI 11 52 MOSI
* SPI MISO 12 51 MISO
* SPI SCK 13 50 SCK
*
* The reader can be found on eBay for around 5 dollars. Search for "mf-rc522" on ebay.com.
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 (SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
MFRC522 mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println("Scan PICC to see UID and type...");
}
void loop() {
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump debug info about the card. PICC_HaltA() is automatically called.
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
}
Now I don’t understand What I’m doing wrong. I can’t use the Int method cause that makes a constant number to be assigned, but I’m not adding a numeric value. Why am I getting these errors?