BASIC4MCU | 질문게시판 | 아두이노 DS18S20 질문
페이지 정보
작성자 master 작성일2018-09-01 08:42 조회6,454회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2868
본문
이렇게 두가지 장치를 사용해서 온도 값을 시리얼로 찍어내는데 자꾸 -1000.00 값만 나옵니다.코드보고 뭐가 잘못됬는지 확인 해주세요#includeint DS18S20_Pin = 4; //온도센서를 2번 핀으로 연결OneWire ds(DS18S20_Pin); //2번 핀과 연결되 OneWire 객체 생성void setup(){Serial.begin(9600); // 시리얼 통신, 속도는 9600}void loop(){float temperature = getTemp(); //온도 측정 후 변수에 저장Serial.println(temperature);delay(1000);}float getTemp(){byte data[12];byte addr[8];if ( !ds.search(addr)) {ds.reset_search();return -1000;}if ( OneWire::crc8( addr, 7) != addr[7]) {Serial.println("CRC is not valid!");return -1000;}if ( addr[0] != 0x10 && addr[0] != 0x28) {Serial.print("Device is not recognized");return -1000;}ds.reset();ds.select(addr);ds.write(0x44,1); //변환byte present = ds.reset();ds.select(addr);ds.write(0xBE);for (int i = 0; i < 9; i++) {data[i] = ds.read(); //Scratchpad 읽음}ds.reset_search();byte MSB = data[1];byte LSB = data[0];float tempRead = ((MSB << 8) | LSB);float TemperatureSum = tempRead / 16;return TemperatureSum;}//
댓글 0
조회수 6,454등록된 댓글이 없습니다.