Security 需要在基于Arduino的安全系统的代码方面的专家

Security 需要在基于Arduino的安全系统的代码方面的专家,security,arduino,Security,Arduino,这是我的代码,到目前为止,该系统包含一个SD卡读卡器、两个蜂鸣器、两个LED、一个PIR运动传感器和一个红外接收器 我收到的错误消息如下: 1) 最终生成:100:错误:重新定义“int val” 2) 最终生成:5:错误:“int val”以前在此处定义 3) 最终生成:101:错误:在“if”之前应为非限定id 4) 重新定义“int val” //PIR传感器 int-ledPin=7;//选择LED的引脚 int inputPin=2;//选择输入引脚(用于PIR传感器) int pir

这是我的代码,到目前为止,该系统包含一个SD卡读卡器、两个蜂鸣器、两个LED、一个PIR运动传感器和一个红外接收器

我收到的错误消息如下:

1) 最终生成:100:错误:重新定义“int val”

2) 最终生成:5:错误:“int val”以前在此处定义

3) 最终生成:101:错误:在“if”之前应为非限定id

4) 重新定义“int val”

//PIR传感器
int-ledPin=7;//选择LED的引脚
int inputPin=2;//选择输入引脚(用于PIR传感器)
int pirState=低;//我们开始,假设没有检测到运动
int val=0;//用于读取引脚状态的变量
int pinSpeaker=10//在PWM引脚上设置扬声器(数字9、10或11)
//红外传感器
int-dtect=3;
int-sense=A0;
int buzzpin=9;
int-lightPin=6;
#包括
#包括
文件myFile;
无效设置(){
//PIR传感器
pinMode(ledPin,输出);//将LED声明为输出
pinMode(inputPin,INPUT);//将传感器声明为输入
pinMode(pinSpeaker,输出);
Serial.begin(9600);
//红外传感器
pinMode(dtect,输出);
引脚模式(lightPin,输出);
pinMode(感测、输入);
pinMode(buzzpin,输出);
数字写入(dtect,高);
Serial.begin(9600);
而(!串行){
;//等待串行端口连接。
}
串行打印(“初始化SD卡…”);
如果(!SD.begin(4)){
Serial.println(“初始化失败!”);
返回;
}
Serial.println(“初始化完成”);
//打开文件。请注意,一次只能打开一个文件,
//所以在打开另一个之前,你必须先关闭这个。
myFile=SD.open(“test.txt”,FILE\u WRITE);
//如果文件打开正常,请写入:
如果(我的文件){
Serial.print(“写入test.txt…”);
println(“测试1、2、3”);
//关闭文件:
myFile.close();
Serial.println(“完成”);
}否则{
//如果文件未打开,请打印错误:
Serial.println(“error opening test.txt”);
}
//重新打开文件以进行读取:
myFile=SD.open(“test.txt”);
如果(我的文件){
Serial.println(“test.txt:”);
//从文件中读取,直到文件中没有其他内容:
while(myFile.available()){
Serial.write(myFile.read());
}
//关闭文件:
myFile.close();
}否则{
//如果文件未打开,请打印错误:
Serial.println(“error opening test.txt”);
}
}
void循环(){
//红外传感器
int val=模拟读取(感测);
序列号println(val);
如果(val>=800)
{
数字写入(lightPin,高);
巴斯(50);
}
否则{
数字写入(lightPin,低电平);
}
}
无效嗡嗡声(未签名字符时间)
{
模拟写入(buzzpin,170);
延迟(时间);
模拟写入(buzzpin,0);
延迟(时间);
}
//PIR传感器
int val=数字读取(inputPin);//读取输入值
如果(val==高){//检查输入是否高
数码写入(LED引脚,高);//打开LED
playTone(300160);
延迟(100);
如果(pirState==低){
//我们刚开机
Serial.println(“检测到运动!”);
//我们只想在输出上打印更改,而不是状态
皮尔斯塔=高;
}
}否则{
数码写入(LED引脚,低);//关闭LED
playTone(0,0);
延迟(300);
如果(pirState==高){
//我们刚下班
Serial.println(“运动结束!”);
//我们只想在输出上打印更改,而不是状态
皮尔斯塔=低;
}
}
}
//持续时间(毫秒),频率(赫兹)
无效播放音(长持续时间,整数频率){
持续时间*=1000;
整数周期=(1.0/频率)*1000000;
长时间运行时间=0;
while(经过的时间<持续时间){
数字写入(pinSpeaker,高电平);
延迟微秒(周期/2);
数码写入(pinSpeaker,低音);
延迟微秒(周期/2);
已用时间+=(周期);
}
}

