Arduino 如何将两个Adruino草图合并为一个
我正在做一个项目,使用传感器(LDR和超声波)和使用Arduino软件的LED。我已经设法让灯泡工作,但是我想知道如何将两个不同的Arduino项目合并为一个。以下是两个不同的程序 方案1:Arduino 如何将两个Adruino草图合并为一个,arduino,Arduino,我正在做一个项目,使用传感器(LDR和超声波)和使用Arduino软件的LED。我已经设法让灯泡工作,但是我想知道如何将两个不同的Arduino项目合并为一个。以下是两个不同的程序 方案1: int ldr=A0;//Set A0(Analog Input) for LDR. int value=0; void setup() { Serial.begin(9600); pinMode(3,OUTPUT); } void loop() { value=analogRead(ldr);//Rea
int ldr=A0;//Set A0(Analog Input) for LDR.
int value=0;
void setup() {
Serial.begin(9600);
pinMode(3,OUTPUT);
}
void loop() {
value=analogRead(ldr);//Reads the Value of LDR(light).
Serial.println("LDR value is :");//Prints the value of LDR to Serial Monitor.
Serial.println(value);
if(value<300)
{
digitalWrite(3,HIGH);//Makes the LED glow in Dark.
}
else
{
digitalWrite(3,LOW);//Turns the LED OFF in Light.
}
}
int ldr=A0//为LDR设置A0(模拟输入)。
int值=0;
无效设置(){
Serial.begin(9600);
pinMode(3,输出);
}
void循环(){
value=analogRead(ldr);//读取ldr(灯光)的值。
Serial.println(“LDR值为:”);//将LDR值打印到串行监视器。
Serial.println(值);
如果(值您可以使用计时器,每500毫秒运行一次循环2
第一个循环正常运行,但第二个循环每500毫秒运行一次
#define trigPin 13
#define echoPin 12
#define led 11
#define DELAY 500
int ldr = A0; //Set A0(Analog Input) for LDR.
int value = 0;
long timer = millis(); // a timer for timing 500 milliseconds
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
value = analogRead(ldr); //Reads the Value of LDR(light).
Serial.println("LDR value is :");//Prints the value of LDR to Serial Monitor.
Serial.println(value);
if (value < 300)
{
digitalWrite(3, HIGH); //Makes the LED glow in Dark.
}
else
{
digitalWrite(3, LOW); //Turns the LED OFF in Light.
}
if (millis() - timer >= DELAY ) {
timer = millis();//reset timer
loop2();
}
}
void loop2() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 10)
{ digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
Serial.print(distance);
Serial.println(" cm");
}
#定义trigPin 13
#定义echoPin 12
#定义led 11
#定义延迟500
int ldr=A0;//为ldr设置A0(模拟输入)。
int值=0;
long timer=millis();//计时500毫秒的计时器
无效设置(){
Serial.begin(9600);
pinMode(3,输出);
引脚模式(trigPin,输出);
pinMode(echoPin,输入);
引脚模式(led,输出);
}
void循环(){
value=analogRead(ldr);//读取ldr(灯光)的值。
Serial.println(“LDR值为:”);//将LDR值打印到串行监视器。
Serial.println(值);
如果(值<300)
{
digitalWrite(3,高);//使LED在黑暗中发光。
}
其他的
{
digitalWrite(3,低);//在灯光下关闭LED。
}
如果(毫秒()-计时器>=延迟){
计时器=毫秒();//重置计时器
loop2();
}
}
void loop2(){
长时间、远距离;
数字写入(trigPin,低电平);
延迟微秒(2);
数字写入(trigPin,高);
延迟微秒(10);
数字写入(trigPin,低电平);
持续时间=脉冲强度(echoPin,高);
距离=(持续时间/2)/29.1;
如果(距离<10)
{数字写入(led,高电平);
}
否则{
数字写入(led,低电平);
}
串行打印(距离);
序列号。打印号(“cm”);
}
如何组合它们完全取决于最终结果是什么,这一点还不清楚。但您可能只需要将每个循环()函数拆分为另一个函数,并用一个名称说明它的作用,然后从循环()调用它们
,可能只要经过适当的延迟,就只调用其中一个。您对原始代码做了什么,这是如何回答问题的?没有上下文的代码通常不是一个好的答案。更具体地说,仅仅将两个循环()
卡在一起似乎是不对的。现在您延迟(500)
在每个模拟读取(ldr)
和相应的数字写入(3,…)
之间,而该循环最初的跨度尽可能快,没有延迟。这就是为什么我说需要考虑将它们结合起来。感谢您的关注,我编辑了我的答案
#define trigPin 13
#define echoPin 12
#define led 11
#define DELAY 500
int ldr = A0; //Set A0(Analog Input) for LDR.
int value = 0;
long timer = millis(); // a timer for timing 500 milliseconds
void setup() {
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
value = analogRead(ldr); //Reads the Value of LDR(light).
Serial.println("LDR value is :");//Prints the value of LDR to Serial Monitor.
Serial.println(value);
if (value < 300)
{
digitalWrite(3, HIGH); //Makes the LED glow in Dark.
}
else
{
digitalWrite(3, LOW); //Turns the LED OFF in Light.
}
if (millis() - timer >= DELAY ) {
timer = millis();//reset timer
loop2();
}
}
void loop2() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 10)
{ digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
Serial.print(distance);
Serial.println(" cm");
}