Page 46 - เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น
P. 46
เอกสารประกอบการเรียนวิชาไมโครคอนโทรลเลอร์เบื้องต้น 13
รูปที่ 10.12 ช่วง LOW และ HIGH ของ Response Bit
(ที่มา www.Cpre.kmutnb.ac.th/esl/learning/index.php?article)
โปรแกรมที่ 10.2 Arduino Sketch 2
วิธีสร้างอินเทอร์รัพท์ EINT0 และเขียน ISR (Interrupt Service Routine) เพื่อใช้ในการอ่านข้อมูลที่ถูกส่ง
มาจากไอซี DHT22
Sourcecode: dht22_eint0_reading.ino
// Author: RSP @KMUTNB
// Date: 22-April-2014
// Target Board: Arduino Uno (ATmega328P, 5V, 16MHz)
// Arduino IDE: version 1.0.5
// Description:
// This Arduino Sketch demonstrates how to read data from DHT22 (AM2302)
// -- a digital relative humidity and temperature sensor manufactured by
// Aosong Electronics Co.,Ltd.
// It utilizes the EINT0 interrupt and the corresponding ISR to read
// data bits from the IC after sending the start bit.
const byte DATA_PIN = 2; // connected to the DATA pin of DHT22 (AM2302)
volatile boolean flag = false;
volatile uint8_t data[5];
volatile uint8_t bit_count = 0;
void eint_isr() { // ISR for EINT0
static uint32_t tH, tL = 0L;
if ( digitalRead( DATA_PIN ) ) { // HIGH
หน่วยที่ 10 การใช้งาน Arduino กับไอซีวัดอุณภูมิและโมดูลตรวจจับสัญญาณอินพุต เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์