ใบงานที่ 4.28 การประยกุ ตก์ ารแสดงผลท่ี 7 Segment 4 Digit กบั เซนเซอร์ต่าง ๆ 347 การตอ่ วงจรเพอ่ื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.28-6 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน การทดลองท่ี 2 เขียนโปรแกรมแสดงผลท่ีอ่านค่าจากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านค่าจาก NTC คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <send2seg.h> 2 byte digitPins[] = {2,3,4,5}; // LSB to MSB 3 byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 6}; // seg a to g and dp 4 #define NTC A5 5 double Thermistor(int RawADC) ; 6 void setup() 7{ 8 send2seg::set(1, 4, digitPins, segmentPins); // initialize 9} 10 void loop() 11 { 12 float Temp=Thermistor(analogRead(NTC)); 13 send2seg::loadValue(Temp*10,2); 14 delay(100); 15 } 16 double Thermistor(int RawADC)
348 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 17 { 18 double Cal; 19 Cal = log(10000.0/((1024.0/RawADC-1))); 20 Cal = 1/(0.001129148+(0.000234125+(0.0000000876741*Cal*Cal))*Cal); 21 Cal = Cal - 273.15; // Convert Kelvin to Celcius 22 return Cal; 23 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพม่ิ /ลดอุณหภูมิท่ีเทอร์มิสเตอร์สังเกตผล วงจรทใ่ี ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี LM35 D1 VCC Peripheral circuit 1N5819 CPU circuit R1 7,20 ATMEGA328 R42-2R011 LTC-4727JS 10k R112k-R15 VCC 19 SW1 1 AVCC D13 18 14 a D12 17 16 cb RST D11 16 13 d D10 15 3 e C1 14 5 gf 0.1uF D9 13 11 dp D8 12 15 D7 7 D6 USB to UART (TTL Level) R2,R3 1268 1k 3 Q1 DTR 2 BC547 RXD D1(TXD) D5 11 Q2BC547 TXD D0(RXD) D4 6 Q3 +5V D3 5 BC547 GND D2 4 Q4 3V3 BC547 X1 A5 28 VCC 16MHz C2,C3 9 XTAL1 1 22pF 10 XTAL2 2 VCC LM35 GND OUT GND 8,22 3 รูปท่ี 4.28-7 วงจรที่ใชไ้ อซี AVR ในการทดลอง ARDUINO R1-R8 LTC-4727JS 220 VCC D13 14 ab D12 R91-kR12 16 cd 1 D11 13 e VCC D10 3 f OUT 5 g GND D9 11 dp 3 D8 15 D7 7 D6 2 A5 1268 Q1 LM35 D5 BC547 Q2BC547 D4 Q3 BC547 D3 Q4 BC547 GND D2 รูปท่ี 4.28-8 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง
ใบงานที่ 4.28 การประยกุ ตก์ ารแสดงผลท่ี 7 Segment 4 Digit กบั เซนเซอร์ต่าง ๆ 349 การตอ่ วงจรเพื่อทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.28-9 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 3 เขียนโปรแกรมแสดงผลที่อ่านค่าจากไอซีวดั อุณหภูมิ LM35 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านค่าจากไอซี LM35 คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <send2seg.h> 2 #define LM35_pin A5 3 byte digitPins[] = {2,3,4,5}; // LSB to MSB 4 byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 6}; // seg a to g and dp 5 void setup() 6{ 7 send2seg::set(1, 4, digitPins, segmentPins); // initialize 8} 9 void loop() 10 { 11 int adc = analogRead(LM35_pin); 12 float temp = adc*(5.0/1023)*100.0; 13 send2seg::loadValue(temp*10,2); 14 delay(200); 15 }
350 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพิ่ม/ลดอุณหภูมิที่เทอร์มิสเตอร์สังเกตผล วงจรทใี่ ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี DS18B20 D1 VCC Peripheral circuit 1N5819 CPU circuit 1R01k 7,20 ATMEGA328 R42-2R011 LTC-4727JS R12-R15 SW1 1 VCC D13 19 14 a AVCC D12 18 1k 16 b RST D11 17 13 c D10 16 3 d C1 15 5 e 0.1uF D9 14 11 gf D8 13 15 dp D7 12 7 D6 USB to UART (TTL Level) R2,R3 1268 1k 3 Q1 DTR 2 BC547 RXD D1(TXD) D5 11 Q2 TXD D0(RXD) D4 6 BC547 +5V D3 5 Q3 GND D2 4 BC547 3V3 Q4 BC547 A5 28 R16 VCC 4.7k X1 16MHz 9 XTAL1 3 DS18B20 C2,C3 10 XTAL2 22pF 2 VCC GND DQ GND 8,22 1 รูปท่ี 4.28-10 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป ARDUINO R1-R8 LTC-4727JS 220 VCC R13 D13 14 a 4.7k D12 R91-kR12 16 b D11 13 cd D10 3 ef 5 g D9 11 dp D8 15 D7 7 D6 3 DS18B20 1268 D5 Q1 VCC 2 A5 BC547 DQ Q2BC547 GND Q3 BC547 1 Q4 BC547 D4 D3 GND D2 รูปท่ี 4.28-11 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง
ใบงานท่ี 4.28 การประยกุ ตก์ ารแสดงผลที่ 7 Segment 4 Digit กบั เซนเซอร์ต่าง ๆ 351 รูปที่ 4.28-12 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 4 เขียนโปรแกรมแสดงคา่ อุณหภูมิท่ีวดั จากไอซี DS18B20 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริ่มต้นต่าง ๆ อ่านคา่ จากไอซี แสดงค่าทีอ่ ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <OneWire.h> 2 #include <DallasTemperature.h> 3 #include <send2seg.h> 4 byte digitPins[] = {2,3,4,5}; // LSB to MSB 5 byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 6}; // seg a to g and dp 6 OneWire ds(A5); //sensor on pin A5 7 DallasTemperature sensor(&ds); 8 float temp; //variable keep temp value 9 void setup() 10 { 11 sensor.begin(); 12 send2seg::set(1, 4, digitPins, segmentPins); // initialize 13 } 14 void loop() 15 { 16 sensor.requestTemperatures(); 17 temp = sensor.getTempCByIndex(0); 18 if(temp>10.0 && temp<50.0){ 19 send2seg::loadValue(temp*10,2); 20 } 21 delay(100); 22 }
352 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus (ใช้ Arduino IDE v. 1.6.5 ในการคอมไพล์) 2. ทดลองดว้ ยวงจรจริง 3. ทดลองใหอ้ ุณหภูมิท่ีตวั ไอซีเปล่ียนแปลงแลว้ สังเกตผล วงจรทใี่ ช้เซนเซอร์เป็ น DHT22 D1 VCC Peripheral circuit 1N5819 CPU circuit R1 7,20 ATMEGA328 R42-2R011 LTC-4727JS 10k R112k-R15 VCC 19 SW1 1 AVCC D13 18 14 a D12 17 16 b RST D11 16 13 c D10 15 3 d C1 14 5 e 0.1uF D9 13 11 gf D8 12 15 dp D7 7 D6 USB to UART (TTL Level) R2,R3 1268 1k 3 Q1 DTR 2 BC547 RXD D1(TXD) D5 11 Q2BC547 TXD D0(RXD) D4 6 Q3 +5V D3 5 BC547 GND D2 4 Q4 3V3 BC547 X1 9 XTAL1 A5 28 R5 VCC DHT22 16MHz 10 XTAL2 4k7 C2,C3 22pF GND DATA 8,22 รูปที่ 4.28-13 วงจรท่ีใชไ้ อซี AVR ในการทดลอง กรณีท่ีใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป ARDUINO R1-R8 LTC-4727JS 220 DHT22 D13 14 ab VCC D12 R91-kR12 16 cd D11 13 ef D10 3 g 5 dp D9 11 D8 15 D7 7 D6 1268 A5 Q1 BC547 R13 D5 Q2BC547 4.7k Q3 BC547 D4 Q4 BC547 D3 GND D2 รูปที่ 4.28-14 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง
ใบงานที่ 4.28 การประยกุ ตก์ ารแสดงผลท่ี 7 Segment 4 Digit กบั เซนเซอร์ต่าง ๆ 353 การตอ่ วงจรเพอื่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.28-15 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองท่ี 5 เขียนโปรแกรมแสดงอุณภูมิและความช้ืนจาก DHT22 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านคา่ จากโมดูล DHT22 แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <send2seg.h> 2 #include <DHT.h> 3 #define DHTPIN A5 // pin to connect DHT22 4 #define DHTTYPE DHT22 // Type of use DHT11,DHT21,DHT22 5 byte digitPins[] = {2,3,4,5}; // LSB to MSB 6 byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 6}; // seg a to g and dp 7 DHT dht(DHTPIN, DHTTYPE); 8 void setup() 9{ 10 dht.begin(); 11 send2seg::set(1, 4, digitPins, segmentPins); // initialize 12 } 13 void loop() 14 { 15 delay(2000); 16 float t = dht.readTemperature(); 17 if (isnan(t)) 18 { 19 return; 20 } 21 send2seg::loadValue(t*10,2); 22 }
354 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพมิ่ /ลดอุณหภูมิและความช้ืน สงั เกตผล วงจรทใ่ี ช้เซนเซอร์เป็ น Ultasonic 1DN15819 VCC Peripheral circuit CPU circuit R1 7,20 ATMEGA328 R4-R11 LTC-4727JS 10k 220 VCC 19 SW1 1 AVCC D13 18 R12-R15 14 ab D12 17 1k 16 c RST D11 16 13 d D10 15 3 ef C1 14 5 g 0.1uF D9 13 11 dp D8 12 15 D7 7 D6 USB to UART (TTL Level) R2,R3 1268 1k 3 Q1 DTR 2 BC547 RXD D1(TXD) D5 11 Q2 TXD D0(RXD) D4 6 BC547 +5V D3 5 Q3BC547 GND D2 4 Q4 3V3 BC547 X1 9 XTAL1 A4 27 HC-SR04 16MHz 10 XTAL2 A5 28 C2,C3 VCC 22pF GND 1234 8,22 VCC Trig Echo GND VCC Trig Echo GND รูปท่ี 4.28-16 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีท่ีใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป HC-SR04 ARDUINO R1-R8 LTC-4727JS 220 VCC D13 14 a 1234 D12 R9-R12 16 b D11 1k 13 c D10 3 d 5 ef D9 11 gdp D8 15 D7 7 D6 1268 A5 Q1 A4 D5 BC547 Q2 D4 BC547 D3 Q3 GND D2 BC547 Q4 BC547 รูปท่ี 4.28-17 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง
ใบงานท่ี 4.28 การประยกุ ตก์ ารแสดงผลที่ 7 Segment 4 Digit กบั เซนเซอร์ต่าง ๆ 355 การต่อวงจรเพ่ือทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.28-18 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 6 เขียนโปรแกรมวดั ระยะดว้ ย Ultrasonic ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริ่มต้นต่าง ๆ อ่านค่าจากโมดูล Ultrasonic แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <send2seg.h> 2 #include <Ultrasonic.h> 3 #define TrigPin A4 4 #define EchoPin A5 5 byte digitPins[] = {2,3,4,5}; // LSB to MSB 6 byte segmentPins[] = {13, 12, 11, 10, 9, 8, 7, 6}; // seg a to g and dp 7 Ultrasonic ultrasonic(TrigPin,EchoPin); 8 void setup() 9{ 10 send2seg::set(1, 4, digitPins, segmentPins); // initialize 11 } 12 void loop() 13 { 14 delay(500); 15 int distance=ultrasonic.distanceRead(CM); 16 send2seg::loadValue(distance,0); 17 }
356 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปลี่ยนแปลงรูปแบบการแสดงผล 9. สรุปผลการปฏบิ ัติงาน 10. งานทมี่ อบ มาย 1. เขียนโปรแกรมท่ีใชเ้ ซนเซอร์วดั อุณหภูมิและความช้ืน DHT22 โดยให้แสดงค่าอุณภูมิและ ความช้ืนสลบั กบั ARDUINO R12-2R08 LTC-4727JS DHT22 D13 14 a VCC D12 16 b D11 13 c R13 D10 3 d 4.7k 5 e D9 11 f D8 15 gdp 7 D7 126 8 D6 Q1 R9-R12 BC547 A5 1k Q2 BC547 D5 QB3C547 D4 Q4 BC547 D3 GND D2 รูปที่ 4.28-19 วงจรท่ีใชท้ ดลอง
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลท่ี LCD 4 bit กบั เซนเซอร์ต่าง ๆ 357 ใบงานที่ 4.29 การประยุกต์การแสดงผลที่ LCD 4 bit กบั เซนเซอร์ต่าง ๆ 1. จุดประสงค์ทว่ั ไป เพ่ือใหส้ ามารถประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ต่าง ๆ ได้ 2. จุดประสงค์เชิงพฤติกรรม 1. บอกวธิ ีประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ ได้ 2. บอกข้นั ตอนการต่อวงจรเพ่ือทดลองบนบอร์ดทดลองได้ 3. ทดสอบการทางานของบอร์ด Arduino ได้ 4. ปฏิบตั ิงานตามใบงานเสร็จทนั เวลาที่กาหนด 3. เคร่ืองมือและอปุ กรณ์ 1. บอร์ดทดลอง Breadboard 830 Point 1 แผน่ 2. อุปกรณ์อิเล็กทรอนิกส์ประกอบดว้ ย 1 ตวั 1 ตวั 2.1 Trim pot 10k 1 ตวั 2.5 IC LM35 1 ตวั 2.7 ตวั ทา้ นทาน 4.7k 2.2 Potentiometer 10k 1 ตวั 2.8 ตวั ทา้ นทาน 10k 1 เส้น 1 ชุด 2.3 Thermistor NTC 10k 1 ตวั 3.5 สายเช่ือมตอ่ USB (Mini) 1 เคร่ือง 3.6 สายเช่ือมต่อวงจร 2.4 IC DS18B20 1 ตวั 3.7 คอมพิวเตอร์ 3. อุปกรณ์ร่วมอ่ืน ๆ 3.1 บอร์ด Arduino Nano 3.0 1 ตวั 3.2 LCD ชนิดตวั อกั ษร 16×2 1 ตวั 3.3 โมดูลวดั อุณหภูมิ DHT22 1 ตวั 3.4 โมดูลอลั ตร้าโซนิค HC-SR04 1 ตวั 4. ลาดบั ข้นั การปฏบิ ตั ิงาน 1. ศึกษาจุดประสงคท์ ว่ั ไป จุดประสงคเ์ ชิงพฤติกรรมและทฤษฎีพ้นื ฐานท่ีเก่ียวขอ้ ง 2. ดาเนินการต่อวงจรลงบอร์ดทดลองตามวงจรท่ีกาหนด 3. เขียนโปรแกรมควบคุมและทดสอบการทางานของวงจร 4. สรุปผลการปฏิบตั ิงาน
358 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 5. ทฤษฎพี ืน้ ฐาน การประยกุ ตใ์ ชง้ านในใบงานน้ีเป็ นการเปล่ียนเป้าหมายการแสดงผลจากเดิมในใบงานที่ 4.5 ถึง ใบงานท่ี 4.12 ที่เป็นการอ่านค่าจากเซนเซอร์แบบต่าง ๆ แลว้ นาผลมาคานวณ (หรือนามาใชไ้ ดเ้ ลยในบาง ใบงาน) ไปแสดงผลผ่านทางจอคอมพิวเตอร์ผ่านทางการสื่อสารทางพอร์ตอนุกรมซ่ึงการดาเนินการ ดงั กล่าวเป็ นการเขียนโคด้ โปรแกรมเพ่ือใชท้ ดสอบผลการทางานกบั เซนเซอร์ต่าง ๆ ในเบ้ืองตน้ ซ่ึงไม่ ตอ้ งต่อตวั แสดงผลอ่ืน ๆ สาหรับใบงานน้ีเป็นการเปล่ียนเป้าหมายจากการแสดงผลจากจอคอมพิวเตอร์มา เป็นจอ LCD ชนิดตวั อกั ษรท่ีตอ่ เช่ือมแบบ 4 บิต 6. วงจรทใ่ี ช้ทดลอง วงจรเพ่ือใชท้ ดลองในใบงานเป็นการทดลองจากเซนเซอร์ท้งั 6 แบบโดยแสดงผลที่จอ LCD ชนิดตวั อกั ษรท่ีเช่ือมต่อแบบ 4 บิต วงจรที่ใชท้ ดลองมีดงั น้ี 1. วงจรท่ีใชเ้ ซนเซอร์เป็นตวั ตา้ นทานปรับค่าได้ 2. วงจรท่ีใชเ้ ซนเซอร์วดั อุณหภูมิเป็นเทอร์มิสเตอร์ 3. วงจรท่ีใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี LM35 4. วงจรที่ใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี DS18B20 5. วงจรที่ใชเ้ ซนเซอร์เป็น DHT22 6. วงจรท่ีใชเ้ ซนเซอร์เป็น Ultrasonic วงจรทใ่ี ช้เซนเซอร์เป็ นตวั ต้านทานปรับค่าได้ 1DN15819 VCC Peripheral circuit CPU circuit R1 7,20 ATMEGA328 10k VCC SW1 1 RST AVCC C1 D2 4 11 D4 0.1uF D3 5 12 D5 D4 6 13 D6 D5 11 14 D7 USB to UART (TTL Level) R2,R3 3 E R/W RS Vo VCC GND 1k 2 6 54321 DTR RXD D1(TXD) D6 12 VCC TXD D0(RXD) D7 13 10k +5V GND 3V3 VCC X1 9 XTAL1 A5 28 10k 16MHz 10 XTAL2 C2,C3 GND 22pF 8,22 รูปท่ี 4.29-1 วงจรท่ีใชไ้ อซี AVR ในการทดลอง
รูปที่ 4.29-4 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน รูปที่ 4.29-3 การต่อลงบอร์ดทดลอง ABCDE F GH I J รูปท่ี 4.29-2 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง ใบงานท่ี 4.29 การประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 359 การต่อวงจรเพ่ือทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง D11 กรณีท่ีใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป 3V3 D10 REF D9 VCC ARDUINO A0 D8 5 5 A1 D7 5V D2 11 D4 A2 D6 D3 12 D5 A3 D5 D4 13 D6 A4 D4 D5 14 D7 A5 D3 10 E R/W RS Vo VCC GND 10 A6 D2 654321 A7 D6 VCC 5V GND D7 RST RST 10k GND 15 VIN D0 VCC D1 15 20 20 A5 GND 25 25 30 30 35 35 10k 40 40 45 45 50 50 55 55 60 60 ABCDE F GH I J
360 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การทดลองท่ี 1 เขียนโปรแกรมแสดงค่าที่อา่ นไดจ้ ากโพเทนธิโอมิเตอร์ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริ่มต้นต่าง ๆ อ่านค่าจาก POT แสดงค่าทอ่ี ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <LiquidCrystal.h> // set up the LCD's connection pins 2 /* The circuit: // set LCD size 3 * LCD RS pin to digital pin 7 4 * LCD E pin to digital pin 6 5 * LCD D4 pin to digital pin 2 6 * LCD D5 pin to digital pin 3 7 * LCD D6 pin to digital pin 4 8 * LCD D7 pin to digital pin 5 9 * LCD R/W pin to ground 10 */ 11 #define POT 5 12 LiquidCrystal lcd(7,6,2,3,4,5); 13 void setup() 14 { 15 lcd.begin(16, 2); 16 lcd.print(\"Analog Read :\"); 17 } 18 void loop() 19 { 20 int adc=analogRead(POT); 21 lcd.setCursor(8,1); 22 lcd.print(adc); 23 delay(100); 24 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปลี่ยนแปลงคา่ โพเทนธิโอมิเตอร์แลว้ สงั เกตผล
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลท่ี LCD 4 bit กบั เซนเซอร์ต่าง ๆ 361 วงจรทใ่ี ช้เซนเซอร์เป็ นเทอร์มสิ เตอร์วดั อณุ ภูมิ D1 VCC Peripheral circuit 1N5819 CPU circuit 1R01k 7,20 ATMEGA328 VCC SW1 1 RST AVCC C1 D2 4 11 D4 0.1uF D3 5 12 D5 D4 6 13 D6 D5 11 14 D7 USB to UART (TTL Level) R21,kR3 3 E R/W RS Vo VCC GND 2 6 54321 DTR D1(TXD) D6 12 RXD D0(RXD) D7 13 VCC TXD 10k +5V GND 3V3 VCC X1 9 XTAL1 A5 28 R4 16MHz 10 XTAL2 10k GND T NTC Thermistor C2,C3 8,22 10k 22pF รูปท่ี 4.29-5 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป VCC ARDUINO 5V D2 11 D4 R/W RS Vo VCC GND D3 12 D5 54321 D4 13 D6 D5 14 D7 D6 E D7 6 A5 VCC GND 10k VCC R101k NTC Thermistor T 10k รูปท่ี 4.29-6 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 25 25 30 30 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 D11 D10 D9 D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE ABCDE D13 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN 1 5 10 15 รูปที่ 4.29-7 การต่อลงบอร์ดทดลอง
362 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การตอ่ วงจรเพอื่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.29-8 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองท่ี 2 เขียนโปรแกรมแสดงผลท่ีอา่ นคา่ จากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริ่มต้นต่าง ๆ อ่านค่าจาก NTC คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <LiquidCrystal.h> 2 /* The circuit: 3 * LCD RS pin to digital pin 7 4 * LCD E pin to digital pin 6 5 * LCD D4 pin to digital pin 2 6 * LCD D5 pin to digital pin 3 7 * LCD D6 pin to digital pin 4 8 * LCD D7 pin to digital pin 5 9 * LCD R/W pin to ground 10 */ 11 #define NTC A5 12 double Thermistor(int RawADC) ; 13 LiquidCrystal lcd(7,6,2,3,4,5); // set up the LCD's connection pins 14 void setup() 15 { 16 lcd.begin(16, 2); // set LCD size 17 lcd.print(\"Temperature is:\"); 18 lcd.setCursor(13,1); 19 lcd.print(\"'C\"); 20 } 21 void loop() 22 { 23 float Temp=Thermistor(analogRead(NTC)); 24 lcd.setCursor(7,1); 25 lcd.print(Temp);
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลท่ี LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 363 26 delay(500); 27 } 28 double Thermistor(int RawADC) 29 { 30 double Cal; 31 Cal = log(10000.0/((1024.0/RawADC-1))); 32 Cal = 1/(0.001129148+(0.000234125+(0.0000000876741*Cal*Cal))*Cal); 33 Cal = Cal - 273.15; // Convert Kelvin to Celcius 34 return Cal; 35 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพมิ่ /ลดอุณหภูมิท่ีเทอร์มิสเตอร์สังเกตผล วงจรทใี่ ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี LM35 D1 VCC Peripheral circuit 1N5819 CPU circuit 1R01k 7,20 ATMEGA328 SW1 VCC 1 RST AVCC D2 4 11 D4 C1 D3 5 12 D5 0.1uF D4 6 13 D6 D5 11 14 D7 USB to UART (TTL Level) R2,R3 3 D6 12 E R/W RS Vo VCC GND 1k 2 D7 13 6 54321 DTR RXD D1(TXD) VCC TXD D0(RXD) 10k +5V GND 3V3 VCC 1 LM35 A5 28 2 VCC OUT X1 GND 16MHz 9 XTAL1 10 XTAL2 3 C2,C3 GND 22pF 8,22 รูปที่ 4.29-9 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป VCC ARDUINO 5V D2 11 D4 D3 12 D5 D4 13 D6 D5 14 D7 D6 E R/W RS Vo VCC GND D7 654321 A5 VCC VCC GND 10k 1 LM35 2 VCC OUT GND 3 รูปที่ 4.29-10 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง
364 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร]F GH I J20 2025 25 30 30 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลองD11 D10 LM35D9 D8 5 รูปที่ 4.29-11 การตอ่ ลงบอร์ดทดลองD7 การต่อวงจรเพือ่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม ProteusD6 D5 รูปที่ 4.29-12 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางานD4 การทดลองที่ 3 เขียนโปรแกรมแสดงค่าอุณหภูมิท่ีวดั จากไอซี LM35D3 10 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ีD2 START GND กา นดคา่ เริม่ ต้นต่าง ๆRST อ่านค่าจากไอซี D0 แสดงค่าทอ่ี า่ นได้ D1 15 ABCDE ABCDE D13 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN 1 5 10 15
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลท่ี LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 365 แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <LiquidCrystal.h> 2 /* The circuit: 3 * LCD RS pin to digital pin 7 4 * LCD E pin to digital pin 6 5 * LCD D4 pin to digital pin 2 6 * LCD D5 pin to digital pin 3 7 * LCD D6 pin to digital pin 4 8 * LCD D7 pin to digital pin 5 9 * LCD R/W pin to ground 10 */ 11 #define LM35_pin A5 12 LiquidCrystal lcd(7,6,2,3,4,5); // set up the LCD's connection pins 13 void setup() 14 { 15 lcd.begin(16, 2); // set LCD size 16 lcd.print(\"Temperature is:\"); 17 lcd.setCursor(13,1); 18 lcd.print(\"'C\"); 19 } 20 void loop() 21 { 22 int adc = analogRead(LM35_pin); 23 float temp = adc*(5.0/1023)*100.0; 24 lcd.setCursor(7,1); 25 lcd.print(temp); 26 delay(500); 27 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus (ใช้ Arduino IDE v. 1.6.5 ในการคอมไพล)์ 2. ทดลองดว้ ยวงจรจริง 3. ทดลองใหอ้ ุณหภูมิท่ีตวั ไอซีเปลี่ยนแปลงแลว้ สังเกตผล วงจรทใี่ ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี DS1820 D1 VCC Peripheral circuit 1N5819 CPU circuit R1 10k 7,20 ATMEGA328 VCC SW1 11 D4 1 RST AVCC D2 4 12 D5 C1 D3 5 13 D6 0.1uF D4 6 14 D7 D5 11 E USB to UART (TTL Level) R21,kR3 3 D6 12 6 R/W RS Vo VCC GND 2 D7 13 54321 DTR D1(TXD) RXD D0(RXD) VCC TXD +5V 10k GND 3V3 4R.74k VCC R5 4.7k VCC 3 DS18B20 3 DS18B20 D8 14 2 VCC 2 VCC D9 15 DQ DQ X1 GND GND 16MHz 9 XTAL1 10 XTAL2 1 1 C2,C3 GND 22pF 8,22 รูปท่ี 4.29-13 วงจรที่ใชไ้ อซี AVR ในการทดลอง
366 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] กรณีท่ีใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป VCC ARDUINO 5V D2 11 D4 R/W RS Vo VCC GND D3 12 D5 54321 D4 13 D6 D5 14 D7 D6 E D7 6 D8 VCC D9 GND 10k R1 VCC R2 VCC 4.7k 4.7k 3 DS18B20 3 DS18B20 2 VCC 2 VCC DQ DQ GND GND 1 1 รูปที่ 4.29-14 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 25 25 30 30 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 D11 D10 D9 D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE D S1 8 D S1 8 ABCDE D13 B 20 B 20 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN 1 5 10 15 รูปที่ 4.29-15 การต่อลงบอร์ดทดลอง การต่อวงจรเพือ่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปที่ 4.29-16 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน
ใบงานท่ี 4.29 การประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 367 การทดลองท่ี 4 เขียนโปรแกรมแสดงค่าอุณหภูมิที่วดั จากไอซี DS18B20 จานวน 2 ตวั โดยแสดงผลท่ีจอ LCD ท่ีเช่ือมต่อแบบ 4 บิต ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านคา่ จากไอซี แสดงค่าทอ่ี ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <LiquidCrystal.h> 2 #include <OneWire.h> 3 #include <DallasTemperature.h> 4 OneWire ds_1(8); //sensor 1 on pin D8 5 OneWire ds_2(9); //sensor 2 on pin D9 6 DallasTemperature sensor_1(&ds_1); 7 DallasTemperature sensor_2(&ds_2); 8 float temp_1; //variable keep temp value 9 float temp_2; //variable keep temp value 10 void temp_read(); 11 LiquidCrystal lcd(7,6,2,3,4,5); // 7->RS,6->E,2->D4,3->D5,4->D6,5->D7 12 void setup() 13 { 14 lcd.begin(16, 2); // set LCD size 15 lcd.print(\"Sensor1: 'C\"); 16 lcd.setCursor(0,1); 17 lcd.print(\"Sensor2: 'C\"); 18 sensor_1.begin(); 19 sensor_2.begin(); 20 } 21 void loop() 22 { 23 temp_read(); 24 lcd.setCursor(10,0); 25 lcd.print(temp_1,1); 26 lcd.setCursor(10,1); 27 lcd.print(temp_2,1); 28 delay(500); 29 } 30 void temp_read() 31 { 32 sensor_1.requestTemperatures(); 33 sensor_2.requestTemperatures(); 34 //------------------------------------------ 35 temp_1 = sensor_1.getTempCByIndex(0); //read temp from sensor_1 36 temp_2 = sensor_2.getTempCByIndex(0); //read temp from sensor_2 37 } ทดลองการทางาน 4. จาลองการทางานดว้ ยโปรแกรม Proteus (ใช้ Arduino IDE v. 1.6.5 ในการคอมไพล)์ 5. ทดลองดว้ ยวงจรจริง 6. ทดลองใหอ้ ุณหภูมิท่ีตวั ไอซีเปลี่ยนแปลงแลว้ สังเกตผล
368 เรียนรู้และลองเล่น Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] วงจรทใี่ ช้เซนเซอร์เป็ น DHT22 D1 VCC Peripheral circuit 1N5819 CPU circuit R1 7,20 ATMEGA328 10k VCC SW1 1 RST AVCC D2 4 C1 D3 5 11 D4 0.1uF D4 6 12 D5 D5 11 13 D6 14 D7 USB to UART (TTL Level) R2,R3 3 R/W RS Vo VCC GND 1k 2 E 54321 DTR 6 RXD D1(TXD) D6 12 TXD D0(RXD) D7 13 VCC +5V 10k GND 3V3 VCC X1 R4 DHT22 16MHz 4k7 9 XTAL1 D8 14 10 XTAL2 DATA C2,C3 GND 22pF 8,22 รูปที่ 4.29-17 วงจรท่ีใชไ้ อซี AVR ในการทดลอง กรณีท่ีใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป VCC ARDUINO 5V D2 11 D4 D3 12 D5 VCC D4 13 D6 10k D5 14 D7 E R/W RS Vo VCC GND 654321 D6 D7 VCC R1 DHT22 4k7 D8 GND DATA รูปท่ี 4.29-18 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 25 25 30 30 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 D11 D10 D9 D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE ABCDE D13 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN 1 5 10 15 รูปที่ 4.29-19 การตอ่ ลงบอร์ดทดลอง
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 369 การต่อวงจรเพอื่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.29-20 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 5 เขียนโปรแกรมแสดงอุณภูมิและความช้ืนจาก DHT22 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านค่าจากโมดูล DHT22 แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <LiquidCrystal.h> 2 /* The circuit: 3 * LCD RS pin to digital pin 7 4 * LCD E pin to digital pin 6 5 * LCD D4 pin to digital pin 2 6 * LCD D5 pin to digital pin 3 7 * LCD D6 pin to digital pin 4 8 * LCD D7 pin to digital pin 5 9 * LCD R/W pin to ground 10 */ 11 #include <DHT.h> 12 #define DHTPIN 8 // pin to connect DHT22 13 #define DHTTYPE DHT22 // Type of use DHT11,DHT21,DHT22 14 DHT dht(DHTPIN, DHTTYPE); 15 LiquidCrystal lcd(7,6,2,3,4,5); // set up the LCD's connection pins 16 void setup() 17 { 18 lcd.begin(16, 2); // set LCD size 19 lcd.print(\"Humidity:\"); 20 lcd.setCursor(0,1); 21 lcd.print(\"Temp:\"); 22 dht.begin(); 23 } 24 void loop() 25 { 26 delay(2000); 27 float h = dht.readHumidity();
370 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 28 float t = dht.readTemperature(); 29 if (isnan(h) || isnan(t)) 30 { 31 lcd.clear(); 32 lcd.print(\"Failed read DHT\"); 33 return; 34 } 35 lcd.setCursor(10,0); 36 lcd.print(h); 37 lcd.setCursor(10,1); 38 lcd.print(t); 39 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพมิ่ /ลดอุณหภูมิและความช้ืน สังเกตผล วงจรทใ่ี ช้เซนเซอร์เป็ น Ultasonic D1 VCC Peripheral circuit 1N5819 CPU circuit R1 10k 7,20 ATMEGA328 VCC SW1 11 D4 1 RST AVCC D2 4 12 D5 C1 D3 5 13 D6 0.1uF D4 6 14 D7 D5 11 E USB to UART (TTL Level) R2,R3 3 D6 12 6 R/W RS Vo VCC GND 1k 2 D7 13 54321 DTR RXD D1(TXD) VCC TXD D0(RXD) 10k +5V GND 3V3 X1 9 XTAL1 D9 15 VCC HC-SR04 16MHz 10 XTAL2 D8 14 1 VCC 2 Trig C2,C3 GND 3 Echo 22pF 4 GND 8,22 รูปท่ี 4.29-21 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป HC-SR04 VCC ARDUINO D2 11 D4 5V D3 12 D5 D4 13 D6 VCC VCC D5 14 D7 Trig Echo GND 1234 E R/W RS Vo VCC GND D8 D6 654321 D9 D7 VCC 10k GND รูปที่ 4.29-22 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง
ใบงานที่ 4.29 การประยกุ ตก์ ารแสดงผลที่ LCD 4 bit กบั เซนเซอร์ตา่ ง ๆ 371F GH I J20 2025 2530 3035 3540 4045 4550 5055 5560 60F GH I J D12 1 การตอ่ วงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลองD11 D10 รูปที่ 4.29-23 การตอ่ ลงบอร์ดทดลองD9 การตอ่ วงจรเพือ่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม ProteusD8 5 D7 รูปท่ี 4.29-24 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางานD6 การทดลองที่ 6 เขียนโปรแกรมวดั ระยะดว้ ย Ultrasonic แสดงผลดว้ ยจอ LCDD5 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ีD4 D3 10 STARTD2 กา นดคา่ เริม่ ต้นต่าง ๆ อ่านค่าจากโมดลู UltrasonicGND RST แสดงผล D0 แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม ArduinoD1 15 1 #include <LiquidCrystal.h>ABCDE VCC ABCDE 2 #include <Ultrasonic.h>D13 Trig 3 /* The circuit:3V3 Echo 4 * LCD RS pin to digital pin 7REF GND 5 * LCD E pin to digital pin 6A0 6 * LCD D4 pin to digital pin 2A1 HC-SR04 7 * LCD D5 pin to digital pin 3A2 8 * LCD D6 pin to digital pin 4A3 9 * LCD D7 pin to digital pin 5A4 10 * LCD R/W pin to ground A5 11 */ A6 A7 5V RST GND VIN 1 5 10 15
372 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 12 Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN) 13 LiquidCrystal lcd(7,6,2,3,4,5); // set up the LCD's connection pins 14 void setup() 15 { 16 lcd.begin(16, 2); // set LCD size 17 lcd.print(\"Length is :\"); 18 lcd.setCursor(13,1); 19 lcd.print(\"cm\"); 20 } 21 void loop() 22 { 23 int distance=ultrasonic.distanceRead(CM); 24 lcd.setCursor(7,1); 25 lcd.print(distance); 26 delay(500); 27 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปลี่ยนแปลงรูปแบบการแสดงผล 9. สรุปผลการปฏบิ ัตงิ าน 10. งานทม่ี อบ มาย 1. เขียนโปรแกรมที่ใช้เซนเซอร์วดั อุณหภูมิและความช้ืน DHT22 โดยใช้ค่าอุณภูมิและ ความช้ืนเป็นตวั ควบคุมการทางานของ LED พร้อมท้งั แสดงผลที่จอ LCD VCC ARDUINO 11 D4 5V 12 D5 D2 13 D6 D3 14 D7 D4 D5 D6 E R/W RS Vo VCC GND D7 6 54321 D10 D11 R1-R4 220 VCC D12 10k D13 LED1-LED4 VCC R5 DATA DHT22 D8 4k7 GND รูปท่ี 4.29-25 วงจรท่ีใชท้ ดลอง
ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลที่ LCD I2C กบั เซนเซอร์ตา่ ง ๆ 373 ใบงานท่ี 4.30 การประยุกต์การแสดงผลที่ LCD I2C กบั เซนเซอร์ต่าง ๆ 1. จุดประสงค์ทว่ั ไป เพ่ือใหส้ ามารถประยกุ ตก์ ารแสดงผลที่ LCD I2C กบั เซนเซอร์ต่าง ๆ ได้ 2. จุดประสงค์เชิงพฤติกรรม 1. บอกวธิ ีประยกุ ตก์ ารแสดงผลที่ LCD I2C กบั เซนเซอร์ตา่ ง ๆ ได้ 2. บอกข้นั ตอนการตอ่ วงจรเพอ่ื ทดลองบนบอร์ดทดลองได้ 3. ทดสอบการทางานของบอร์ด Arduino ได้ 4. ปฏิบตั ิงานตามใบงานเสร็จทนั เวลาท่ีกาหนด 3. เคร่ืองมือและอปุ กรณ์ 1. บอร์ดทดลอง Breadboard 830 Point 1 แผน่ 2. อุปกรณ์อิเล็กทรอนิกส์ประกอบดว้ ย 2.1 Potentiometer 10k 1 ตวั 2.5 LED 3mm 4 ตวั 2.6 ตวั ทา้ นทาน 220 ohm 4 ตวั 2.2 Thermistor NTC 10k 1 ตวั 2.7 ตวั ทา้ นทาน 4.7k 1 ตวั 2.8 ตวั ทา้ นทาน 10k 1 ตวั 2.3 IC DS18B20 1 ตวั 2.4 IC LM35 1 ตวั 3. อุปกรณ์ร่วมอ่ืน ๆ 3.1 บอร์ด Arduino Nano 3.0 1 ตวั 3.5 โมดูลอลั ตร้าโซนิค HC-SR04 1 ตวั 3.2 LCD ชนิดตวั อกั ษร 16x2 1 ตวั 3.6 สายเชื่อมต่อ USB (Mini) 1 เส้น 3.3 โมดูล I2C สาหรับ LCD 1 ตวั 3.7 สายเชื่อมต่อวงจร 1 ชุด 3.4 โมดูลวดั อุณหภูมิ DHT22 1 ตวั 3.8 คอมพิวเตอร์ 1 เคร่ือง 4. ลาดับข้นั การปฏบิ ตั ิงาน 1. ศึกษาจุดประสงคท์ ว่ั ไป จุดประสงคเ์ ชิงพฤติกรรมและทฤษฎีพ้ืนฐานที่เก่ียวขอ้ ง 2. ดาเนินการต่อวงจรลงบอร์ดทดลองตามวงจรที่กาหนด 3. เขียนโปรแกรมควบคุมและทดสอบการทางานของวงจร 4. สรุปผลการปฏิบตั ิงาน
374 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 5. ทฤษฎพี ืน้ ฐาน การประยกุ ตใ์ ชง้ านในใบงานน้ีเป็ นการเปลี่ยนเป้าหมายการแสดงผลจากเดิมในใบงานที่ 4.5 ถึง ใบงานที่ 4.12 ท่ีเป็นการอ่านค่าจากเซนเซอร์แบบต่าง ๆ แลว้ นาผลมาคานวณ (หรือนามาใชไ้ ดเ้ ลยในบาง ใบงาน) ไปแสดงผลผ่านทางจอคอมพิวเตอร์ผ่านทางการสื่อสารทางพอร์ตอนุกรมซ่ึงการดาเนินการ ดงั กล่าวเป็ นการเขียนโคด้ โปรแกรมเพ่ือใช้ทดสอบผลการทางานกบั เซนเซอร์ต่าง ๆ ในเบ้ืองตน้ ซ่ึงไม่ ตอ้ งตอ่ ตวั แสดงผลอ่ืน ๆ สาหรับใบงานน้ีเป็นการเปล่ียนเป้าหมายจากการแสดงผลจากจอคอมพวิ เตอร์มา เป็นจอ LCD ชนิดตวั อกั ษรท่ีต่อเช่ือมแบบ I2C ผา่ นทางโมดูลส่ือสาร 6. วงจรทใ่ี ช้ทดลอง วงจรเพอื่ ใชท้ ดลองในใบงานเป็นการทดลองจากเซนเซอร์ท้งั 6 แบบโดยแสดงผลท่ีจอ LCD ชนิดตวั อกั ษรที่เชื่อมต่อแบบ 4 บิต วงจรท่ีใชท้ ดลองมีดงั น้ี 1. วงจรท่ีใชเ้ ซนเซอร์เป็นตวั ตา้ นทานปรับคา่ ได้ 2. วงจรที่ใชเ้ ซนเซอร์วดั อุณหภูมิเป็นเทอร์มิสเตอร์ 3. วงจรที่ใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี LM35 4. วงจรท่ีใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี DS18B20 5. วงจรท่ีใชเ้ ซนเซอร์เป็น DHT22 6. วงจรที่ใชเ้ ซนเซอร์เป็น Ultrasonic วงจรทใ่ี ช้เซนเซอร์เป็ นตัวต้านทานปรับค่าได้ D1N15819 VCC Peripheral circuit R1 CPU circuit VCC VCC 10k SDA 7,20 ATMEGA328 SCL SW1 VCC GND 1 RST AVCC C1 0.1uF A4(SDA) 27 A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 X1 9 XTAL1 A3 26 VCC 16MHz 10 XTAL2 10k C2,C3 GND 22pF 8,22 รูปที่ 4.30-1 วงจรท่ีใชไ้ อซี AVR ในการทดลอง
รูปที่ 4.30-4 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน รูปที่ 4.30-3 การตอ่ ลงบอร์ดทดลอง ABCDE F GH I J VCC A4(SDA) ARDUINO กรณีที่ใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป การตอ่ วงจรเพื่อทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 A3 10k A5(SCL) VCC VCC D11 3V3 D10 GND REF D9 A0 D8 5 รูปที่ 4.30-2 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง 5 A1 D7 การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง A2 D6 A3 D5 A4 D4 A5 D3 10 10 A6 D2 A7 5V GND RST RST GND 15 VIN D0 D1 15 20 20 ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 375 25 25 GND VCC SDA SCL 30 30 GND VCC SDA SCL 35 35 40 40 45 45 50 50 55 55 60 60 ABCDE F GH I J
376 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การทดลองที่ 1 เขียนโปรแกรมแสดงคา่ ที่อา่ นไดจ้ ากโพเทนธิโอมิเตอร์ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริ่มต้นต่าง ๆ อ่านคา่ จาก POT แสดงค่าที่อ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #define POT 3 4 LiquidCrystal_I2C lcd(0x3F,16,2); //0x27 for PCF8574 and 0x3F for PCF8574A 5 void setup() 6{ 7 lcd.init(); 8 lcd.backlight(); 9 lcd.begin(16, 2); // set LCD size 10 lcd.print(\"Analog Read :\"); 11 } 12 void loop() 13 { 14 int adc=analogRead(POT); 15 lcd.setCursor(8,1); 16 lcd.print(adc); 17 delay(100); 18 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปลี่ยนแปลงคา่ โพเทนธิโอมิเตอร์แลว้ สงั เกตผล วงจรทใ่ี ช้เซนเซอร์เป็ นเทอร์มสิ เตอร์วดั อณุ ภูมิ 1DN15819 VCC Peripheral circuit 1R01k CPU circuit VCC VCC SDA SW1 7,20 ATMEGA328 SCL VCC GND 1 RST AVCC C1 0.1uF A4(SDA) 27 A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 VCC X1 9 XTAL1 A3 26 R4 16MHz 10 XTAL2 10k GND T NTC Thermistor C2,C3 8,22 10k 22pF รูปท่ี 4.30-5 วงจรท่ีใชไ้ อซี AVR ในการทดลอง
รูปที่ 4.30-8 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน รูปท่ี 4.30-7 การตอ่ ลงบอร์ดทดลอง ABCDE F GH I J รูปท่ี 4.30-6 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง A3 A4(SDA) ARDUINO กรณีท่ีใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป การตอ่ วงจรเพอ่ื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 การตอ่ วงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง GND A5(SCL) VCC VCC D11 3V3 D10 REF D9 A0 D8 5 5 A1 D7 A2 D6 A3 D5 A4 D4 A5 D3 10 10 A6 D2 A7 5V GND RST RST GND 15 VIN D0 D1 15 20 20 ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 377 25 25 GND VCC SDA SCL 30 30 R101k GND VCC T SDA SCL VCC 35 35 NTC Thermistor 10k 40 40 45 45 50 50 55 55 60 60 ABCDE F GH I J
378 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การทดลองท่ี 2 เขียนโปรแกรมแสดงผลที่อ่านคา่ จากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริม่ ต้นต่าง ๆ อ่านค่าจาก NTC คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #define NTC A3 4 double Thermistor(int RawADC) ; 5 LiquidCrystal_I2C lcd(0x3F,16,2); // 0x27 for PCF8574 and 0x3F for PCF8574A 6 void setup() 7{ 8 lcd.init(); 9 lcd.backlight(); 10 lcd.begin(16, 2); // set LCD size 11 lcd.print(\"Temperature is:\"); 12 lcd.setCursor(13,1); 13 lcd.print(\"'C\"); 14 } 15 void loop() 16 { 17 float Temp=Thermistor(analogRead(NTC)); 18 lcd.setCursor(7,1); 19 lcd.print(Temp); 20 delay(500); 21 } 22 double Thermistor(int RawADC) 23 { 24 double Cal; 25 Cal = log(10000.0/((1024.0/RawADC-1))); 26 Cal = 1/(0.001129148+(0.000234125+(0.0000000876741*Cal*Cal))*Cal); 27 Cal = Cal - 273.15; // Convert Kelvin to Celcius 28 return Cal; 29 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพ่ิม/ลดอุณหภูมิท่ีเทอร์มิสเตอร์สังเกตผล
ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 379 วงจรทใ่ี ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี LM35 D1 VCC Peripheral circuit 1N5819 CPU circuit VCC VCC R1 SDA 10k 7,20 ATMEGA328 SCL VCC GND SW1 1 RST AVCC C1 0.1uF A4(SDA) 27 A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 VCC 1 LM35 A3 26 2 VCC OUT X1 9 XTAL1 GND 16MHz 10 XTAL2 3 GND C2,C3 8,22 22pF รูปท่ี 4.30-9 วงจรท่ีใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป ARDUINO VCC VCC GND A4(SDA) VCC SDA SCL A5(SCL) VCC 1 LM35 A3 2 VCC GND OUT GND 3 รูปที่ 4.30-10 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง การตอ่ วงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 GND25 25 30 30 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 VCC D11 SDA D10 SCL D9 D8 5 LM35 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE ABCDE 1 D13 3V3 REF A0 5 A1 A2 A3 A4 A5 10 A6 A7 5V RST GND 15 VIN รูปที่ 4.30-11 การต่อลงบอร์ดทดลอง
380 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การตอ่ วงจรเพ่อื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.30-12 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองท่ี 3 เขียนโปรแกรมแสดงผลที่อา่ นคา่ จากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริม่ ต้นต่าง ๆ อ่านค่าจากไอซี LM35 คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #define LM35_pin A3 4 LiquidCrystal_I2C lcd(0x3F,16,2); /* 0x27 for PCF8574 and 0x3F for PCF8574A*/ 5 void setup() 6{ 7 lcd.init(); 8 lcd.backlight(); 9 lcd.begin(16, 2); // set LCD size 10 lcd.print(\"Temperature is:\"); 11 lcd.setCursor(13,1); 12 lcd.print(\"'C\"); 13 } 14 void loop() 15 { 16 int adc = analogRead(LM35_pin); 17 float temp = adc*(5.0/1023)*100.0; 18 lcd.setCursor(7,1); 19 lcd.print(temp); 20 delay(500); 21 }
ใบงานท่ี 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 381 ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพม่ิ /ลดอุณหภูมิที่เทอร์มิสเตอร์สังเกตผล วงจรทใ่ี ช้เซนเซอร์เป็ น DS18B20 D1 VCC Peripheral circuit 1N5819 CPU circuit R1 10k 7,20 ATMEGA328 VCC SW1 1 RST AVCC C1 VCC VCC 0.1uF SDA SCL A4(SDA) 27 GND A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND R4 4R.75k VCC 3V3 4.7k 3 DS18B20 VCC 2 DQ VCC X1 9 XTAL1 D8 14 3 DS18B20 GND 16MHz 10 XTAL2 D9 15 2 DQ VCC 1 GND GND 1 8,22 C2,C3 22pF รูปที่ 4.30-13 วงจรท่ีใชไ้ อซี AVR ในการทดลอง กรณีท่ีใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป ARDUINO VCC VCC A4(SDA) GND A5(SCL) VCC SDA SCL R1 VCC 4R.72k VCC 4.7k 3 DS18B20 3 DS18B20 D8 2 VCC 2 VCC D9 DQ DQ GND GND GND 1 1 รูปที่ 4.30-14 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง
382 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 25 25 30 30 GND 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 VCC D11 SDA D10 SCL D9 D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE D S1 8 D S1 8 ABCDE D13 B 20 B 20 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN 1 5 10 15 รูปที่ 4.30-15 การต่อลงบอร์ดทดลอง การต่อวงจรเพอื่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปที่ 4.30-26 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 4 เขียนโปรแกรมแสดงค่าอุณหภูมิที่วดั จากไอซี DS18B20 จานวน 2 ตวั โดยแสดงผลที่จอ LCD ท่ีเช่ือมตอ่ ผา่ นทางโมดูล I2C ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริม่ ต้นต่าง ๆ อ่านคา่ จากไอซี แสดงค่าทอ่ี ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #include <OneWire.h> 4 #include <DallasTemperature.h> 5 OneWire ds_1(8); //sensor 1 on pin D8 6 OneWire ds_2(9); //sensor 2 on pin D9 7 DallasTemperature sensor_1(&ds_1);
ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลที่ LCD I2C กบั เซนเซอร์ตา่ ง ๆ 383 8 DallasTemperature sensor_2(&ds_2); 9 float temp_1; //variable keep temp value 10 float temp_2; //variable keep temp value 11 void temp_read(); 12 LiquidCrystal_I2C lcd(0x3F,16,2); //0x27 for PCF8574 and 0x3F for PCF8574A 13 void setup() 14 { 15 lcd.begin(16, 2); // set LCD size 16 lcd.print(\"Sensor1: 'C\"); 17 lcd.setCursor(0,1); 18 lcd.print(\"Sensor2: 'C\"); 19 sensor_1.begin(); 20 sensor_2.begin(); 21 } 22 void loop() 23 { 24 temp_read(); 25 lcd.setCursor(10,0); 26 lcd.print(temp_1,1); 27 lcd.setCursor(10,1); 28 lcd.print(temp_2,1); 29 delay(500); 30 } 31 void temp_read() 32 { 33 sensor_1.requestTemperatures(); 34 sensor_2.requestTemperatures(); 35 //------------------------------------------ 36 temp_1 = sensor_1.getTempCByIndex(0); //read temp from sensor_1 37 temp_2 = sensor_2.getTempCByIndex(0); //read temp from sensor_2 38 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus (ใช้ Arduino IDE v. 1.6.5 ในการคอมไพล)์ 2. ทดลองดว้ ยวงจรจริง 3. ทดลองใหอ้ ุณหภูมิที่ตวั ไอซีเปลี่ยนแปลงแลว้ สงั เกตผล วงจรทใ่ี ช้เซนเซอร์เป็ น DHT22 D1N15819 VCC Peripheral circuit R1 CPU circuit VCC VCC 10k SDA 7,20 ATMEGA328 SCL SW1 VCC GND 1 RST AVCC C1 0.1uF A4(SDA) 27 A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 X1 VCC DHT22 16MHz 9 XTAL1 D8 14 R4 10 XTAL2 4k7 GND DATA C2,C3 8,22 22pF รูปท่ี 4.30-17 วงจรท่ีใชไ้ อซี AVR ในการทดลอง
รูปท่ี 4.30-20 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน รูปที่ 4.30-19 การต่อลงบอร์ดทดลอง ABCDE F GH I J VCC ARDUINO กรณีท่ีใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป 384 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การต่อวงจรเพอ่ื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 4Rk17 DHT22 VCC VCC D11 D8 DATA 3V3 D10 REF D9 GND A0 D8 5 5 A1 D7 รูปที่ 4.30-18 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง A2 D6 การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง A3 D5 A4 D4 A5 D3 10 10 A6 D2 A7 5V GND RST RST GND 15 VIN D0 D1 15 20 20 A4(SDA) A5(SCL) 25 25 GND VCC SDA SCL 30 30 GND VCC SDA SCL 35 35 40 40 45 45 50 50 55 55 60 60 ABCDE F GH I J
ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 385 การทดลองที่ 5 เขียนโปรแกรมแสดงอุณภูมิและความช้ืนจาก DHT22 ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริ่มต้นต่าง ๆ อ่านค่าจากโมดูล DHT22 แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #include <DHT.h> 4 #define DHTPIN 8 // pin to connect DHT22 5 #define DHTTYPE DHT22 // Type of use DHT11,DHT21,DHT22 6 DHT dht(DHTPIN, DHTTYPE); 7 LiquidCrystal_I2C lcd(0x3F,16,2); //0x27 for PCF8574 and 0x3F for PCF8574A 8 void setup() 9{ 10 lcd.init(); 11 lcd.backlight(); 12 lcd.begin(16, 2); // set LCD size 13 lcd.print(\"Humidity:\"); 14 lcd.setCursor(0,1); 15 lcd.print(\"Temp:\"); 16 dht.begin(); 17 } 18 void loop() 19 { 20 delay(2000); 21 float h = dht.readHumidity(); 22 float t = dht.readTemperature(); 23 if (isnan(h) || isnan(t)) 24 { 25 lcd.clear(); 26 lcd.print(\"Failed read DHT\"); 27 return; 28 } 29 lcd.setCursor(10,0); 30 lcd.print(h); 31 lcd.setCursor(10,1); 32 lcd.print(t); 33 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพม่ิ /ลดอุณหภูมิและความช้ืน สงั เกตผล
386 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] วงจรทใ่ี ช้เซนเซอร์เป็ น Ultasonic D1 VCC Peripheral circuit 1N5819 CPU circuit VCC VCC R1 SDA 10k 7,20 ATMEGA328 SCL VCC GND SW1 1 RST AVCC C1 0.1uF A4(SDA) 27 A5(SCL) 28 USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 X1 9 XTAL1 D9 15 VCC HC-SR04 16MHz 10 XTAL2 D8 14 1 VCC 2 Trig GND 3 Echo 4 GND 8,22 C2,C3 22pF รูปที่ 4.30-21 วงจรท่ีใชไ้ อซี AVR ในการทดลอง กรณีท่ีใช้ Arduino ในการทดลอง ตอ่ วงจรดงั รูป ARDUINO VCC VCC GND A4(SDA) VCC SDA SCL A5(SCL) D9 HC-SR04VCC D8 1 VCC VCC 2 Trig GND Trig 3 Echo Echo 4 GND GND รูปที่ 4.30-22 วงจรที่ใชบ้ อร์ด Arduino ในการทดลอง การตอ่ วงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J 20 20 25 25 30 30GND 35 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 VCC D11 SDA D10 SCL D9 D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 ABCDE HC-SR04 ABCDE 1 D13 3V3 REF A0 5 A1 A2 A3 A4 A5 10 A6 A7 5V RST GND 15 VIN รูปที่ 4.30-23 การต่อลงบอร์ดทดลอง
ใบงานที่ 4.30 การประยกุ ตก์ ารแสดงผลท่ี LCD I2C กบั เซนเซอร์ตา่ ง ๆ 387 การต่อวงจรเพ่อื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปท่ี 4.30-24 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน การทดลองที่ 6 เขียนโปรแกรมวดั ระยะดว้ ย Ultrasonic แสดงผลดว้ ยจอ LCD ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดค่าเริ่มต้นต่าง ๆ อ่านค่าจากโมดูล Ultrasonic แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <Wire.h> 2 #include <LiquidCrystal_I2C.h> 3 #include <Ultrasonic.h> 4 Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN) 5 LiquidCrystal_I2C lcd(0x3F,16,2); /* 0x27 for PCF8574 and 0x3F for 6 PCF8574A*/ 7 void setup() 8{ 9 lcd.init(); 10 lcd.backlight(); 11 lcd.begin(16, 2); // set LCD size 12 lcd.print(\"Length is :\"); 13 lcd.setCursor(13,1); 14 lcd.print(\"cm\"); 15 } 16 void loop() 17 { 18 delay(500); 19 lcd.setCursor(7,1); 20 int distance=ultrasonic.distanceRead(CM); 21 lcd.print(distance); 22 }
388 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปล่ียนแปลงรูปแบบการแสดงผล 7. สรุปผลการปฏบิ ัตงิ าน 8. งานทมี่ อบ มาย 1. ออกแบบโจทยป์ ระยกุ ตใ์ ชง้ านท่ีใชเ้ ซนเซอร์วดั อุณหภูมิและความช้ืน DHT22 แสดงผลการ ทางานที่จอ LCD I2C ARDUINO VCC VCC A4(SDA) GND A5(SCL) VCC SDA SCL DHT22 VCC R1-R4 220 D10 D8 D11 R5 D12 4k7 D13 GND LED1-LED4 รูปที่ 4.30-25 วงจรท่ีใชท้ ดลอง 2. ออกแบบโจทยป์ ระยุกตใ์ ช้งานท่ีใชเ้ ซนเซอร์วดั ระยะทาง Ultrasonic แสดงผลการทางานท่ี จอ LCD I2C VCC ARDUINO VCC GND HC-SR04 VCC A4(SDA) SDA A5(SCL) SCL VCC Trig Echo GND VCC R1-R4 220 1234 D10 D11 D8 D12 LED1-LED4 D9 D13 GND รูปที่ 4.30-26 วงจรท่ีใชท้ ดลอง
ใบงานที่ 4.31 การประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ต่าง ๆ 389 ใบงานที่ 4.31 การประยุกต์การแสดงผลด้วยโมดูล MAX7219 กบั เซนเซอร์ต่าง ๆ 1. จุดประสงค์ทว่ั ไป เพ่ือใหส้ ามารถประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ต่าง ๆ ได้ 2. จุดประสงค์เชิงพฤตกิ รรม 1. บอกวธิ ีประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ต่าง ๆ ได้ 2. บอกข้นั ตอนการต่อวงจรเพ่อื ทดลองบนบอร์ดทดลองได้ 3. ทดสอบการทางานของบอร์ด Arduino ได้ 4. ปฏิบตั ิงานตามใบงานเสร็จทนั เวลาที่กาหนด 3. เคร่ืองมือและอปุ กรณ์ 1. บอร์ดทดลอง Breadboard 830 Point 1 แผน่ 2. อุปกรณ์อิเลก็ ทรอนิกส์ประกอบดว้ ย 4 ตวั 4 ตวั 2.1 Potentiometer 10k 1 ตวั 2.5 LED 3mm 1 ตวั 2.6 ตวั ทา้ นทาน 220 ohm 1 ตวั 2.2 Thermistor NTC 10k 1 ตวั 2.7 ตวั ทา้ นทาน 4.7k 2.8 ตวั ทา้ นทาน 10k 1 เส้น 2.3 IC DS18B20 1 ตวั 1 ชุด 3.5 สายเช่ือมตอ่ USB (Mini) 1 เครื่อง 2.4 IC LM35 1 ตวั 3.6 สายเช่ือมต่อวงจร 3.7 คอมพวิ เตอร์ 3. อุปกรณ์ร่วมอ่ืน ๆ 3.1 บอร์ด Arduino Nano 3.0 1 ตวั 3.2 โมดูลตวั เลข MAX7219 1 ตวั 3.3 โมดูลวดั อุณหภูมิ DHT22 1 ตวั 3.4 โมดูลอลั ตร้าโซนิค HC-SR04 1 ตวั 4. ลาดับข้นั การปฏบิ ตั ิงาน 1. ศึกษาจุดประสงคท์ ว่ั ไป จุดประสงคเ์ ชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวขอ้ ง 2. ดาเนินการตอ่ วงจรลงบอร์ดทดลองตามวงจรท่ีกาหนด 3. เขียนโปรแกรมควบคุมและทดสอบการทางานของวงจร 4. สรุปผลการปฏิบตั ิงาน
390 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] 5. ทฤษฎพี ืน้ ฐาน การประยกุ ตใ์ ชง้ านในใบงานน้ีเป็ นการเปล่ียนเป้าหมายการแสดงผลจากเดิมในใบงานที่ 4.5 ถึง ใบงานท่ี 4.12 ท่ีเป็นการอา่ นค่าจากเซนเซอร์แบบต่าง ๆ แลว้ นาผลมาคานวณ (หรือนามาใชไ้ ดเ้ ลยในบาง ใบงาน) ไปแสดงผลผ่านทางจอคอมพิวเตอร์ผ่านทางการสื่อสารทางพอร์ตอนุกรมซ่ึงการดาเนินการ ดงั กล่าวเป็ นการเขียนโคด้ โปรแกรมเพื่อใชท้ ดสอบผลการทางานกบั เซนเซอร์ต่าง ๆ ในเบ้ืองตน้ ซ่ึงไม่ ตอ้ งต่อตวั แสดงผลอ่ืน ๆ สาหรับใบงานน้ีเป็นการเปลี่ยนเป้าหมายจากการแสดงผลจากจอคอมพิวเตอร์มา แสดงผลที่โมดูลตวั เลข MAX7219 6. วงจรทใ่ี ช้ทดลอง วงจรเพ่ือใช้ทดลองในใบงานเป็ นการทดลองจากเซนเซอร์ท้งั 6 แบบโดยแสดงผลที่โมดูล แสดงผลตวั เลข MAX7219 วงจรที่ใชท้ ดลองมีดงั น้ี 1. วงจรที่ใชเ้ ซนเซอร์เป็นตวั ตา้ นทานปรับคา่ ได้ 2. วงจรที่ใชเ้ ซนเซอร์วดั อุณหภูมิเป็นเทอร์มิสเตอร์ 3. วงจรท่ีใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี LM35 4. วงจรท่ีใชเ้ ซนเซอร์วดั อุณหภูมิเป็นไอซี DS18B20 5. วงจรท่ีใชเ้ ซนเซอร์เป็น DHT22 6. วงจรที่ใชเ้ ซนเซอร์เป็น Ultrasonic วงจรทใี่ ช้เซนเซอร์เป็ นตัวต้านทานปรับค่าได้ D1 VCC Peripheral circuit 1N5819 CPU circuit VCC MAX7219 7-Segment 4-Digit 1R01k 7,20 ATMEGA328 VCC VCC Din SW1 Load 1 RST AVCC Clk GND C1 D11(MOSI) 17 0.1uF D10(SS) 16 VCC 19 D13(SCK) USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND 3V3 A5 28 10k X1 9 XTAL1 16MHz 10 XTAL2 C2,C3 GND 22pF 8,22 รูปท่ี 4.31-1 วงจรท่ีใชไ้ อซี AVR ในการทดลอง
รูปท่ี 4.31-4 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน รูปที่ 4.31-3 การต่อลงบอร์ดทดลอง AB C DE F GH I J GND 5V VCC ARDUINO ใบงานท่ี 4.31 การประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ต่าง ๆ 391 การตอ่ วงจรเพ่อื ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 D11 รูปที่ 4.31-2 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง D11(MOSI) กรณีที่ใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป 3V3 D10 การตอ่ วงจรไมโครคอนโทรลเลอร์ Arduino ที่ใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง D10(SS) REF D9 A0 D8 5 D13(SCK) 5 A1 D7 A2 D6 A3 D5 A4 D4 A5 D3 10 10 A6 D2 A7 5V GND RST RST GND 15 VIN D0 D1 15 20 20 A5 10k 25 25 30 30 VCC MAX7219 7-Segment 4-Digit VCC VCC GND VCC DIN Din CS Load CL K Clk GND 35 35 40 40 45 45 50 50 55 55 60 60 AB C DE F GH I J
392 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การทดลองท่ี 1 เขียนโปรแกรมแสดงค่าท่ีอา่ นไดจ้ ากโพเทนธิโอมิเตอร์ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริม่ ต้นต่าง ๆ อ่านคา่ จาก POT แสดงค่าทอ่ี ่านได้ แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <HCMAX7219.h> /* D10 -> CS pin */ 2 #include \"SPI.h\" 3 #define POT 5 /*Sets the intensity of the LED 0 to 15 */ 4 HCMAX7219 HCMAX7219(10); 5 void setup() /* Clear the output buffer */ 6{ /* Write value to the output buffer */ 7 HCMAX7219.Intensity(10, 0); /* Send the output buffer to the display */ 8} 9 void loop() 10 { 11 int adc=analogRead(POT); 12 HCMAX7219.Clear(); 13 HCMAX7219.print7Seg(adc,4); 14 HCMAX7219.Refresh(); 15 delay(100); 16 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเปล่ียนแปลงคา่ โพเทนธิโอมิเตอร์แลว้ สงั เกตผล วงจรทใี่ ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นเทอร์มสิ เตอร์ D1 VCC Peripheral circuit 1N5819 CPU circuit VCC MAX7219 7-Segment 4-Digit R1 7,20 ATMEGA328 VCC 10k VCC Din Load SW1 1 RST AVCC Clk GND C1 D11(MOSI) 17 0.1uF D10(SS) 16 VCC 19 D13(SCK) R4 10k USB to UART (TTL Level) R2,R3 3 1k 2 NTC DTR T Thermistor RXD D1(TXD) TXD D0(RXD) 10k +5V GND 3V3 A5 28 X1 9 XTAL1 16MHz 10 XTAL2 C2,C3 GND 22pF 8,22 รูปที่ 4.31-5 วงจรที่ใชไ้ อซี AVR ในการทดลอง
รูปท่ี 4.31-8 การต่อวงจรทดลองในโปรแกรมจาลองการทางาน รูปท่ี 4.31-7 การต่อลงบอร์ดทดลอง AB C DE F GH I J รูปท่ี 4.31-6 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง GND 5V VCC ARDUINO ใบงานท่ี 4.31 การประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ตา่ ง ๆ 393 การตอ่ วงจรเพือ่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus 1 D13 D12 1 การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง D11 D11(MOSI) กรณีที่ใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป 3V3 D10 D10(SS) REF D9 A0 D8 5 D13(SCK) 5 A1 D7 A2 D6 A3 D5 A4 D4 A5 D3 10 10 A6 D2 A7 5V GND RST RST GND 15 VIN D0 D1 15 20 20 VCC 25 25 R1 10k 30 30 A5 VCC MAX7219 7-Segment 4-Digit VCC NTC GND T Thermistor VCC DIN Din CS 10k Load CL K Clk GND 35 35 40 40 45 45 50 50 55 55 60 60 AB C DE F GH I J
394 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การทดลองที่ 2 เขียนโปรแกรมแสดงผลที่อ่านค่าจากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริม่ ต้นต่าง ๆ อ่านคา่ จาก NTC คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <HCMAX7219.h> 2 #include \"SPI.h\" 3 #define NTC A5 4 double Thermistor(int RawADC) ; 5 HCMAX7219 HCMAX7219(10); /* D10 -> CS pin */ 6 void setup() 7{ 8 HCMAX7219.Intensity(10, 0); /*Sets the intensity of the LED 0 to 15 */ 9} 10 void loop() 11 { 12 float Temp=Thermistor(analogRead(NTC)); 13 HCMAX7219.Clear(); /* Clear the output buffer */ 14 HCMAX7219.print7Seg(Temp*10,1,5); /* Write value to the output buffer */ 15 HCMAX7219.print7Seg(\"'C\",2); /* Write \"'C\" to the output buffer */ 16 HCMAX7219.Refresh(); /* Send the output buffer to the display */ 17 delay(100); 18 } 19 double Thermistor(int RawADC) 20 { 21 double Cal; 22 Cal = log(10000.0/((1024.0/RawADC-1))); 23 Cal = 1/(0.001129148+(0.000234125 + (0.0000000876741 * Cal * Cal))* Cal); 24 Cal = Cal - 273.15; // Convert Kelvin to Celcius 25 return Cal; 26 } ทดลองการทางาน 1. จาลองการทางานดว้ ยโปรแกรม Proteus 2. ทดลองดว้ ยวงจรจริง 3. ทดลองเพ่มิ /ลดอุณหภูมิที่เทอร์มิสเตอร์สงั เกตผล
ใบงานท่ี 4.31 การประยกุ ตก์ ารแสดงผลดว้ ยโมดูล MAX7219 กบั เซนเซอร์ตา่ ง ๆ 395 วงจรทใ่ี ช้เซนเซอร์วดั อณุ ภูมเิ ป็ นไอซี LM35 D1 VCC Peripheral circuit 1N5819 CPU circuit VCC MAX7219 7-Segment 4-Digit R1 7,20 ATMEGA328 VCC 10k VCC Din Load SW1 1 RST AVCC Clk GND C1 D11(MOSI) 17 0.1uF D10(SS) 16 19 D13(SCK) USB to UART (TTL Level) R2,R3 3 1k 2 DTR RXD D1(TXD) TXD D0(RXD) +5V GND VCC 3V3 1 LM35 A5 28 2 VCC OUT GND X1 3 16MHz 9 XTAL1 C2,C3 10 XTAL2 22pF GND 8,22 รูปท่ี 4.31-9 วงจรที่ใชไ้ อซี AVR ในการทดลอง กรณีที่ใช้ Arduino ในการทดลอง ต่อวงจรดงั รูป VCC 5V ARDUINO VCC MAX7219 7-Segment 4-Digit D11(MOSI) D10(SS) VCC Din D13(SCK) Load Clk GND VCC 1 LM35 A5 2 VCC GND OUT GND 3 รูปท่ี 4.31-10 วงจรท่ีใชบ้ อร์ด Arduino ในการทดลอง การต่อวงจรไมโครคอนโทรลเลอร์ Arduino ท่ีใชบ้ อร์ดโมดูล Arduino สาเร็จรูปลงบอร์ดทดลอง F GH I J VCC20 2025 2530 3035 35 40 40 45 45 50 50 55 55 60 60 F GH I J D12 1 GND D11 DIN D10 CS D9 LM35 CLK D8 5 D7 D6 D5 D4 D3 10 D2 GND RST D0 D1 15 AB C DE AB C DE 1 D13 3V3 REF A0 5 A1 A2 A3 A4 A5 10 A6 A7 5V RST GND 15 VIN รูปที่ 4.31-11 การต่อลงบอร์ดทดลอง
396 เรียนรู้และลองเลน่ Arduino เบ้ืองตน้ [ครูประภาส สุวรรณเพชร] การตอ่ วงจรเพอื่ ทดลองดว้ ยการจาลองการทางานดว้ ยโปรแกรม Proteus รูปที่ 4.31-12 การตอ่ วงจรทดลองในโปรแกรมจาลองการทางาน การทดลองท่ี 3 เขียนโปรแกรมแสดงผลท่ีอา่ นคา่ จากเทอร์มิสเตอร์แลว้ คานวนเป็นอุณหภูมิ ผงั งาน จากโจทยส์ ามารถเขียนเป็นผงั งานไดด้ งั น้ี START กา นดคา่ เริ่มต้นต่าง ๆ อ่านค่าจากไอซี LM35 คานวณ แสดงผล แปลงผงั งานเป็ นโปรแกรม จากผงั งานสามารถเขียนเป็นโคด้ โปรแกรมควบคุม Arduino 1 #include <HCMAX7219.h> 2 #include \"SPI.h\" 3 #define LM35_pin A5 4 HCMAX7219 HCMAX7219(10); /* D10 -> CS pin */ 5 void setup() 6{ 7 HCMAX7219.Intensity(10, 0); /*Sets the intensity of the LED 0 to 15 */ 8} 9 void loop() 10 { 11 int adc = analogRead(LM35_pin); 12 float temp = adc*(5.0/1023)*100.0; 13 HCMAX7219.Clear(); /* Clear the output buffer */ 14 HCMAX7219.print7Seg(temp*10,1,5); /* Write value to the output buffer */ 15 HCMAX7219.print7Seg(\"'C\",2); /* Write \"'C\" to the output buffer */ 16 HCMAX7219.Refresh(); /* Send the output buffer to the 17 display */ 18 delay(100); 19 }
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445