Arduino:如何根据光敏电阻的电阻差异移动伺服
Arduino: how to move a servo based on difference of resistance in photoresistors
我正在尝试制作一个跟踪太阳的太阳能电池板,为此我使用了 4 个光敏电阻。我对编码很陌生,但我已经编码了确定光敏电阻电阻的部分(现在我只尝试使用 2)。我需要让伺服系统根据哪个光敏电阻具有更大的电阻来朝某个方向移动。因为即使有光,电阻也不会恒定,所以我还需要有一个余量,只要两个电阻的差值在其中,伺服就不会移动。我尝试将其中一个伺服运动示例复制到我的代码中,但我无法让它工作。
这是我的资料:
const int sensorPin = A0;
const int sensorPin1 = A1;
int sensorValue = 0;
int sensorValue1 = 0;
float Vin = 5;
float Vout = 0;
float Vout1 = 0;
float Rref = 2180;
float R = 0;
float R1 = 0;
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
Serial.begin(9600);
myservo.attach(9);
}
void loop() {
sensorValue = analogRead(sensorPin);
Vout = (Vin * sensorValue) / 1023;
R = Rref * (1 / ((Vin / Vout) - 1));
Serial.print("R: ");
Serial.println(R);
delay(1000);
sensorValue1 = analogRead(sensorPin1);
Vout1 = (Vin * sensorValue1) / 1023;
R1 = Rref * (1 / ((Vin / Vout1) -1));
Serial.print("R1: ");
Serial.println(R1);
delay(1000);
for (R1 > R; pos = 180; pos <= 0; pos += 1) {
myservo.write(pos);
delay(15);
}
for (R1 < R; pos = 0; pos >= 180; pos -= 1) {
myservo.write(pos);
delay(15);
}
}
你的 for 循环是错误的,它有四个参数。我建议将 R1 < R
部分放在 if 条件中的 for 循环周围。现在,您的 for 循环也从 pos = 180
开始,递增,但条件是 pos <= 0
。第二个循环反之亦然。您的 increment/decrements 和条件有误。即使删除了第四个参数,此循环也永远不会执行。
我正在尝试制作一个跟踪太阳的太阳能电池板,为此我使用了 4 个光敏电阻。我对编码很陌生,但我已经编码了确定光敏电阻电阻的部分(现在我只尝试使用 2)。我需要让伺服系统根据哪个光敏电阻具有更大的电阻来朝某个方向移动。因为即使有光,电阻也不会恒定,所以我还需要有一个余量,只要两个电阻的差值在其中,伺服就不会移动。我尝试将其中一个伺服运动示例复制到我的代码中,但我无法让它工作。
这是我的资料:
const int sensorPin = A0;
const int sensorPin1 = A1;
int sensorValue = 0;
int sensorValue1 = 0;
float Vin = 5;
float Vout = 0;
float Vout1 = 0;
float Rref = 2180;
float R = 0;
float R1 = 0;
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
Serial.begin(9600);
myservo.attach(9);
}
void loop() {
sensorValue = analogRead(sensorPin);
Vout = (Vin * sensorValue) / 1023;
R = Rref * (1 / ((Vin / Vout) - 1));
Serial.print("R: ");
Serial.println(R);
delay(1000);
sensorValue1 = analogRead(sensorPin1);
Vout1 = (Vin * sensorValue1) / 1023;
R1 = Rref * (1 / ((Vin / Vout1) -1));
Serial.print("R1: ");
Serial.println(R1);
delay(1000);
for (R1 > R; pos = 180; pos <= 0; pos += 1) {
myservo.write(pos);
delay(15);
}
for (R1 < R; pos = 0; pos >= 180; pos -= 1) {
myservo.write(pos);
delay(15);
}
}
你的 for 循环是错误的,它有四个参数。我建议将 R1 < R
部分放在 if 条件中的 for 循环周围。现在,您的 for 循环也从 pos = 180
开始,递增,但条件是 pos <= 0
。第二个循环反之亦然。您的 increment/decrements 和条件有误。即使删除了第四个参数,此循环也永远不会执行。