Arduino LED (Light Emitting Diode)
ไดโอดเปล่งแสดง (LED) เมื่อมีกระแสไฟไหลผ่านจะเกิดแสงที่เห็นได้ขึ้น ซึ่งหลอด LED มีทั้ง “สีเดียว” และแบบ LED RGB ซึ่งหลอดภายในหลอดจะประกอบไปด้วย 3 แม่สี คือ แดง, เขียว และน้ำเงิน แต่ในตัวอย่างจะใช้ LED แบบสีแดงสีเดียว
ด้วยที่ LED ไม่สามารถรับแรงดัน 5V ได้นาน ๆ ทำให้เราต้องต่อ “220 ohm” เข้าไปลดแรงดันลง เรามาทดลองเขียนโค้ดกัน
int ledPin = 9;void setup() {
pinMode(ledPin, OUTPUT);
}void loop() {
digitalWrite(ledPin, !digitalRead(ledPin));
delay(1000);
}
จากโค้ดเราได้ตั้งโหมดให้เป็น output ให้กับ Digital pin 9 และเมื่อเข้ามาใน loop ก็จะมีการสั่งให้ค่า true, false สลับกันไปเลื่อย ๆ ทุก ๆ 1 วินาที โดยสั่งผ่าน digitalWrite เนื่องจาก PIN 9 เป็นแบบ digital
มาลองใส่ 10k ohm แบบ “ต้านทานปรับค่า” ได้กัน เพื่อที่จะ “หลี่แสงและเพิ่มความสว่างแสง” ที่หลอด LED
หลังจากที่ต่อเสร็จแล้ว เรามาอ่านค่าจากต้านทานปรับค่าได้กัน
int ledPin = 9;
int analogPin = A0;void setup() {
Serial.begin(9600); pinMode(ledPin, OUTPUT);
}void loop() {
int val = analogRead(analogPin);
int output = map(val, 0, 1023, 0, 255); Serial.println(output);
}
เมื่อเริ่มหมุนจะเห็นได้ว่าค่าจะวิ่งตั้งแต่ 0–255 ตามที่เราได้ map เอาไว้จากค่า 0–1023 เดิม หากค่าเปลี่ยนแปลงตามที่ได้ปรับแล้ว ให้ทำการเขียนโค้ดเพิ่มเติมดังตัวอย่างด้านล่าง
int ledPin = 9;
int analogPin = A0;void setup() {
Serial.begin(9600); pinMode(ledPin, OUTPUT);
}void loop() {
int val = analogRead(analogPin);
int output = map(val, 0, 1023, 0, 255); analogWrite(ledPin, output);
}
จะเห็นได้ว่า LED ดับ หลี่ สว่าง ตามที่เราปรับค่าจากตัวต้านทาน 10k ohm
** สิ่งที่สำคัญคือ “จะต้องมีต้านทานคงที่” เอาไว้ 1 ตัว ดังตัวอย่างมี 220 ohm ไว้ดรอปแรงดันในขา ledPin หนึ่งตัว
** ledPin ไม่ใช่จะเสียบช่อง digital ไหนก็ได้ แต่จะต้องเสียบเข้าที่ ~x เท่านั้น เพื่อให้สามารถปรับค่าตาม analogWrite ที่ส่งเข้ามาที่ digital pin ได้
อ่านเพิ่มเติม