我试图将从我的光敏电阻中读取的值"lightVal"转换成以下公式:
θ= (260/3) log(23/1023)(1-Lighttval/1023),其中θ是马达采取的步骤。然后我需要让伺服电机旋转θ度。
//locate pins
int PhotoresistorPin = A0;
//Declare global variables
int lightVal;
void setup() {
//Set photoresistor as input
pinMode(PhotoresistorPin, INPUT);
//serial is used to communicate with the board.
//Serial.begin() sets data rate in bits per second
Serial.begin(9600);
}
void loop() {
//read input from photoresistor
//analogueRead function reads the voltage across the photoresistor
lightVal = analogRead(PhotoresistorPin);
//print input from photoresistor
Serial.println(lightVal);
delay(1000);
}我被困在这里了,我现在该怎么办?基本上,每次我尝试写方程时,它都告诉我,“θ不是在这个范围内声明的”。谢谢!
编辑:这不太有意义,但在这里
{ Serial.begin(9600);
for (int i =0; i<=180; i=i+180)
{ float angle = (260/3)log(23/1023,(1-(lightVal/1023);
servo.write(angle);
delay(5);
}
} 发布于 2020-03-22 19:26:26
看看您的lightVal变量。注意,它分为两部分。第一部分是:
int lightVal;它定义了变量。这一行告诉编译器,一个名为lightVal的变量存在,它是什么类型的变量(在本例中是int )。当您得到一个变量“在此作用域中未声明”时,它通常意味着您没有执行此步骤,或者您在另一个作用域中完成了此步骤。
第二部分是在这一行中给变量一个值的地方:
lightVal = analogRead(PhotoresistorPin);这就是你所说的lightVal应该等于什么的地方。你从一个模拟传感器得到一个数字,并将这个值分配给你的变量。
有时您可以在同一行上执行这两个步骤,但是告诉编译器这样的变量存在的第一步是很重要的。在告诉编译器存在变量之前,不能尝试使用变量进行操作。
https://stackoverflow.com/questions/60803543
复制相似问题