2016-09-26 5 views
2

フレックスセンサーが曲がると、LEDストリップが徐々に点灯するようにしたい。しかし、私は、フレックスセンサーが45度のときに、LEDストリップの点灯を開始したい。 そして、私はLEDストリップが45度より前に消えたい。 ここはArduinoにある私のコードです。オールデイノフレックスセンサーで45度の照明を始めるには?

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 

} 

そして、これは同様に働いていなかった。

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 

} 

が、これは働いていなかったので、私はこの1つを試してみました。彼らは0度から点灯を開始し、90度に近づくにつれてより多くを取得します。しかし、私はそれが45度の前に外れていて、45度で点灯し始め、90度に近づくにつれてより多くを得ることを望みます。あなたが私を助けることができれば、私はとても感謝しています。私は疲れていてどこにもいなくなってしまった。

答えて

3

マップ機能が460と850の範囲の値を期待しているときにセンサーをゼロに設定することが1つの問題です。デフォルトのセンサー値を変更すると、予想レンジ(460)

あなたはまた、あなたの場合は条件を削除し、そのようなプログラムで、後でそれをシフトすることができます:

if (degree < 45) { 
    digitalWrite(ledPin, LOW); 
} 
else { 
    analogWrite(ledPin, degree); 
} 

また、アナログリード機能が0の間で入力に使用することは注目に値するかもしれピンのデューティ・サイクルを決定するために255に設定します。それで、あなたは別の変数を作成し、この変数を使って次数を変更してこの範囲をよりうまく利用できるようにすることができます。すなわち:

int freq = map(degree, 0, 90, 0, 255); 
関連する問題