認可されたオンライン小売業者:
このレッスンでは、プログラミングを通じてLEDの輝度を徐々に変化させる方法を説明します。脈動する光が呼吸のように見えるため、魔法のような名前である「Breathing LED(呼吸するLED)」と呼びます。この効果をパルス幅変調(PWM)で実現します。
Arduino IDE(バージョン1.6.4以上)
パルス幅変調(PWM)は、デジタル手段でアナログ結果を得るための技術です。デジタル制御を使用して、オンとオフを切り替える信号である矩形波を作成します。このオン・オフのパターンによって、信号がオンになっている時間とオフになっている時間の割合を変化させることで、完全にオン(5V)とオフ(0V)の間の電圧をシミュレートすることができます。オンの時間の長さをパルス幅と呼びます。異なるアナログ値を得るためには、パルス幅を変化させます。
LEDなどにこのオン・オフのパターンを十分に高速に繰り返すと、信号がLEDの明るさを制御する0V~5Vの安定した電圧であるかのように結果が得られます。 ( the PWM description on the official website of Arduino).
トップのオシログラムから、DC電圧出力の振幅は5Vであることがわかります。ただし、実際の電圧出力はPWMを通じて3.75Vだけであるため、高いレベルが周期内の総電圧の75%しか占めないからです。
以下は、PWMの3つの基本的なパラメーターについての紹介です。
OSOYOO Basicボードのほとんどには、ピン番号の横に「PWM」と表示された5つのピンがあります(一部のボードでは「〜」記号になっている場合もあります)。これらのピンはPWMピンです。ここではピン3を使用してLEDを制御します。ハードウェアの接続は以下のフリッツィングダイアグラムの通りです。
LEDをバッテリーや電圧源に直接接続することはできません。まず、LEDには正極と負極があり、逆に接続すると点灯しなくなります。また、LEDは抵抗器と一緒に使用する必要があり、流れる電流量を制限するために「窒息させる」必要があります。そうしないと、LEDが焼き切れる可能性があります!
USBケーブルを使用してOSOYOO Basicボードをコンピュータに接続してください。緑色の電源LED(PWRとラベルされています)が点灯するはずです。Arduino IDEを開いて、OSOYOO Basicボードに対応するボードタイプとポートタイプを選択してください。
次に、 ‘PWM_Control_LED’ の例題スケッチを読み込むか、以下のコードを新しいArduino IDEウィンドウにコピーして、OSOYOO Basicボードにアップロードしてください。数秒待ちます。ボード上のRXとTXのLEDが点滅するはずです。アップロードが成功した場合、ステータスバーに「Done uploading」というメッセージが表示されます。
void setup () { pinMode(3,OUTPUT);// declare pin 3 to be an output } void loop() { for (int a=0; a<=255;a++) //loop from 0 to 255,it controls the increase in PWM brightness { analogWrite(3,a); //set the brightness of pin 3: delay(8); //wait for 8 ms } for (int a=255; a>=0;a--) //loop from 255 down to 0,it control PWM brightness reduction { analogWrite(3,a); // set the brightness of pin 3: delay(8); //wait for 8 ms } delay(800); //wait for 800 ms }
アップロードが終了して数秒後、LEDが徐々に明るくなり、次にゆっくりと暗くなり、まるで呼吸しているかのような動きになるはずです。
DownLoad Url osoyoo.com
You must be logged in to post a comment.
try this Sketch (adds the built-in LED in case someone doesn’t get the breadboard hookup correct):
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT); // declare pin 3 to be an output
pinMode(LED_BUILTIN, OUTPUT); // pin 13 on an Uno R3
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN, HIGH); // LED on
for (int a=0; a=0;a–) //loop from 223 down to 0, it control PWM brightness reduction
{
analogWrite(3,a); // set the brightness of pin 3:
delay(4); // wait for 4 ms
}
delay(300); //wait for 300 ms
}
hmm.. some of the code vanished due to the use of (less than) ” (greater than) chars. this message will test
try this instead (make the substitutions for .lt. and .gt. chars below):
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT); // declare pin 3 to be an output
pinMode(LED_BUILTIN, OUTPUT); // pin 13 on an Uno R3
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN, HIGH); // LED on
for (int a=0; a.lt.=223;a++) //loop from 0 to 223,it controls the increase in PWM brightness (max 255)
{
analogWrite(3,a); //set the brightness of pin 3:
delay(4); //wait for 4 ms
}
digitalWrite(LED_BUILTIN, LOW); // LED off
for (int a=223; a.gt.=0;a–) //loop from 223 down to 0, it controls PWM brightness reduction
{
analogWrite(3,a); // set the brightness of pin 3:
delay(4); //wait for 4 ms
}
delay(300); //wait for 300 ms
}