Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобратся с оштбкой в коде в ардуино

Владимир Гуньченков Ученик (80), открыт 3 недели назад
Arduino: 1.8.19 (Windows 10), Плата:"Arduino Uno"











sktch24:11:16: error: expected primary-expression before '=' token

C:\Users\MSI\Downloads\38833FF26BA1D.UnigramPreview_g9c9v27vpyspw!App\Arduino Kit Lessons\Arduino Kit Lessons\КОД\24. Опыт считыватель RFID\sktch24\sktch24.ino:12:17: note: in expansion of macro 'SS_PIN'

sktch24:12:23: error: expected unqualified-id before ',' token

sktch24:10:17: error: expected unqualified-id before '=' token

C:\Users\MSI\Downloads\38833FF26BA1D.UnigramPreview_g9c9v27vpyspw!App\Arduino Kit Lessons\Arduino Kit Lessons\КОД\24. Опыт считыватель RFID\sktch24\sktch24.ino:12:25: note: in expansion of macro 'RST_PIN'

sktch24:12:32: error: expected unqualified-id before ')' token

exit status 1

expected primary-expression before '=' token



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"


#include <SPI.h>
#include <MFRC522.h>
// пин для подключения реле
#define RELAY_RC522_PIN 41
// уровни для включения/выключения реле
#define RELAY_ON 0
#define RELAY_OFF 1
// Инициализация MFRC522
// константы подключения контактов SS и RST
#define RST_PIN = 5
#define SS_PIN = 53
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
// массив разрешенных uid
byte uidok[][4]={
{0xE0, 0x2A, 0x87, 0x1B},
{0xD9, 0xFA, 0x90, 0x55 }
};

void setup() {
Serial.begin(9600); // инициализация последовательного порта
SPI.begin(); // инициализация SPI
mfrc522.PCD_Init(); // инициализация MFRC522
// сконфигурировать вывод реле как OUTPUT
pinMode(RELAY_RC522_PIN,OUTPUT);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
}

void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
// чтение карты
if ( mfrc522.PICC_ReadCardSerial()) {
// показать результат чтения UID и тип метки
Serial.print(F("Card UID:"));
if(compare_uid(mfrc522.uid.uidByte, mfrc522.uid.size)) {
Serial.println();
Serial.println(" – ok !!");
// включить реле
digitalWrite(RELAY_RC522_PIN, RELAY_ON);
delay(4000);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
} else {
Serial.println();
Serial.println(" – false !!");
delay(1000);
}
}
}
}
// поиск считанного uid в списке разрешенных
boolean compare_uid(byte *buffer, byte bufferSize) {
int bytes_ok=0;
for(int i1=0;i1<2;i1++) {
bytes_ok=0;
for (byte i2 = 0; i2 < 4; i2++) {
Serial.print(buffer[i2] < 0x10 ? " 0" : " ");
Serial.print(buffer[i2], HEX);
if(buffer[i2]== uidok[i1][i2]) {
bytes_ok= bytes_ok+1;
}
}
if(bytes_ok==4) {
return true;
}
}
return false;
}
1 ответ
Chromatic Scale Искусственный Интеллект (237871) 3 недели назад
Ошибка в коде связана с неправильным объявлением `#define` для констант `RST_PIN` и `SS_PIN`. В `#define` не используется `=`.

### **Исправленный код:**
```cpp
#include <SPI.h>
#include <MFRC522.h>

// Пин для подключения реле
#define RELAY_RC522_PIN 41

// Уровни для включения/выключения реле
#define RELAY_ON 0
#define RELAY_OFF 1

// Константы подключения контактов SS и RST
#define RST_PIN 5
#define SS_PIN 53

MFRC522 mfrc522(SS_PIN, RST_PIN); // Создание экземпляра MFRC522

// Массив разрешенных UID
byte uidok[][4] = {
{0xE0, 0x2A, 0x87, 0x1B},
{0xD9, 0xFA, 0x90, 0x55}
};

void setup() {
Serial.begin(9600); // Инициализация последовательного порта
SPI.begin(); // Инициализация SPI
mfrc522.PCD_Init(); // Инициализация MFRC522

// Сконфигурировать вывод реле как OUTPUT
pinMode(RELAY_RC522_PIN, OUTPUT);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
}

void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
// Чтение карты
if (mfrc522.PICC_ReadCardSerial()) {
// Показать результат чтения UID и тип метки
Serial.print(F("Card UID:"));
if (compare_uid(mfrc522.uid.uidByte, mfrc522.uid.size)) {
Serial.println();
Serial.println(" – ok !!");
// Включить реле
digitalWrite(RELAY_RC522_PIN, RELAY_ON);
delay(4000);
digitalWrite(RELAY_RC522_PIN, RELAY_OFF);
} else {
Serial.println();
Serial.println(" – false !!");
delay(1000);
}
}
}
}

// Поиск считанного UID в списке разрешенных
boolean compare_uid(byte *buffer, byte bufferSize) {
int bytes_ok = 0;
for (int i1 = 0; i1 < 2; i1++) {
bytes_ok = 0;
for (byte i2 = 0; i2 < 4; i2++) {
Serial.print(buffer[i2] < 0x10 ? " 0" : " ");
Serial.print(buffer[i2], HEX);
if (buffer[i2] == uidok[i1][i2]) {
bytes_ok++;
}
}
if (bytes_ok == 4) {
return true;
}
}
return false;
}
```

### **Что исправлено:**
1. **Удалены `=` в `#define RST_PIN = 5` и `#define SS_PIN = 53`.**
В `#define` нельзя использовать `=`. Должно быть `#define RST_PIN 5`.

2. **Форматирование кода** для лучшей читаемости.

### **Теперь код должен компилироваться без ошибок.**
Владимир ГуньченковУченик (80) 3 недели назад
спасибо большое
Moon LateМастер (2289) 3 недели назад
Опять ЧятЖПТ. Своя голова ваще не работает, да?
Похожие вопросы