我有个问题。我正在和Arduino一起工作,但是我对C++不太在行,我犯了一个错误。我负责主动安全系统。我曾经使用运动传感器,RFID,嵌入式时钟和wifi模型。但我说,我犯了个错误,你能帮我吗?
#include <SoftwareSerial.h>
#include <MFRC522.h>
#include <SPI.h>
#include <virtuabotixRTC.h>
String agAdi = "";
String agSifresi = "";
int rxPin = 3;
int txPin = 5;
int RST_PIN = 9;
int SS_PIN = 10;
int CLK_PIN = 6;
int DAT_PIN = 7;
int PST_PIN = 4;
int buzzerPin = 2;
int pirPin = 8;
int hareket;
int tarih;
int saat;
String ip = "";
MFRC522 rfid(SS_PIN, RST_PIN);
byte ID[4] = {47, 219, 106, 81};
byte okunandeger[4];
virtuabotixRTC myRTC(CLK_PIN, DAT_PIN, RST_PIN);
SoftwareSerial esp(rxPin, txPin);
void setup() {
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
myRTC.setDS1302Time(00, 57, 22, 7, 23, 1, 2022);
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
Serial.println("Started");
esp.begin(115200);
esp.println("AT");
Serial.println("AT Yollandı");
while (!esp.find("OK")) {
esp.println("AT");
Serial.println("ESP8266 Bulunamadı.");
}
Serial.println("OK Komutu Alındı");
esp.println("AT+CWMODE=1");
while (!esp.find("OK")) {
esp.println("AT+CWMODE=1");
Serial.println("Ayar Yapılıyor....");
}
Serial.println("Client olarak ayarlandı");
Serial.println("Aga Baglaniliyor...");
esp.println("AT+CWJAP=\"" + agAdi + "\",\"" + agSifresi + "\"");
while (!esp.find("OK"))
;
Serial.println("Aga Baglandi.");
delay(1000);
}
void loop() {
saatModulu();
rfidGiris();
byte okunankart[4] = rfid.uid.uidByte[];
int saat = String(myRTC.hours + ":" + myRTC.minutes + ":" + myRTC.seconds);
int tarih = String(myRTC.dayofmonth + ":" + myRTC.month + ":" + myRTC.year);
espFonk();
rfidCikis();
okunankart = rfid.uid.uidByte[];
int saat = String(myRTC.hours + ":" + myRTC.minutes + ":" + myRTC.seconds);
int tarih = String(myRTC.dayofmonth + ":" + myRTC.month + ":" + myRTC.year);
espFonk();
}
void espFonk() {
esp.println("AT+CIPSTART=\"TCP\",\"" + ip + "\",80");
if (esp.find("Error")) {
Serial.println("AT+CIPSTART Error");
}
String veri = "GET https://api.thingspeak.com/update?api_key=";
veri += "&field1=";
veri += String(okunankart);
veri += "&field2=";
veri += String(saat);
veri += "&field3=";
veri += String(tarih);
veri += "\r\n\r\n";
esp.print("AT+CIPSEND=");
esp.println(veri.length() + 2);
delay(2000);
if (esp.find(">")) {
esp.print(veri);
Serial.println(veri);
Serial.println("Veri gonderildi.");
delay(1000);
}
Serial.println("Baglantı Kapatildi.");
esp.println("AT+CIPCLOSE");
delay(1000);
}
void rfidGiris() {
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
if (rfid.uid.uidByte[0] == ID[0] && rfid.uid.uidByte[1] == ID[1] &&
rfid.uid.uidByte[2] == ID[2] && rfid.uid.uidByte[3] == ID[3]) {
Serial.println("Güvenlik Sistemi Aktif!");
ekranaYazdir();
hareketSensor();
}
else {
Serial.print("Yetkisiz Kart");
ekranaYazdir();
melodi(500);
delay(500);
melodi(500);
}
rfid.PICC_HaltA();
}
void ekranaYazdir() {
Serial.print("ID Numarası : ");
for (int sayac = 0; sayac < 4; sayac++) {
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
}
void saatModulu() {
myRTC.updateTime();
Serial.print("Tarih / Saat: ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.print(myRTC.seconds);
delay(1000);
}
void hareketSensor() {
hareket = digitalRead(pirPin);
if (Hareket == HIGH) {
melodi(5000);
}
}
int melodi(int dly) {
tone(buzzerPin, 832);
delay(dly);
noTone(buzzerPin);
delay(dly);
}
void rfidCikis() {
if (!rfid.PICC_IsNewCardPresent()) return;
if (!rfid.PICC_ReadCardSerial()) return;
if (rfid.uid.uidByte[0] == ID[0] && rfid.uid.uidByte[1] == ID[1] &&
rfid.uid.uidByte[2] == ID[2] && rfid.uid.uidByte[3] == ID[3]) {
Serial.println("Güvenlik Sistemi Deaktif!");
ekranaYazdir();
hareket = LOW;
}
else {
Serial.print("Yetkisiz Kart");
ekranaYazdir();
melodi(500);
delay(500);
melodi(500);
}
rfid.PICC_HaltA();
}这是错误:main.ino:166:8:注意:建议的替代方案:'hareket‘退出状态1,预期主表达式在’]令牌之前
和Arduino IDE照明
okunankart = rfid.uid.uidByte[];发布于 2022-01-23 21:45:34
对于启动程序,数组没有赋值运算符。
okunankart = rfid.uid.uidByte[];无论如何,带空括号的表达式是错误的。
此声明中的初始化程序。
byte okunankart[4] = rfid.uid.uidByte[];也是错的。
您需要在另一个数组中从一个数组中复制元素,例如使用标准算法std::copy或C函数memcpy。
https://stackoverflow.com/questions/70826820
复制相似问题