Page 80 - เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น
P. 80
เอกสารประกอบการเรียนวิชาไมโครคอนโทรลเลอร์เบื้องต้น 47
attachInterrupt( 0, eint_isr, CHANGE ); // D2 pin (EINT0)
Serial.begin( 115200 );
delay(1000);
}
void writeOutput( byte value ) { // write one byte
Wire.beginTransmission( I2C_SLAVE_ADDR );
Wire.write( value );
Wire.endTransmission();
}
byte readInput( void ) { // read one byte
byte data = 0xff;
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 {
หน่วยที่ 10 การใช้งาน Arduino กับไอซีวัดอุณภูมิและโมดูลตรวจจับสัญญาณอินพุต เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์