DHT11 and Nokia 5110 - Converting From int to char*

Hello, I did a search on my problem and couldn't find a solution to my problem. I am using the following libraries:

Arduino Playground - PCD8544 - for the Nokia 5110
Arduino Playground - DHT11Lib - for DHT11

I have both the LCD and the temperature sensor working correctly, separately. The DHT11 example prints the result to the Serial Monitor in the Arduino IDE. I would like it to print to the LCD.

The function to write text to the LCD is expecting type char*. The DHT11 library returns the temperature and humidity as an integer. I have no problem converting from int to char, however, the function is expecting data type char*.

I have tried a few different solutions found on google and this board, with no success.

void LcdString(char *characters)
{
  while (*characters)
  {
    LcdCharacter(*characters++);
  }
}
LcdString("Humidity (%): ");
LcdString((char)DHT11.humidity, 2);

invalid conversion from char to char*

You need to convert your number into a string. Something like this:

LcdString("Humidity (%): ");

char buf [10];
sprintf (buf, "%i", DHT11.humidity);
LcdString(buf);

Or use itoa:

LcdString("Humidity (%): ");

char buf [10];
LcdString(itoa (DHT11.humidity, buf, 10));  // convert to string, base 10

Hi there,

I am trying to get the DHT11 displayed on the Nokia 5110, did you manage to get it working? If so is there any chance you could let me have the code. I am an A level student, and I am trying to make a temperature and humidity controller for a Vivarium. The Vivarium is actually my project, but I want o add to it with the controller, but I have not covered coding as this is degree level work. I would be extremely grateful if you could forward the code, and the pin connections, so I can confirm I have wired it up correctly. Many thanks for your help. Lizardman.

If so is there any chance you could let me have the code.

What was wrong with Nick's suggestions? What have YOU tried?

I used this code with my LM35 Temperature sensor , it successfully converted int to char and it displayed the serial output on the nokia 5110 lcd ,but the problem it is displaying completely different output which much varies with the expected serial output,can't found out the solution... This is the code I used

int RST=12;
int CE=11;
int DC=10;
int DIN=9;
int CLK=8;
int tempPin=1;

#include <Arduino.h>
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ?
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f ?
};

void LcdWriteString(char *characters)
{
while(*characters) LcdWriteCharacter(*characters++);
}

void LcdWriteCharacter(char character)
{
for(int i=0; i<5; i++) LcdWriteData(ASCII[character - 0x20]);

  • LcdWriteData(0x00);*
    }
    void LcdWriteData(byte dat)
    {

  • digitalWrite(DC, HIGH); //DC pin is low for commands*

  • digitalWrite(CE, LOW);*

  • shiftOut(DIN, CLK, MSBFIRST, dat); //transmit serial data*

  • digitalWrite(CE, HIGH);*
    }
    void LcdXY(int x, int y)
    {

  • LcdWriteCmd(0x80 | x); // Column.*

  • LcdWriteCmd(0x40 | y); // Row.*
    }
    void LcdWriteCmd(byte cmd)
    {

  • digitalWrite(DC, LOW); //DC pin is low for commands*

  • digitalWrite(CE, LOW);*

  • shiftOut(DIN, CLK, MSBFIRST, cmd); //transmit serial data*

  • digitalWrite(CE, HIGH);*
    }
    void setup()
    {

  • Serial.begin(9600);*

  • pinMode(RST, OUTPUT);*

  • pinMode(CE, OUTPUT);*

  • pinMode(DC, OUTPUT);*

  • pinMode(DIN, OUTPUT);*

  • pinMode(CLK, OUTPUT);*

  • digitalWrite(RST, LOW);*

  • digitalWrite(RST, HIGH);*

  • LcdWriteCmd(0x21); // LCD extended commands*

  • LcdWriteCmd(0xBF); // set LCD Vop (contrast)*

  • LcdWriteCmd(0x04); // set temp coefficent*

  • LcdWriteCmd(0x14); // LCD bias mode 1:40*

  • LcdWriteCmd(0x20); // LCD basic commands*

  • LcdWriteCmd(0x0C); // LCD normal video*

  • for(int i=0; i<504; i++) LcdWriteData(0x00); // clear LCD*

}
void loop()
{

  • int temp=analogRead(tempPin);*
  • float reading;*
    _ reading=temp*0.48828125;_
  • Serial.println(reading);*
  • char buf [10];*
    sprintf(buf, "%i", reading);
    LcdXY(1,1);
    LcdWriteString(buf);
    delay(1000);
    }
    [/quote]
  float reading;
  reading=temp*0.48828125;
  Serial.println(reading);
  char buf [10];
 sprintf(buf, "%i", reading);

The format specified for a float is NOT i.

sprintf() doesn't support floats. dtostrf() does.