Page 65 - เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น
P. 65
เอกสารประกอบการเรียนวิชาไมโครคอนโทรลเลอร์เบื้องต้น 32
Wire.requestFrom( I2C_SLAVE_ADDR, 1 );
delayMicroseconds(4);
if ( Wire.available() ) {
data = Wire.read();}
return data;
}
uint16_t read_ultrasonic_sensor( int pin ) {
digitalWrite( LED_PIN, HIGH);
writeOutput( 0xF0 | (1 << pin) );
writeOutput( 0xF0 );
pulse_width = 0;
while ( pulse_width == 0 ) {} // wait until pulse_width > 0
digitalWrite( LED_PIN, LOW );
return DURATION_TO_DISTANCE( pulse_width );
}
void loop() {
for (int i=0; i < 2; i++ ) {
dist_mm = read_ultrasonic_sensor( i );
if ( dist_mm > MAX_DISTANCE_IN_MM ) {
Serial.println( "Out of range." );
} else {
sprintf( sbuf, "Sensor %d, %d.%1d cm", i, (dist_mm/10), (dist_mm%10) );
Serial.println( sbuf );
}
delay(5);
}
delay( 250 );
}
volatile uint32_t timestamp;
void eint_isr() { // ISR for Ext. Interrupt
timestamp = micros(); // read the timestamp (in microseconds)
if ( digitalRead( ECHO_PIN ) == LOW ) {
หน่วยที่ 10 การใช้งาน Arduino กับไอซีวัดอุณภูมิและโมดูลตรวจจับสัญญาณอินพุต เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์