当柔性传感器弯曲时,我想让LED灯条逐渐亮起。但我希望当柔性传感器为45度时,LED灯条开始亮起。 我希望LED灯带在45度之前关闭。 这是我在Arduino的代码。
const int ledPin = 3; //pin 3 has PWM funtion
const int flexPin = A0; //pin A0 to read analog input
int degree; //save analog value
int sensor;
void setup(){
pinMode(ledPin, OUTPUT); //Set pin 3 as 'output'
Serial.begin(9600); //Begin serial communication
}
void loop(){
sensor = analogRead(flexPin); //Read and save analog value from potentiometer
degree = map(sensor, 460, 850, 45, 90);
Serial.print("analog input: ");
Serial.print(sensor,DEC);
Serial.print(" degrees: ");
Serial.println(degree,DEC);
Serial.print(" ---------------------------------- ");
analogWrite(ledPin, degree); //Send PWM value to led
delay(50); //Small delay
}
但是这没用,所以我尝试了这个:
const int ledPin = 3; //pin 3 has PWM funtion
const int flexPin = A0; //pin A0 to read analog input
int degree; //save analog value
int sensor;
void setup(){
pinMode(ledPin, OUTPUT); //Set pin 3 as 'output'
Serial.begin(9600); //Begin serial communication
}
void loop(){
sensor = analogRead(flexPin); //Read and save analog value from potentiometer
if(degree<45){
(sensor = 0);
}
degree = map(sensor, 460, 850, 0, 90);
Serial.print("analog input: ");
Serial.print(sensor,DEC);
Serial.print(" degrees: ");
Serial.println(degree,DEC);
Serial.print(" ---------------------------------- ");
analogWrite(ledPin, degree); //Send PWM value to led
delay(50); //Small delay
}
这并没有奏效。它们从0度开始点亮,并在接近90度时获得更多。但我希望它在45度之前关闭,开始以45度点亮,并在接近90度时获得更多。如果你能帮助我,我将非常感激。我是如此疲惫,试着去哪里。
答案 0 :(得分:3)
一个问题是,当地图功能期望值在460和850范围内时,您将传感器设置为零。当低于45度时,可能有助于将默认传感器值更改为预期的最低值范围(460.)
你也可以删除你的if条件并稍后在程序中将其移动:
if (degree < 45) {
digitalWrite(ledPin, LOW);
}
else {
analogWrite(ledPin, degree);
}
值得注意的是,模拟读取功能使用0到255之间的输入来确定引脚的占空比。话虽如此,您可以创建另一个变量并使用它来映射或以其他方式更改度数值,以便更好地利用此范围。即:
int freq = map(degree, 0, 90, 0, 255);