Значение переменной не меняется - PullRequest
0 голосов
/ 10 марта 2020

Я пишу этот код для фоторезистора на Arduino. Я должен прикрепить сервоприводы к фоторезистору, чтобы он работал как движущаяся солнечная панель. Однако, запустив код, я отмечаю, что значение переменной pos (которая должна хранить угол, имеющий максимальное количество света) не меняется. Что я могу с этим поделать?

int val1, val2, temp = 1000;  
int pos = 0;  

void setup() {   
  Serial.begin(9600);  
}

void loop() {  
  int sensorValue = analogRead(A0);    
  int val = map(sensorValue, 0, 1023, 0, 100);  
  Serial.println(val);  
  for(int i=0; i<180; i++){  
    val1 = map(sensorValue, 0, 1023, 0, 100);  
    if(val1 <= temp){  
      temp = val1;  
      pos = i;  
    }  
    delay(15);  
  }  
  Serial.println(pos);   
  delay(1000);  
}

1 Ответ

0 голосов
/ 11 марта 2020

Как @datafiddler предположил, что вам нужно объявить аналоговыйЧитать в for для l oop.

Некоторые вещи, которые я хотел бы изменить, чтобы иметь более быстрый и чистый код:

  • изменить инициализированную температуру на 100
  • удалить val2
  • удалить код раньше для l oop
  • более длительная задержка для l oop

здесь отредактированный код:

int val = 0;
int temp = 100;  
int pos = 0;  

void setup() {   
  Serial.begin(9600);  
}

void loop() {  
  //move servo to pos = 0
  for(int i = 0; i < 180; i++){ 
    val = analogRead(A0)
    val = map(val, 0, 1023, 0, 100);  
    if(val <= temp){    //save minimum
      temp = val;  
      pos = i;           //save position
    }  
    //move servo
    delay(100);          //try out what works best with the used servo
  }  
  Serial.println(pos);   
  delay(1000);  
}
...