묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
111번째 강의까지 진행했는데, 온도 정보 받아오는 게 안돼요.
안녕하세요 제가 온도 센서와 FND 센서 서로 충돌 안되게 쓰레드 작업하는 걸 따라하고 있는데요, 강사님께서 따로 ds18b20의 소스를 한 디바이스를 위해 단순화 한 것을 똑같이 따라했는데 영상에서는 온도 정보가 들어오는데 저는 안 들어오는 게 확인 돼서 문의드려요~ 구체적으로 소스 디버깅 해봤을 때, 크게 문제되는 것이 있었는데,ds18b20.c 에 있는 DS18B20_Read(&OneWire, temperSensor.Address, &temperSensor.Temperature); 에서 DS18B20_Read()에 가보면 for (i = 0; i < 9; i++){data[i] = OneWire_ReadByte(OneWire);} 가 있는데,여기서 for 문이 다 돌면 최종적으로 data[0~8]에 모두 255 값이 들어갑니다.. ai한테 물어보기도 했는데 255가 모드 들어가는 것은 DS18B20이 응답하지 않는 것이라고 하네요..ai로 물어가보면서 해답을 찾아보려고 했는데, 결과적으로는 단순화한 소스에서 ds18b20 응답 하게 하는 부분(OneWire?)의 세팅에 문제가 있다라는 정도 인데..그렇다고 친다 해도 강사님 소스로는 되는데 제 소스는 안되는게 이해가 안됩니다..그리고 원래 단순화하기 이전 소스로는 온도 정보가 잘 들어왔어서 장비 문제는 아닌 것 같아요.혹시 소스가 필요하시다면 이메일로 보내드릴 수도 있습니다!
-
미해결
아두이노 온습도센서 lcd nan출력
제가 혹시 몰라서 밑에 링크 남겨요~ [아두이노] 온/습도 LCD에 표시하기 (tistory.com) 제가 코드를 저기 있는대로 라이브러리부터 회로까지 하나도 안틀리고 진짜 똑같이 했는데 도대체가 왜 lcd에는 TEMP: nan C HUMIDITY : 0% 가 계속 떠요. 진짜 5일째 이것만 붙잡고있는데 이제는 미쳐버리겠습니다 진짜 도와주세요ㅠㅠ 밑에는 코드입니다. #include <DHT.h> #define DHTPIN 2 // 습도센서 Signal 선 연결 #define DHTTYPE DHT22 // 습도센서 종류: DHT22 #include <Wire.h> #include <LiquidCrystal_I2C.h> DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27,16,2); // LCD주소: 0x27 또는 0x3F float hum; // 습도값 저장 변수 float temp; // 온도값 저장 변수 void setup() { Serial.begin(9600); dht.begin(); delay(2000); lcd.init(); lcd.backlight(); lcd.setCursor(2,0); delay(5000); lcd.clear(); } void loop() { hum = dht.readHumidity();//온도값 읽기 temp= dht.readTemperature();//습도값 읽기 Serial.print("HUMIDITY: "); // "HUMIDITY:" 출력 Serial.print(hum,0);// 습도 값 소수점 이하 자리 없음 Serial.print(" %, TEMPERATURE: "); //"%"(습도단위) "TEMPERATURE:" 출력 Serial.print(temp, 1);//온도값은 소수점 이하 1자리까지 표시 Serial.println(" C"); //"C" 온도 단위 표시 lcd.setCursor(0,0); // LCD Cursor 원점 lcd.print("TEMP:"); // LCD에 "temp" 표시 float t = temp; // 온도값을 t에 할당 lcd.print(t,1); // 온도값 LCD로 출력 lcd.print(" C"); // 온도 단위 표시 lcd.setCursor(0,1); //LCD 커서 줄바꿈 lcd.print("HUMIDITY:"); //LCD 2번째 줄에 "humidity:" 출력 int h = hum; //습도값 h에 할당 lcd.print(h); //습도값 LCD에 출력 lcd.print(" % "); //습도 단위 출력 lcd.println(); delay(2000); // 샘플링 간격 2초 }