정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

학교 졸작인데 막혔어요 도움좀 주세요. 아두이노 부화기 제작하는 건데....
용가리 | 2020-10-04

#include <SHT1x.h>
#include "U8glib.h"

U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);    // SPI Com: SCK = 13, MOSI = 11, CS = 10, CD = 9, RST = 8

#define ON 1
#define OFF 0
#define TARGET_TEMP 30.0     /* 부화기 설정 온도 */
#define ALPHA 0.5            /* 38.5 ~ 37.5 도 에서 동작 하도록 함 */

const int light = 12;        /* 전구는 아두이노 12번 포트를 사용 */

float Celsius = 0;
float Fahrenheit = 0;
float humidity = 0;
 
SHT1x sht15(A4, A5);

int VCC = A3;
int GND = A2;

void setup(void)
{
 Serial.begin(9600); 
 pinMode(light, OUTPUT);    /* 13번 포트 출력모드로 설정 */
 digitalWrite(light, ON);   /* 백열 전구를 ON */

 pinMode(VCC, OUTPUT);
 pinMode(GND, OUTPUT);

 digitalWrite(VCC, HIGH);
 digitalWrite(GND, LOW);

 u8g.setContrast(0); // Config the contrast to the best effect
                     // 최상의 효과를 위해 대비 구성
 u8g.setRot180(); // rotate screen, if required
                  // 필요한 경우 화면 회전
 // set SPI backup if required
 // 필요한 경우 SPI 백업 설정
 u8g.setHardwareBackup(u8g_backup_avr_spi);
  
 // assign default color value
 // 기본 색상 값 할당
 if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {    
   u8g.setColorIndex(255);     // white 흰색  
 }

 else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
   u8g.setColorIndex(3);         // max intensity 최대 강도
 }

 else if ( u8g.getMode() == U8G_MODE_BW ) {
   u8g.setColorIndex(1);         // pixel on 픽셀 켜기
 }

 else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
   u8g.setHiColorByRGB(255,255,255);
 }
}

void loop(void)
{
 readSensor();
 if(Celsius > TARGET_TEMP+ALPHA)
        digitalWrite(light, OFF);
    else if (Celsius < TARGET_TEMP-ALPHA)
        digitalWrite(light, ON);
 
 // picture loop 사진 루프
  u8g.firstPage(); 
  do {
    draw();
  }
  while( u8g.nextPage() );

  // rebuild the picture after some delay
  // 약간의 지연 후 그림을 다시 작성
 printOut();
 delay(1000);
}

void readSensor()
{
 Celsius = sht15.readTemperatureC();
 Fahrenheit = sht15.readTemperatureF();
 humidity = sht15.readHumidity(); 
}

void printOut()
{
 Serial.print(" Temp = ");
 Serial.print(Fahrenheit);
 Serial.print("F, ");
 Serial.print(Celsius);
 Serial.println("C");
 Serial.print(" Humidity = ");
 Serial.print(humidity); 
 Serial.println("%");
}

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here 
  // 전체 화면을 다시 그리는 그래픽 명령을 여기에 배치해야합니다
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 0, 10);
  u8g.print("temperature : ");
  u8g.print(Celsius);
  u8g.drawStr( 0, 40);
  u8g.print("humidity : ");
  u8g.print(humidity);
}

 

 

결과

C:\Users\lg\Documents\Arduino\sketch_oct04b\sketch_oct04b.ino: In function 'void draw()':

sketch_oct04b:105:21: error: no matching function for call to 'U8GLIB_NHD_C12864::drawStr(int, int)'

   u8g.drawStr( 0, 10);

                     ^

In file included from C:\Users\lg\Documents\Arduino\sketch_oct04b\sketch_oct04b.ino:2:0:

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:169:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const char*)

     u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); }

                ^~~~~~~

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:169:16: note:   candidate expects 3 arguments, 2 provided

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:199:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const __FlashStringHelper*)

     u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); }

                ^~~~~~~

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:199:16: note:   candidate expects 3 arguments, 2 provided

sketch_oct04b:108:21: error: no matching function for call to 'U8GLIB_NHD_C12864::drawStr(int, int)'

   u8g.drawStr( 0, 40);

                     ^

In file included from C:\Users\lg\Documents\Arduino\sketch_oct04b\sketch_oct04b.ino:2:0:

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:169:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const char*)

     u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); }

                ^~~~~~~

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:169:16: note:   candidate expects 3 arguments, 2 provided

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:199:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const __FlashStringHelper*)

     u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); }

                ^~~~~~~

C:\Users\lg\Documents\Arduino\libraries\U8glib/U8glib.h:199:16: note:   candidate expects 3 arguments, 2 provided

exit status 1

no matching function for call to 'U8GLIB_NHD_C12864::drawStr(int, int)'

 

이 리포트는 파일 -> 환경설정에 "컴파일중 자세한 출력보이기"를
활성화하여 더 많은 정보를
보이게 할 수 있습니다.

 

프로필사진

판다마니아 2020-10-14 09:34:04

u8g.drawStr 함수의 사용법이 잘못되었습니다.

 

drawStr(가로, 세로, 문장) 으로 출력될 문장이 끝 변수에 추가로 들어가야합니다.

이전글   |    앱인벤터 블루투스 통신을 빠르게 하기. 2020-09-29
다음글   |    DFplayer mini mp3 작동이 안됩니다. 2020-10-07