私はプロジェクトのために Arduino をプログラムする必要があり、LED の色を変えるものを追加したいと思いました。LED には、色が変化する一種の循環があり、約 40 秒かかります。ただし、LED を点灯させるバット センサーは、全体の時間を記録し、1 秒間に数回 LED に点灯するように指示します。LED は色を変える時間がなく、最初の色だけを維持します。
これを修正する方法がわかりません。LEDに遅延か何かを与えようとしていましたが、どうやらそれは間違っていました。これまでのコードは次のとおりです。
//Pin which triggers ultrasonic sound.
const int pingPin = 13;
//Pin which delivers time to receive echo using pulseIn().
int inPin = 12;
//Range in cm which is considered safe to enter, anything
//coming within less than 5 cm triggers the red LED.
int safeZone = 10;
//LED pin numbers
int redLed = 3, greenLed = 5;
void setup() {
//Initialize serial communication
Serial.begin(9600);
//Initializing the pin states
pinMode(pingPin, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop()
{
//Raw duration in milliseconds, cm is the
//converted amount into a distance.
long duration, cm;
//Sending the signal, starting with LOW for a clean signal 2 staat voor reactie.
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
//Setting up the input pin, and receiving the duration in
//microseconds for the sound to bounce off the object in front.
pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH); //Documentation for pulseIn():
//http://www.arduino.cc/en/Reference/PulseIn
//Convert the time into a distance
cm = microsecondsToCentimeters(duration);
//Printing the current readings to the serial display
Serial.print(cm);
Serial.print("cm");
Serial.println();
//If het is groter dan 10 dan gaat het lichtje uit
//else het is binnen bepaalde cm dan gaat het aan van 0 naar 255.
if(cm>10)
{
analogWrite(redLed, 0);
}
else{
analogWrite(redLed, map(cm,0,10,255,0));
dela
}
if(cm>5)
{
analogWrite(greenLed, 0);
}
else{
analogWrite(greenLed, map(cm,0,5,255,0));
}
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}
しかし、それにはまだある種の遅延が必要だと思います。私が使用しているセンサーが何と呼ばれているかはわかりませんが、センサーを備えた2つのラウンドがあり、1つは送信し、もう1つは受信し、音を受信するのにかかる時間を測定し、私のコードではそれをcmに変換します.
私はこの言語の知識が非常に乏しいので、私の問題が何であるかを理解して助けてくれることを願っています.