簡體   English   中英

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循環錯了,它有四個arguments。 我建議在 if 條件下將R1 < R部分放在 for 循環周圍。 現在,您的 for 循環也從pos = 180開始,遞增,但條件是pos <= 0 第二個循環反之亦然。 您的增量/減量和條件是錯誤的。 這個循環永遠不會執行,即使第四個參數被刪除。

循環: https://www.programiz.com/c-programming/c-for-loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM