[英]Arduino: How to move a servo without knowing the exact location the servo needs to move to
[英]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循環錯了,它有四個arguments。 我建議在 if 條件下將R1 < R
部分放在 for 循環周圍。 現在,您的 for 循環也從pos = 180
開始,遞增,但條件是pos <= 0
。 第二個循環反之亦然。 您的增量/減量和條件是錯誤的。 這個循環永遠不會執行,即使第四個參數被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.