Вывод показаниq датчика DHT22 на экран Nokia LCD 5110
- Войдите на сайт для отправки комментариев
Задача:
1. Вывести показания датчика DHT22 на экран Nokia LCD 5110
Оборудование:
2. Arduino Nano V3.0 ATmega328
3. DHT22
4. Nokia LCD 5110
Решено:
Датчик подключен, и выбрасывает показания в COM порт.
Экран подключен, и показывает отправленный на него текст.
Ошибка:
Проблема с отображением значений переменнох «t» и «h» на экран.
Ошибка в компиляторе,
DHT22_LCD_5110.ino: In function 'void loop()':
DHT22_LCD_5110:221: error: cannot convert 'float' to 'char*' for argument '1' to 'void LcdString(char*)'
Код программы:
// 27.01.2013 DHT22 + NOKIA LCD 5110
//--> DHT22
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
//--
//--> LCD 5110
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3
#define LCD_C LOW
#define LCD_D HIGH
int count=0;
char dat[4];
char disp_tab[]={'0','1','2','3','4','5','6','7','8','9'};
#define LCD_X 84
#define LCD_Y 48
char buf[72]="A_simple_example_of_interfacing_with_the_84_x_48_pixel_Nokia_3310_LCD!!";
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 LcdCharacter(char character)
{
LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++)
{
LcdWrite(LCD_D, ASCII[character - 0x20][index]);
}
LcdWrite(LCD_D, 0x00);
}
void LcdClear(void)
{
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
LcdWrite(LCD_D, 0x00);
}
}
void LcdInitialise(void)
{
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x21 ); // LCD Extended Commands.
LcdWrite(LCD_C, 0xB1 ); // Set LCD Vop (Contrast).
LcdWrite(LCD_C, 0x04 ); // Set Temp coefficent. //0x04
LcdWrite(LCD_C, 0x14 ); // LCD bias mode 1:48. //0x13
LcdWrite(LCD_C, 0x0C ); // LCD in normal mode.
LcdWrite(LCD_C, 0x20 );
LcdWrite(LCD_C, 0x0C );
}
void LcdString(char *characters)
{
while (*characters)
{
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data)
{
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
void gotoXY(int x, int y)
{
LcdWrite( 0, 0x80 | x); // Column.
LcdWrite( 0, 0x40 | y); // Row.
}
void setup()
{
//DHT22
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
//--
// ------
analogReference(DEFAULT);
LcdInitialise();
LcdClear();
LcdString("- - TEST - -"); // line 0
gotoXY(0, 2);
LcdString("++++++++++++"); // line 2
LcdClear();
// LcdString(buf);
}
void loop(){
//DHT22
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
delay(2000);
}
//---
delay(300);
gotoXY(0, 0);
LcdString("----TEMP----"); // line 0
delay(300);
gotoXY(0, 2);
LcdString(t); // Линия 2 экрана, отображение Температуры с датчика
}
Ругается на 221 строчку кода
Я так понимаю что проблема в несовместимости значений переменных 'float' и 'char*'
И значение датчика надо куда то поместить промежуточно, и уже потом отправить его на экран.
Ответа не нашел поиском.
диагностировали правильно :). Теперь осталось погуглить что-то типа "преобразование типов", "преобразовать число в строку" и т.п.
Аналогичная проблема , хотел перейти от WH1602 к LCD т.к информации можно вывести больше.
Из примеров подключения нашел подобный код , переделал LcdCharacter() для понимания русского языка (т.к там по 2 байта).
проверил , текст выводит обрадовался и отложил arduino до лучших времён ( когда пригодится).
Настало время для простого минитеста (поделки ) нужно было считать несколько аналоговых выводов(напряжение,ток итд) и вывести их на дисплей. А не тут то было , значения в float а функция хочет массив с char.
и получаем соответсвенно такуюже ошибку как и у топикстартера .
для примера попробывал просто создать строковую переменную и отдать в функцию , строковые данные также не принимает .
stringOne = String("Sensor "); stringTwo = String("value"); stringOne += stringTwo; stringOne += " for input "; stringOne += 'A'; stringOne += 0; LcdString(stringOne);error: cannot convert 'String' to 'char*' for argument '1' to 'void LcdString(char*)'
как быть ? как изменить LcdString() что бы она хавала всё подряд ?
void LcdString(char *characters) { while (*characters) { LcdCharacter(*characters++); } }Либо вы отказываетесь от использования String в пользу string, либо перед тем как скормить функции LcdString(); строку переводите в массив символов, прочитав описание класса String и воспользовавшись его методами toCharArray() и length().
спасибо за быстрый ответ , не стал сильно ждать решил еще порыскать инет .
отыскал драйвер (библиотеку ) на PCD8544 , с примером термометра , там немного подругому сделанно , но все строки и переменые фоспринимает как должное , естественное свою хотелку быстро переписал под эту библиотеку , успешно вывел свои показания на дисплей.
Но есть одно как всегда НО! Русский язык как всегда отсутсвует.
Думаю у вас есть подобная библиотека , вот задумал надо бы её расширить для понимания и ненадо городить с ошибками которые выше.
Для примера как выше расширял вот таким методом.
static byte dbit; /* * Таблица для отображения символов (ASCII[0x20-0x7F] + CP1251[0xC0-0xFF] = всего 160 символов) */ static const byte ASCII[][5]= { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x20 32 { 0x00, 0x00, 0x5F, 0x00, 0x00 }, // ! 0x21 33 { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 0x22 34 { 0x14, 0x7F, 0x14, 0x7F, 0x14 }, // # 0x23 35 { 0x24, 0x2A, 0x7F, 0x2A, 0x12 }, // $ 0x24 36 { 0x4C, 0x2C, 0x10, 0x68, 0x64 }, // % 0x25 37 { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & 0x26 38 { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' 0x27 39 { 0x00, 0x1C, 0x22, 0x41, 0x00 }, // ( 0x28 40 { 0x00, 0x41, 0x22, 0x1C, 0x00 }, // ) 0x29 41 { 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * 0x2A 42 { 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + 0x2B 43 { 0x00, 0x00, 0x50, 0x30, 0x00 }, // , 0x2C 44 { 0x10, 0x10, 0x10, 0x10, 0x10 }, // - 0x2D 45 { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . 0x2E 46 { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / 0x2F 47 { 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 0x30 48 { 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 0x31 49 { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 0x32 50 { 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 0x33 51 { 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 0x34 52 { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 0x35 53 { 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 0x36 54 { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 0x37 55 { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 0x38 56 { 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 0x39 57 { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : 0x3A 58 { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; 0x3B 59 { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < 0x3C 60 { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = 0x3D 61 { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > 0x3E 62 { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? 0x3F 63 { 0x32, 0x49, 0x79, 0x41, 0x3E }, // @ 0x40 64 { 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A 0x41 65 { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B 0x42 66 { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C 0x43 67 { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D 0x44 68 { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E 0x45 69 { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F 0x46 70 { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G 0x47 71 { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H 0x48 72 { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I 0x49 73 { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J 0x4A 74 { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K 0x4B 75 { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L 0x4C 76 { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M 0x4D 77 { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N 0x4E 78 { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O 0x4F 79 { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P 0x50 80 { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q 0x51 81 { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R 0x52 82 { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S 0x53 83 { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T 0x54 84 { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U 0x55 85 { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V 0x56 86 { 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W 0x57 87 { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X 0x58 88 { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y 0x59 89 { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z 0x5A 90 { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 0x5B 91 { 0x02, 0x04, 0x08, 0x10, 0x20 }, // \ 0x5C 92 { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] 0x5D 93 { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ 0x5E 94 { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ 0x5F 95 { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` 0x60 96 { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a 0x61 97 { 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b 0x62 98 { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c 0x63 99 { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d 0x64 100 { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e 0x65 101 { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f 0x66 102 { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g 0x67 103 { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h 0x68 104 { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i 0x69 105 { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j 0x6A 106 { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k 0x6B 107 { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l 0x6C 108 { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m 0x6D 109 { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n 0x6E 110 { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o 0x6F 111 { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p 0x70 112 { 0x08, 0x14, 0x14, 0x18, 0x7C }, // q 0x71 113 { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r 0x72 114 { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s 0x73 115 { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t 0x74 116 { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u 0x75 117 { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v 0x76 118 { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w 0x77 119 { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x 0x78 120 { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y 0x79 121 { 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z 0x7A 122 { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { 0x7B 123 { 0x00, 0x00, 0x7F, 0x00, 0x00 }, // | 0x7C 124 { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } 0x7D 125 { 0x08, 0x04, 0x08, 0x10, 0x08 }, // ~ 0x7E 126 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, // 0x7F 127 { 0x7C, 0x12, 0x11, 0x12, 0x7C }, // А 0xC0 192 { 0x7F, 0x49, 0x49, 0x49, 0x31 }, // Б 0xC1 193 { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // В 0xC2 194 { 0x7F, 0x01, 0x01, 0x01, 0x01 }, // Г 0xC3 195 { 0x60, 0x3F, 0x21, 0x3F, 0x60 }, // Д 0xC4 196 { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // Е 0xC5 197 { 0x77, 0x08, 0x7F, 0x08, 0x77 }, // Ж 0xC6 198 { 0x22, 0x41, 0x49, 0x49, 0x36 }, // З 0xC7 199 { 0x7F, 0x10, 0x08, 0x04, 0x7F }, // И 0xC8 200 { 0x7E, 0x10, 0x09, 0x04, 0x7E }, // Й 0xC9 201 { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // К 0xCA 202 { 0x40, 0x3E, 0x01, 0x01, 0x7F }, // Л 0xCB 203 { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // М 0xCC 204 { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // Н 0xCD 205 { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // О 0xCE 206 { 0x7F, 0x01, 0x01, 0x01, 0x7F }, // П 0xCF 207 { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // Р 0xD0 208 { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // С 0xD1 209 { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // Т 0xD2 210 { 0x07, 0x48, 0x48, 0x48, 0x3F }, // У 0xD3 211 { 0x0E, 0x11, 0x7F, 0x11, 0x0E }, // Ф 0xD4 212 { 0x63, 0x14, 0x08, 0x14, 0x63 }, // Х 0xD5 213 { 0x3F, 0x20, 0x20, 0x3F, 0x60 }, // Ц 0xD6 214 { 0x07, 0x08, 0x08, 0x08, 0x7F }, // Ч 0xD7 215 { 0x7F, 0x40, 0x7E, 0x40, 0x7F }, // Ш 0xD8 216 { 0x3F, 0x20, 0x3F, 0x20, 0x7F }, // Щ 0xD9 217 { 0x01, 0x7F, 0x48, 0x48, 0x30 }, // Ъ 0xDA 218 { 0x7F, 0x48, 0x30, 0x00, 0x7F }, // Ы 0xDB 219 { 0x00, 0x7F, 0x48, 0x48, 0x30 }, // Ь 0xDC 220 { 0x22, 0x41, 0x49, 0x49, 0x3E }, // Э 0xDD 221 { 0x7F, 0x08, 0x3E, 0x41, 0x3E }, // Ю 0xDE 222 { 0x46, 0x29, 0x19, 0x09, 0x7F }, // Я 0xDF 223 { 0x20, 0x54, 0x54, 0x54, 0x78 }, // а 0xE0 224 { 0x3C, 0x4A, 0x4A, 0x4A, 0x31 }, // б 0xE1 225 { 0x7C, 0x54, 0x54, 0x28, 0x00 }, // в 0xE2 226 { 0x7C, 0x04, 0x04, 0x0C, 0x00 }, // г 0xE3 227 { 0x60, 0x3C, 0x24, 0x3C, 0x60 }, // д 0xE4 228 { 0x38, 0x54, 0x54, 0x54, 0x18 }, // е 0xE5 229 { 0x6C, 0x10, 0x7C, 0x10, 0x6C }, // ж 0xE6 230 { 0x00, 0x44, 0x54, 0x54, 0x28 }, // з 0xE7 231 { 0x7C, 0x20, 0x10, 0x08, 0x7C }, // и 0xE8 232 { 0x7C, 0x21, 0x12, 0x09, 0x7C }, // й 0xE9 233 { 0x7C, 0x10, 0x28, 0x44, 0x00 }, // к 0xEA 234 { 0x40, 0x38, 0x04, 0x04, 0x7C }, // л 0xEB 235 { 0x7C, 0x08, 0x10, 0x08, 0x7C }, // м 0xEC 236 { 0x7C, 0x10, 0x10, 0x10, 0x7C }, // н 0xED 237 { 0x38, 0x44, 0x44, 0x44, 0x38 }, // о 0xEE 238 { 0x7C, 0x04, 0x04, 0x04, 0x7C }, // п 0xEF 239 { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // р 0xF0 240 { 0x38, 0x44, 0x44, 0x44, 0x00 }, // с 0xF1 241 { 0x04, 0x04, 0x7C, 0x04, 0x04 }, // т 0xF2 242 { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // у 0xF3 243 { 0x08, 0x14, 0x7C, 0x14, 0x08 }, // ф 0xF4 244 { 0x44, 0x28, 0x10, 0x28, 0x44 }, // х 0xF5 245 { 0x3C, 0x20, 0x20, 0x3C, 0x60 }, // ц 0xF6 246 { 0x0C, 0x10, 0x10, 0x10, 0x7C }, // ч 0xF7 247 { 0x7C, 0x40, 0x7C, 0x40, 0x7C }, // ш 0xF8 248 { 0x3C, 0x20, 0x3C, 0x20, 0x7C }, // щ 0xF9 249 { 0x04, 0x7C, 0x50, 0x50, 0x20 }, // ъ 0xFA 250 { 0x7C, 0x50, 0x20, 0x00, 0x7C }, // ы 0xFB 251 { 0x00, 0x7C, 0x50, 0x50, 0x20 }, // ь 0xFC 252 { 0x28, 0x44, 0x54, 0x54, 0x38 }, // э 0xFD 253 { 0x7C, 0x10, 0x38, 0x44, 0x38 }, // ю 0xFE 254 { 0x48, 0x54, 0x34, 0x14, 0x7C } // я 0xFF 255 }; void LcdCharacter(unsigned char ch) { //LcdWrite(LCD_D, 0x00); Serial.println(); Serial.println(ch); Serial.println(ch,HEX); Serial.println(); if ( (ch >= 0xD0) && (ch <= 0xD1) ) { dbit=ch; Serial.println("Set dubble byte"); } else LcdWrite(LCD_D, 0x00); for (int index = 0; index < 5; index++) { if ( (ch >= 0x0020) && (ch <= 0x007F) ) { // Смещение в таблице для символов ASCII[0x20-0x7F] //ch -= 32; LcdWrite(LCD_D, ASCII[ch-0x20][index]); } /* else if ( (ch >= 0xC0) && (ch <= 0xFF) ) { // Смещение в таблице для символов CP1251[0xC0-0xFF] // ch -= 96; //LcdWrite(LCD_D, ASCII[ch-0xC0+0x60][index]); } */ else if ( ((ch >= 0x90) && (ch <= 0xBF)) ||((ch >= 0x80) && (ch <= 0x8F)) ) { // Смещение в таблице для символов UTF[0xFF90-0xFF8F] // ch -= 96; if (dbit == 0xD0) LcdWrite(LCD_D, ASCII[ch-0x90+0x60][index]); if(dbit==0xD1) LcdWrite(LCD_D, ASCII[ch-0x90+0x60+0x40][index]); //Serial.println("UTF"); } else if ( (ch >= 0x0410) && (ch <= 0x044F) ) { // Смещение в таблице для символов Unicode?[0x0410-0x044F] // ch -= 96; //LcdWrite(LCD_D, ASCII[ch-0x0410+0x60][index]); } else { if (!dbit) { // Остальные игнорируем (их просто нет в таблице для экономии памяти) ch = 95; LcdWrite(LCD_D, ASCII[ch-0x20][index]); } } //LcdWrite(LCD_D, ASCII[character - 0x20][index]); } // LcdWrite(LCD_D, 0x00); }на некоторые вещи не смотрите , закоменченно т.к проверял многое =) , практически методом научного тыка , В С++ не силён как и только начал осваивать микроконтролерную жизнь , занятся С решил из-за знания php а они похожи.
Может совместными усилиями создадим нормальную библиотеку (драйвер) к подобным дисплеям с пониманием русского языка , а может у кого есть еще заначки разных шрифтов и символов.
Решилось использованием другой библиотеки.
Ссылка на статью: http://code.google.com/p/pcd8544/
Библиотека: http://pcd8544.googlecode.com/files/PCD8544-1.4.zip
Код программы:
/* * To use this sketch, connect the eight pins from your LCD like thus: * * Pin 1 -> +3.3V (rightmost, when facing the display head-on) * Pin 2 -> Arduino digital pin 3 * Pin 3 -> Arduino digital pin 4 * Pin 4 -> Arduino digital pin 5 * Pin 5 -> Arduino digital pin 7 * Pin 6 -> Ground * Pin 7 -> 10uF capacitor -> Ground * Pin 8 -> Arduino digital pin 6 * * Since these LCDs are +3.3V devices, you have to add extra components to * connect it to the digital pins of the Arduino (not necessary if you are * using a 3.3V variant of the Arduino, such as Sparkfun's Arduino Pro). */ #include <PCD8544.h> //--> DHT22 #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); //-- static PCD8544 lcd; void setup() { // PCD8544-compatible displays may have a different resolution... lcd.begin(84, 48); //DHT22 Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); //-- } void loop() { //DHT22 float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); delay(150); } //--- lcd.setCursor(0, 0); lcd.print("---- TEST ----"); lcd.setCursor(18, 2); lcd.print("T:"); lcd.setCursor(32, 2); lcd.print(t); lcd.setCursor(18, 4); lcd.print("H:"); lcd.setCursor(32, 4); lcd.print(h); delay(500); }Здравствуйте. Я начинающий праграммист AVR контроллеров. Сейчас хочу сделать примерно такой-же как у вас датчик температуры и влажности с использованием сенсора DHT22, в дальнейшем хочу сделать регулирование влажности и температуры, делаю всё это для погреба. Вот ищу уже целый день в интернете рабочий пример кода, тут наткнулся на ваш. Я только начинаю работать на языке "C". Не могли бы вы сказать, чем вы компилировали ваш код, в какой программе. Сам начал изучать CodeVisionAVR и на нём успешно сделал терморегулятор на DS18B20, ну это так к слову. И скажите еще пожалуйста где вы нашли эту библиотеку DHT.h для DHT22. Если можете скинте свой рабочий проект со всеми необходимыми библиотеками мне на email (smirnov88@inbox.ru). Заранее благодарен!
https://github.com/ringerc/Arduino-DHT22/archive/master.zip
дак есть один парень который уже все сделал - разработал супер пупер программу, ты можешь сам рисовать свои иероглифы - http://ikarab.narod.ru/KS0108.html
для теста можешь импортировать строку какого то символа - сразу все пойиешь как делается
чуть ли не забыл, в самом низу страницы последняя версия программы, ее и качай. Программу тестировал га своем 5110, у меня все получилось
Решилось использованием другой библиотеки.
Ссылка на статью: http://code.google.com/p/pcd8544/
Библиотека: http://pcd8544.googlecode.com/files/PCD8544-1.4.zip
Код программы:
/* * To use this sketch, connect the eight pins from your LCD like thus: * * Pin 1 -> +3.3V (rightmost, when facing the display head-on) * Pin 2 -> Arduino digital pin 3 * Pin 3 -> Arduino digital pin 4 * Pin 4 -> Arduino digital pin 5 * Pin 5 -> Arduino digital pin 7 * Pin 6 -> Ground * Pin 7 -> 10uF capacitor -> Ground * Pin 8 -> Arduino digital pin 6 * * Since these LCDs are +3.3V devices, you have to add extra components to * connect it to the digital pins of the Arduino (not necessary if you are * using a 3.3V variant of the Arduino, such as Sparkfun's Arduino Pro). */ #include <PCD8544.h> //--> DHT22 #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); //-- static PCD8544 lcd; void setup() { // PCD8544-compatible displays may have a different resolution... lcd.begin(84, 48); //DHT22 Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); //-- } void loop() { //DHT22 float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); delay(150); } //--- lcd.setCursor(0, 0); lcd.print("---- TEST ----"); lcd.setCursor(18, 2); lcd.print("T:"); lcd.setCursor(32, 2); lcd.print(t); lcd.setCursor(18, 4); lcd.print("H:"); lcd.setCursor(32, 4); lcd.print(h); delay(500); }Добрый день! Попробовал скомпилить Ваш скетч - ругается на 24 строку. Что я делаю не так? Пока только пробую разбираться что к чему...
Добрый день! Попробовал скомпилить Ваш скетч - ругается на 24 строку. Что я делаю не так?
Как минимум то что не говорите какая именно ошибка. На "ругается,что не так?" наиболее правильным ответо "что-то".
Только - гадать. Скорее всего - библиотеку не поставили (или криво/не туда).
Не импортировали библиотеку.
Пишет : "DHT is not a type" Библиотека лежит в папке Librarys
А как вы ее туда положили? Фаил.zip распаковали? А случайно в папке PCD8544-1.4 не лежит еще папка PCD8544-1.4 ? И на всякий переименуйте папку в PCD8544.
В папке Librarys лежит папка DHT, в которой лежат файлы dht.cpp и dht.h C PCD8544 все в порядке.
А не может это быть связано с версией Arduino IDE( у меня 1.0.2)? Просто сталкивался с таким с CVAVR.
Если вы скачали библиотеку та что выше по ссылке, то там файлы DHT22.h/.cpp, а не dht.h/.cpp, следовательно и подключать нужно #include "DHT22.h", да и методы там маленько другие.
#include <PCD8544.h> //--> DHT22 #include "DHT22.h" #define DHTPIN 2 DHT22 dht(DHTPIN); //-- static PCD8544 lcd; void setup() { // PCD8544-compatible displays may have a different resolution... lcd.begin(84, 48); //DHT22 Serial.begin(9600); Serial.println("DHTxx test!"); //-- } void loop() { //DHT22 float h = dht.getHumidity(); float t = dht.getTemperatureC(); if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); delay(150); } //--- lcd.setCursor(0, 0); lcd.print("---- TEST ----"); lcd.setCursor(18, 2); lcd.print("T:"); lcd.setCursor(32, 2); lcd.print(t); lcd.setCursor(18, 4); lcd.print("H:"); lcd.setCursor(32, 4); lcd.print(h); delay(500); }Я их переименовывал в dht и пробовал другую библиотеку - результат один
Я их переименовывал в dht и пробовал другую библиотеку - результат один
Заметил в Вашем коде нет строки dht.begin();- не нужна?
В этой библиотеке в классе DHT22 ее нет, значит не нужна.
Спасибо большое! Вечером буду пробовать!
Проверил - получилось! Скомпилировалось, залилось, показывает, но не меряет. Выдает -99.50 в обоих каналах. В связи с этим вопрос:
вход датчика указывается только в #define DHTPIN 2, или еще где нибудь? Можно ли как-то проверить работоспособность датчика?
Попробовал скетч из примера в библиотеке DHT22 - датчик работает. Что делать, не соображу никак...
Подскажите как допилить библиотеку отсюда http://code.google.com/p/pcd8544/ чтоб выводила кириллицу. Дополнить таблицу символов кириллицой оказалось недостаточно. В этом си-образном языке только начинаю разбираться, путаюсь.
Вот файл charset.cpp с кириллицей:
/* * PCD8544 - Interface with Philips PCD8544 (or compatible) LCDs. * * Copyright (c) 2010 Carlos Rodrigues <cefrodrigues@gmail.com> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include <avr/pgmspace.h> // The 7-bit ASCII character set... const PROGMEM unsigned char charset[][5] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // 0x20 32 { 0x00, 0x00, 0x5F, 0x00, 0x00 }, // ! 0x21 33 { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " 0x22 34 { 0x14, 0x7F, 0x14, 0x7F, 0x14 }, // # 0x23 35 { 0x24, 0x2A, 0x7F, 0x2A, 0x12 }, // $ 0x24 36 { 0x4C, 0x2C, 0x10, 0x68, 0x64 }, // % 0x25 37 { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & 0x26 38 { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' 0x27 39 { 0x00, 0x1C, 0x22, 0x41, 0x00 }, // ( 0x28 40 { 0x00, 0x41, 0x22, 0x1C, 0x00 }, // ) 0x29 41 { 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * 0x2A 42 { 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + 0x2B 43 { 0x00, 0x00, 0x50, 0x30, 0x00 }, // , 0x2C 44 { 0x10, 0x10, 0x10, 0x10, 0x10 }, // - 0x2D 45 { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . 0x2E 46 { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / 0x2F 47 { 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 0x30 48 { 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 0x31 49 { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 0x32 50 { 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 0x33 51 { 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 0x34 52 { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 0x35 53 { 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 0x36 54 { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 0x37 55 { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 0x38 56 { 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 0x39 57 { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : 0x3A 58 { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; 0x3B 59 { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < 0x3C 60 { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = 0x3D 61 { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > 0x3E 62 { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? 0x3F 63 { 0x32, 0x49, 0x79, 0x41, 0x3E }, // @ 0x40 64 { 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A 0x41 65 { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B 0x42 66 { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C 0x43 67 { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D 0x44 68 { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E 0x45 69 { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F 0x46 70 { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G 0x47 71 { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H 0x48 72 { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I 0x49 73 { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J 0x4A 74 { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K 0x4B 75 { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L 0x4C 76 { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M 0x4D 77 { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N 0x4E 78 { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O 0x4F 79 { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P 0x50 80 { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q 0x51 81 { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R 0x52 82 { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S 0x53 83 { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T 0x54 84 { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U 0x55 85 { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V 0x56 86 { 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W 0x57 87 { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X 0x58 88 { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y 0x59 89 { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z 0x5A 90 { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ 0x5B 91 { 0x02, 0x04, 0x08, 0x10, 0x20 }, // \ 0x5C 92 { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] 0x5D 93 { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ 0x5E 94 { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ 0x5F 95 { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ` 0x60 96 { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a 0x61 97 { 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b 0x62 98 { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c 0x63 99 { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d 0x64 100 { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e 0x65 101 { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f 0x66 102 { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g 0x67 103 { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h 0x68 104 { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i 0x69 105 { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j 0x6A 106 { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k 0x6B 107 { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l 0x6C 108 { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m 0x6D 109 { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n 0x6E 110 { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o 0x6F 111 { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p 0x70 112 { 0x08, 0x14, 0x14, 0x18, 0x7C }, // q 0x71 113 { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r 0x72 114 { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s 0x73 115 { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t 0x74 116 { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u 0x75 117 { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v 0x76 118 { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w 0x77 119 { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x 0x78 120 { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y 0x79 121 { 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z 0x7A 122 { 0x00, 0x08, 0x36, 0x41, 0x00 }, // { 0x7B 123 { 0x00, 0x00, 0x7F, 0x00, 0x00 }, // | 0x7C 124 { 0x00, 0x41, 0x36, 0x08, 0x00 }, // } 0x7D 125 { 0x08, 0x04, 0x08, 0x10, 0x08 }, // ~ 0x7E 126 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, // 0x7F 127 { 0x7C, 0x12, 0x11, 0x12, 0x7C }, // А 0xC0 192 { 0x7F, 0x49, 0x49, 0x49, 0x31 }, // Б 0xC1 193 { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // В 0xC2 194 { 0x7F, 0x01, 0x01, 0x01, 0x01 }, // Г 0xC3 195 { 0x60, 0x3F, 0x21, 0x3F, 0x60 }, // Д 0xC4 196 { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // Е 0xC5 197 { 0x77, 0x08, 0x7F, 0x08, 0x77 }, // Ж 0xC6 198 { 0x22, 0x41, 0x49, 0x49, 0x36 }, // З 0xC7 199 { 0x7F, 0x10, 0x08, 0x04, 0x7F }, // И 0xC8 200 { 0x7E, 0x10, 0x09, 0x04, 0x7E }, // Й 0xC9 201 { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // К 0xCA 202 { 0x40, 0x3E, 0x01, 0x01, 0x7F }, // Л 0xCB 203 { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // М 0xCC 204 { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // Н 0xCD 205 { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // О 0xCE 206 { 0x7F, 0x01, 0x01, 0x01, 0x7F }, // П 0xCF 207 { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // Р 0xD0 208 { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // С 0xD1 209 { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // Т 0xD2 210 { 0x07, 0x48, 0x48, 0x48, 0x3F }, // У 0xD3 211 { 0x0E, 0x11, 0x7F, 0x11, 0x0E }, // Ф 0xD4 212 { 0x63, 0x14, 0x08, 0x14, 0x63 }, // Х 0xD5 213 { 0x3F, 0x20, 0x20, 0x3F, 0x60 }, // Ц 0xD6 214 { 0x07, 0x08, 0x08, 0x08, 0x7F }, // Ч 0xD7 215 { 0x7F, 0x40, 0x7E, 0x40, 0x7F }, // Ш 0xD8 216 { 0x3F, 0x20, 0x3F, 0x20, 0x7F }, // Щ 0xD9 217 { 0x01, 0x7F, 0x48, 0x48, 0x30 }, // Ъ 0xDA 218 { 0x7F, 0x48, 0x30, 0x00, 0x7F }, // Ы 0xDB 219 { 0x00, 0x7F, 0x48, 0x48, 0x30 }, // Ь 0xDC 220 { 0x22, 0x41, 0x49, 0x49, 0x3E }, // Э 0xDD 221 { 0x7F, 0x08, 0x3E, 0x41, 0x3E }, // Ю 0xDE 222 { 0x46, 0x29, 0x19, 0x09, 0x7F }, // Я 0xDF 223 { 0x20, 0x54, 0x54, 0x54, 0x78 }, // а 0xE0 224 { 0x3C, 0x4A, 0x4A, 0x4A, 0x31 }, // б 0xE1 225 { 0x7C, 0x54, 0x54, 0x28, 0x00 }, // в 0xE2 226 { 0x7C, 0x04, 0x04, 0x0C, 0x00 }, // г 0xE3 227 { 0x60, 0x3C, 0x24, 0x3C, 0x60 }, // д 0xE4 228 { 0x38, 0x54, 0x54, 0x54, 0x18 }, // е 0xE5 229 { 0x6C, 0x10, 0x7C, 0x10, 0x6C }, // ж 0xE6 230 { 0x00, 0x44, 0x54, 0x54, 0x28 }, // з 0xE7 231 { 0x7C, 0x20, 0x10, 0x08, 0x7C }, // и 0xE8 232 { 0x7C, 0x21, 0x12, 0x09, 0x7C }, // й 0xE9 233 { 0x7C, 0x10, 0x28, 0x44, 0x00 }, // к 0xEA 234 { 0x40, 0x38, 0x04, 0x04, 0x7C }, // л 0xEB 235 { 0x7C, 0x08, 0x10, 0x08, 0x7C }, // м 0xEC 236 { 0x7C, 0x10, 0x10, 0x10, 0x7C }, // н 0xED 237 { 0x38, 0x44, 0x44, 0x44, 0x38 }, // о 0xEE 238 { 0x7C, 0x04, 0x04, 0x04, 0x7C }, // п 0xEF 239 { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // р 0xF0 240 { 0x38, 0x44, 0x44, 0x44, 0x00 }, // с 0xF1 241 { 0x04, 0x04, 0x7C, 0x04, 0x04 }, // т 0xF2 242 { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // у 0xF3 243 { 0x08, 0x14, 0x7C, 0x14, 0x08 }, // ф 0xF4 244 { 0x44, 0x28, 0x10, 0x28, 0x44 }, // х 0xF5 245 { 0x3C, 0x20, 0x20, 0x3C, 0x60 }, // ц 0xF6 246 { 0x0C, 0x10, 0x10, 0x10, 0x7C }, // ч 0xF7 247 { 0x7C, 0x40, 0x7C, 0x40, 0x7C }, // ш 0xF8 248 { 0x3C, 0x20, 0x3C, 0x20, 0x7C }, // щ 0xF9 249 { 0x04, 0x7C, 0x50, 0x50, 0x20 }, // ъ 0xFA 250 { 0x7C, 0x50, 0x20, 0x00, 0x7C }, // ы 0xFB 251 { 0x00, 0x7C, 0x50, 0x50, 0x20 }, // ь 0xFC 252 { 0x28, 0x44, 0x54, 0x54, 0x38 }, // э 0xFD 253 { 0x7C, 0x10, 0x38, 0x44, 0x38 }, // ю 0xFE 254 { 0x48, 0x54, 0x34, 0x14, 0x7C } // я 0xFF 255 }; /* vim: set expandtab ts=4 sw=4: */Если вы скачали библиотеку та что выше по ссылке, то там файлы DHT22.h/.cpp, а не dht.h/.cpp, следовательно и подключать нужно #include "DHT22.h", да и методы там маленько другие.
#include <PCD8544.h> //--> DHT22 #include "DHT22.h" #define DHTPIN 2 DHT22 dht(DHTPIN); //-- static PCD8544 lcd; void setup() { // PCD8544-compatible displays may have a different resolution... lcd.begin(84, 48); //DHT22 Serial.begin(9600); Serial.println("DHTxx test!"); //-- } void loop() { //DHT22 float h = dht.getHumidity(); float t = dht.getTemperatureC(); if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } else { Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); delay(150); } //--- lcd.setCursor(0, 0); lcd.print("---- TEST ----"); lcd.setCursor(18, 2); lcd.print("T:"); lcd.setCursor(32, 2); lcd.print(t); lcd.setCursor(18, 4); lcd.print("H:"); lcd.setCursor(32, 4); lcd.print(h); delay(500); }С этим кодом, на дисплее "-99.50" влажность и температура при использовании DHT11 и DHT22. Почему так?
Друзья, у меня тоже проблема с датчиком DHT22 .
И температуру и влажность выводит на дисплей LCM1602 как -99,50 .
Датчик уже с платой, на которой SMD конденсатор 512 (5100 Ом же?) и конденсатор, судя по окраске.
По совету странной статьи пробовал через дополнительный на 500 Ом подключить в разрез Vcc, но картина не меняется.
Может библиотека какая-то другая нужна? Или датчик в мусорку? Напрягает именно тот факт даже.. что нет температуры? -99,50
Собственно вопрос:
Вы решили проблему? Как? Заранее буду вам благодарен!
Одно уже понял , что -99,50 показывает если даже ко входу датчик не подключен. Другими словами с датчика не приходят данные.
Может SMD конденсатор мертв? Зачем он вообще там, как фильтр питания? Есть смысл выпаять его и зашунтировать? И вообще выпаять с китайской платы датчик и впаять через 10кОм резистор в свою?
Поправка, китайский SMD с надписью 512 мультиметром показывает 2.36кОМ
Все, глубокой ночью разобрался в неправильном применении функций объявленной библиотеке DHT.h
грубо говоря библиотека одна, а код пишу под другую. Ну таккосвенными логическими суждениями к этому пришел, покопал экхамплы, открыл библиотеки и как-то ночью сквозь дремоту все пригло в голову само.
Все супер, идем дальше )
Всем добрый день.
Кто сталкивался с такой проблемой!!!
Экран TFT LCD 1.44'' 128x128 V2.1, библиотека Adafruit_GFX, драйвер TFT_ILI9163C. Тип МК Arduino Uno R3. Тактовая частота МК 16Мг.
Чтобы обновить показания канала АЦП на экране , нужно сначало стереть старое число , а потом записать новое на его место. Так вот происходить мерцание выводимых символов. Не пойму в чем дело. Догадываюсь , что не тянет сам TFT ?.