第一个
val
定义是不必要的

int val = 0;                    // variable for reading the pin status
您正在
循环()的开始处重新定义
val

更新: 我想这就是你想要的。您的问题是添加的
buzz
函数是在
loop
函数中定义的,您丢失了一些父项
{}
。我刚把它放出来,加入了
循环
代码

//PIR sensor
int ledPin = 7;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int pinSpeaker = 10;  //Set up a speaker on a PWM pin (digital 9, 10, or 11)

//IR_Sensor
int dtect=3;
int sense=A0;
int buzzpin=9;
int lightPin=6;
#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
  //PIR sensor
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);

  //IR sensor
  pinMode(dtect,OUTPUT);
  pinMode(lightPin,OUTPUT);
  pinMode(sense,INPUT);
  pinMode(buzzpin,OUTPUT);
  digitalWrite(dtect,HIGH);
  Serial.begin(9600);

  while (!Serial) {
    ; // wait for serial port to connect.
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop(){
  //IR sensor
  int val=analogRead(sense);
  Serial.println(val);
  if(val>=800)
  {
    digitalWrite(lightPin, HIGH);
    buzz(50);
  }
  else {
    digitalWrite(lightPin, LOW);
  }

  //PIR sensor
 int val = digitalRead(inputPin);  // read input value
 if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    playTone(300, 160);
    delay(100);


    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    playTone(0, 0);
    delay(300);    
    if (pirState == HIGH){
      // we have just turned off
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

void buzz(unsigned char time)
  {
    analogWrite(buzzpin,170);
    delay(time);
    analogWrite(buzzpin,0);
    delay(time);
  }

// duration in mSecs, frequency in hertz
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }

}
//PIR传感器
int-ledPin=7;//选择LED的引脚
int inputPin=2;//选择输入引脚(用于PIR传感器)
int pirState=低;//我们开始,假设没有检测到运动
int pinSpeaker=10//在PWM引脚上设置扬声器(数字9、10或11)
//红外传感器
int-dtect=3;
int-sense=A0;
int buzzpin=9;
int-lightPin=6;
#包括
#包括
文件myFile;
无效设置(){
//PIR传感器
pinMode(ledPin,输出);//将LED声明为输出
pinMode(inputPin,INPUT);//将传感器声明为输入
pinMode(pinSpeaker,输出);
Serial.begin(9600);
//红外传感器
pinMode(dtect,输出);
引脚模式(lightPin,输出);
pinMode(感测、输入);
pinMode(buzzpin,输出);
数字写入(dtect,高);
Serial.begin(9600);
而(!串行){
;//等待串行端口连接。
}
串行打印(“初始化SD卡…”);
如果(!SD.begin(4)){
Serial.println(“初始化失败!”);
返回;
}
Serial.println(“初始化完成”);
//打开文件。请注意,一次只能打开一个文件,
//所以在打开另一个之前,你必须先关闭这个。
myFile=SD.open(“test.txt”,FILE\u WRITE);
//如果文件打开正常,请写入:
如果(我的文件){
Serial.print(“写入test.txt…”);
println(“测试1、2、3”);
//关闭文件:
myFile.close();
Serial.println(“完成”);
}否则{
//如果文件未打开,请打印错误:
Serial.println(“error opening test.txt”);
}
//重新打开文件以进行读取:
myFile=SD.open(“test.txt”);
如果(我的文件){
Serial.println(“test.txt:”);
//从文件中读取,直到文件中没有其他内容:
while(myFile.available()){
Serial.write(myFile.read())