บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ เมษายน 22, 2016, 02:52:27 PM

หัวข้อ: งานครั้งที่ 4 เขียนโปรแกรมปรับค่าความสว่างของ LED (PWM)
เริ่มหัวข้อโดย: admin ที่ เมษายน 22, 2016, 02:52:27 PM
เขียนโปรแกรมปรับค่าความสว่างของ  LED (PWM)
ฟังก์ชั่นที่ใช้งาน
-analogWrite() http://arduino.cc/en/Reference/AnalogWrite (http://arduino.cc/en/Reference/AnalogWrite)

Analog output
analogWrite(pin, value) enables software PWM on the given pin. PWM may be used on pins 0 to 16. Call analogWrite(pin, 0) to disable PWM on the pin. value may be in range from 0 to PWMRANGE, which is equal to 1023 by default. PWM range may be changed by calling analogWriteRange(new_range).
PWM frequency is 1kHz by default. Call analogWriteFreq(new_frequency) to change the frequency.
Reference http://esp8266.github.io/Arduino/versions/2.0.0/doc/reference.html (http://esp8266.github.io/Arduino/versions/2.0.0/doc/reference.html)

ผลของ PWM กับความสว่าง
(http://www.mikroe.com/img/publication/pic-books/pic-microcontrollers/chapter/05/fig5-4.gif)

โจทย์การทดลอง
-เขียนโปรแกรมควบคุมความสว่างของ LED 4 ตัว
-รูปแบบเป็นไฟวิ่งและระดับความสว่างในแต่ละจังหวะและรูปแบบที่แตกต่างกัน
-โปรแกรมรายละเอียดพิเศษรายกลุ่ม (แจ้งให้ทราบเมื่อถึงชั่วโมงเรียน)

วงจรที่ใช้ทดลอง
กรณีใช้บอร์ดรุ่น NodeMCU
(http://www.praphas.com/PhotoForum/iot/Lab-02-4LED/1.png)
กรณีใช้บอร์ดรุ่น WeMos D1 mini
(http://www.praphas.com/PhotoForum/iot/Lab-02-4LED/2.png)


ตัวอย่างโปรแกรม
โค๊ด: [Select]
#define LED1 D2
#define LED2 D3
void setup() 
{
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT); 
}
void loop()                     
{
  for(int x=0;x<=1023;x+=5)    //Add up step to 5
  {
    analogWrite(LED1,x);
    analogWrite(LED2,1023-x);   
    delay(50);
  } 
}