Page 43 - เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น
P. 43

เอกสารประกอบการเรียนวิชาไมโครคอนโทรลเลอร์เบื้องต้น    10



                              unsigned long t1, t0 = micros();

                        while (1) {
                              new_state = digitalRead( DATA_PIN );

                              if ( state != new_state ) {

                              t1 = micros();
                       if ( (state == HIGH) && (i > 2) ) {

                              byte b = ( (t1-t0) > 40 ) ?  1 : 0;
                              data[j/8] <<= 1;

                              data[j/8] |= b;
                              j++;

                              }

                              i++;
                              state = new_state;

                              t0 = t1;

                              count = 0;
                       } else {

                              count++;

                       if ( count > 1000 ) // timeout
                               break;

                              }
                              }

                              byte check_sum = 0x00;

                       for (byte x=0; x < 4; x++) {
                              check_sum += data[x];

                              }
                       if ( check_sum != data[4] ) {

                              Serial.println( "CHECKSUM error" );

                       } else {
                              Serial.print( ((data[0] << 8) | data[1])/10.0 );

                              Serial.print( "%RH, " );

                              Serial.print( ((data[2] << 8) | data[3])/10.0 );
                              Serial.println( " C" ); } delay(2500);}





               หน่วยที่ 10  การใช้งาน Arduino กับไอซีวัดอุณภูมิและโมดูลตรวจจับสัญญาณอินพุต                 เรียบเรียงโดยครูทันพงษ์  ภู่รักษ์
   38   39   40   41   42   43   44   45   46   47   48