首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >伺服电机

伺服电机
EN

Stack Overflow用户
提问于 2020-03-22 18:45:53
回答 1查看 164关注 0票数 0

我试图将从我的光敏电阻中读取的值"lightVal"转换成以下公式:

θ= (260/3) log(23/1023)(1-Lighttval/1023),其中θ是马达采取的步骤。然后我需要让伺服电机旋转θ度。

代码语言:javascript
复制
//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);

}

我被困在这里了,我现在该怎么办?基本上,每次我尝试写方程时,它都告诉我,“θ不是在这个范围内声明的”。谢谢!

编辑:这不太有意义,但在这里

代码语言:javascript
复制
{ 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); 
}
 } 
EN

回答 1

Stack Overflow用户

发布于 2020-03-22 19:26:26

看看您的lightVal变量。注意,它分为两部分。第一部分是:

代码语言:javascript
复制
int lightVal;

它定义了变量。这一行告诉编译器,一个名为lightVal的变量存在,它是什么类型的变量(在本例中是int )。当您得到一个变量“在此作用域中未声明”时,它通常意味着您没有执行此步骤,或者您在另一个作用域中完成了此步骤。

第二部分是在这一行中给变量一个值的地方:

代码语言:javascript
复制
lightVal = analogRead(PhotoresistorPin);

这就是你所说的lightVal应该等于什么的地方。你从一个模拟传感器得到一个数字,并将这个值分配给你的变量。

有时您可以在同一行上执行这两个步骤,但是告诉编译器这样的变量存在的第一步是很重要的。在告诉编译器存在变量之前,不能尝试使用变量进行操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60803543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档