Как решить этот код? Солнечная проблема отслеживания - PullRequest
0 голосов
/ 17 марта 2020

Я занимаюсь разработкой своего проекта по совершенствованию системы слежения за солнечными батареями для солнечных панелей с использованием Arduino Uno, используя два микро сервопривода для двойной системы, одну для горизонтальной и одну для вертикальной, на основе фоторезиторов, излучающих источник света. Однако во время контролируемого теста сервоприводы, кажется, реагируют всего за несколько секунд, а затем перестают отвечать на все запросы, заставляя меня перезапускать Arduino, и, кажется, зависают, когда сервоприводы находятся под нагрузкой. Если у вас есть какие-либо советы или решения для этой проблемы, которые застряли на некоторое время, я был бы признателен. вот картинка моей схемы на TinkerCad и код Большое спасибо. :)

ОБНОВЛЕНИЕ: Привет, может кто-нибудь, пожалуйста, помогите мне с этой проблемой, проблема застряла с этой проблемой в течение более 3 недель, что очень расстраивает меня, потому что у меня есть крайний срок на моем назначении очень скоро и хотел бы улучшить в других областях, но не может продолжаться без устранения этой проблемы. Я уже проверил код с помощью отладчика, но у меня нет такого опыта для решения этой проблемы. Я был бы признателен, если кто-нибудь может дать мне идею или поддержать меня с этой проблемой большое спасибо.

Код

 #include <Servo.h>   

Servo sg901;
Servo sg902;

  void setup() 
  { 
  Serial.begin(9600);
  sg901.attach(8);  // attaches the servo on pin 8 to the sg901
  sg902.attach(7);  // attaches the servo on pin 7 to the sg902
  delay(2000); // a 2 seconds delay while we position the solar panel
}  

void loop() 
{ 
  int lightValue = analogRead(A0);
  int lightValue1 = analogRead(A1);
  int lightValue2= analogRead(A2); 
  int lightValue3= analogRead(A3); 

  Serial.println(lightValue,lightValue1);
  if (lightValue>lightValue1)
  {
    lightValue= map (lightValue,0,1023,90,180);
    Serial.print(lightValue);
    sg901.write(lightValue);
  }
  if (lightValue1>lightValue)
  {
    lightValue1= map (lightValue1,0,1023,90,180);
    Serial.print(lightValue1);
    sg901.write(lightValue1);
 }
  Serial.print(lightValue2,lightValue1);
      if (lightValue2>lightValue1)
  { 
    lightValue2= map (lightValue2,0,1023,90,180);
    Serial.print(lightValue2);
    sg902.write(lightValue2);
  }
  Serial.print(lightValue3,lightValue2);
    if (lightValue3>lightValue2)

    lightValue= map(lightValue3,0,1023,90,180);
    Serial.print(lightValue3);
    sg902.write (lightValue3); 


   Serial.println(lightValue);
   Serial.println(lightValue1);
   Serial.println(lightValue2);
   Serial.println(lightValue3);

Схема введите описание изображения здесь

1 Ответ

1 голос
/ 26 марта 2020

Вы можете попробовать использовать вложенный оператор if с задержками в нем. Это может просто сработать.

...