Помогите пожалуйста, неполучается вывести символ градуса в tm1637, температуру с датчика ds18s20 выводит, также выводит символ отрицательной температуры в первый разряд, второй пустой, третий и четвертый показывают температуру, мне бы хотелось в последний разряд вставить символ градуса, а показания температуры на вторй и третий разряд, из примеров библиотеки отдельно без кода датчика символ градуса выводится в четвертый разряд но скетч, как понял использует скрол(передвижение знаков), из постов выше, думаю надо выводить знаки в каждый разряд по отдельности? подскажите куда дальше копать? первый скетч термометр, второй вывод символа градуса.
// dallas ds18s20 ds1820
#include "TM1637.h" // Подключаем библиотеку TM1637.h
#include <OneWire.h>
#define CLK 3 // К этому пину подключаем CLK
#define DIO 2 // К этому пину подключаем DIO
OneWire ds(10); // линия 1-Wire будет на pin 10
TM1637 disp(CLK, DIO);
void setup() // Выполняем процедуру 1 раз
{
// Устанавливаем яркость от 0 до 7
disp.set(5);
disp.init(D4056A);
Serial.begin(9600);
}
void loop() // Повторяем в бесконечном цикле
{
byte i;
byte present = 0;
byte data[12];
byte addr[8];
if ( !ds.search(addr)) {
// Serial.print("No more addresses.\n");
ds.reset_search();
return;
}
//Serial.print("R=");
for ( i = 0; i < 8; i++) {
//Serial.print(addr[i], HEX);
//Serial.print(" ");
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
//Serial.print("CRC is not valid!\n");
return;
}
if ( addr[0] != 0x10) {
Serial.print("Device is not a DS18S20 family device.\n");
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1); // запускаем конвертацию
delay(1000); // скорее всего достаточно 750ms
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // считываем ОЗУ датчика
//Serial.print("P=");
//Serial.print(present,HEX);
// Serial.print(" ");
for ( i = 0; i < 9; i++) { // обрабатываем 9 байт
data[i] = ds.read();
//Serial.print(data[i], HEX);
// Serial.print(" ");
}
//Serial.print(" CRC=");
//Serial.print( OneWire::crc8( data, 8), HEX);
// Serial.println();
// высчитываем температуру
int HighByte, LowByte, TReading, Tc_100;
LowByte = data[0];
//Serial.print("LB= ");Serial.print(LowByte,HEX);
HighByte = data[1];
// Serial.print(" HB= ");Serial.print(HighByte,HEX);
TReading = (HighByte << 8) + LowByte;
Tc_100 = TReading / 2;
Serial.print(" T = ");
Serial.print(Tc_100);
Serial.println();
disp.display(Tc_100 ); // Выводим значение
}
// скетч из примеров библиотеки TM1637.h выводит символ градуса в последний разряд
#include "TM1637.h" // Подключаем библиотеку
#define CLK 3 // К этому пину подключаем CLK
#define DIO 2 // К этому пину подключаем DIO
TM1637 disp(CLK, DIO);
void setup() // Выполняем процедуру 1 раз
{
// Устанавливаем яркость от 0 до 7
disp.set(5);
disp.init(D4056A);
}
void loop() // Повторяем в бесконечном цикле
{
int8_t NumTab[] = {18};//значение º
int8_t ListDisp[4];
unsigned char i = 0;
unsigned char count = 0;
delay(150);
while (1)
{
i = count;
count ++;
if (count == sizeof(NumTab)) count = 0;
for (unsigned char BitSelect = 0; BitSelect < 4; BitSelect ++)
{
ListDisp[BitSelect] = NumTab[i];
i ++;
if (i == sizeof(NumTab)) i = 0;
}
//disp.display(0,Disp[0]);
//disp.display(1,Disp[1]);
//disp.display(2,Disp[2]);
//disp.display(0,); // Выводим значение º
disp.display(3, ListDisp[3]);
// delay(300);
}
}
И снова сдрасте, вернулся к этому скетчу и не получается опять выдаёт ошибку(((
#include <SimpleDHT.h>
#include "DHT.h"
#include <DHT.h>
#include "TM1637.h"
//{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//0~9,A,b,C,d,E,F
#define DHTPIN 2
#define DHTTYPE DHT22
#define dht_pin 2 // Pin sensor is connected to
#define CLK 3//Pins for TM1637
#define DIO 4
TM1637 tm1637(CLK,DIO);
DHT dht(DHTPIN, DHTTYPE);
void setup(){
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
delay(1500);//Delay to let system boot
}//end "setup()"
void loop(){
//Start of Program
DHT.read22(DHTPIN); // опять не устраивает эта строка
int temp = DHT.temperature;
int humidity = DHT.humidity;
int digitoneT = temp / 10;
int digittwoT = temp % 10;
int digitoneH = humidity / 10;
int digittwoH = humidity % 10;
tm1637.display(1,digitoneT);
tm1637.display(2,digittwoT);
tm1637.display(3,12); // put a C at the end
delay (3000);
tm1637.display(1,23);
tm1637.display(2,digitoneH);
tm1637.display(3,digittwoH);
//Wait 3 seconds before accessing sensor again.
//Fastest should be once every two seconds.
delay(3000);
}// end loop()
Библиотеки разные пробовал применять, не компилируется и всё
+ у Вас найдено две библиотеки "DHT.h" - оставьте только одну.
Да и что то мне подсказывает чтонапдергали Вы из разных примеров. Потому что для библиотеки где используется создание:
DHT dht(DHTPIN, DHTTYPE);
читают так:
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
Попробовал вашь вариант, баловался по всякому, но так и не компилируется.
Попробовал переустановить программу, не помогло.
Вот что у меня получилось
#include <DHT.h>
#include "TM1637.h"
//{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//0~9,A,b,C,d,E,F
#define DHTPIN 2
#define DHTTYPE DHT22
#define dht_pin 2 // Pin sensor is connected to
#define CLK 3//Pins for TM1637
#define DIO 4
TM1637 tm1637(CLK,DIO);
DHT dht(DHTPIN, DHTTYPE);
void setup(){
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
delay(1500);//Delay to let system boot
}//end "setup()"
void loop(){
//Start of Program
dht.read(dht_pin);
int temp = dht.temperature;
int humidity = dht.humidity;
int digitoneT = temp / 10;
int digittwoT = temp % 10;
int digitoneH = humidity / 10;
int digittwoH = humidity % 10;
tm1637.display(1,digitoneT);
tm1637.display(2,digittwoT);
tm1637.display(3,12); // put a C at the end
delay (3000);
tm1637.display(1,23);
tm1637.display(2,digitoneH);
tm1637.display(3,digittwoH);
//Wait 3 seconds before accessing sensor again.
//Fastest should be once every two seconds.
delay(3000);
}// end loop()
в ответ он мне заругался так
C:\Users\836D~1\AppData\Local\Temp\arduino_modified_sketch_269326\dht22.ino: In function 'void loop()':
dht22:39: error: 'class DHT' has no member named 'temperature'
int temp = dht.temperature;
^
dht22:40: error: 'class DHT' has no member named 'humidity'
Вам же в сообщении #62 T.Rook дал и ссылку на библиотеку и ссылку на пример. Где вы в этом примере видите dht.temperature или dht.humidity? Сделайте как в примере
И как я понял меня упрекнули в том что я на выдёргивал с разных примеров.
Я бы скорее сказал. что ваша беда - вы пытаетесь программировать методом тыка. Не подошли большие буквы DHT - попробуем маленькие? - так?
А почитать? хотя бы те крохи, что по ссылке "Программирование" вверху форума . Например описание оператора взятия остатка "%". Этот оператор неприменим к типу float - о чем вам компилятор и пишет.
P@vel, судя по вашим сообщениям, вы воюете с этим несчестным скетчем с октября. За это время уже можно было выучить C++. Ну. или в вашем случае - понять, что "программирование - не мое"
Вы совершенно правы, дело в том что я возвращаюсь к этому вопросу по остаточному принципу т.е. сперва повседневные дела и заботы. Знаю что нужно учить библию, т.к. это далеко не единственная идея по благоустройсту, но нужно начинать с малого, метод тыка вовсе не так плох и даёт свои результаты.
Библиотеку из кложений по ссылке скачивали? У меня компиляция без ошибок проходит.
Библиотеку из кложений по ссылке скачивали? У меня компиляция без ошибок проходит.
Только вы говорили что датчик 22-й, а тут библиотека под 11 - могут косячки вылезти в виде неотоброжения минусовой и т.д.
Всё, заработало!
Для этого понадобилось переустановить программу, исключить все рускоязычные папки, использовать 2 DHT библиотеки и вкоде внести изменения:
добавил
#define DHTTYPE DHT22
изменил
с DHT.read11(dht_pin);
на DHT.read22(dht_pin);
заработало!
Всем спасибо!
Следующим шагом будет отправка и получение данных через WIFI.
Скиньте сюда скетч, пожалуйста.
По результату хочу получить отображение температуры с десятыми долями градусов и отрицательними значениями.
Помогите пожалуйста, неполучается вывести символ градуса в tm1637, температуру с датчика ds18s20 выводит, также выводит символ отрицательной температуры в первый разряд, второй пустой, третий и четвертый показывают температуру, мне бы хотелось в последний разряд вставить символ градуса, а показания температуры на вторй и третий разряд, из примеров библиотеки отдельно без кода датчика символ градуса выводится в четвертый разряд но скетч, как понял использует скрол(передвижение знаков), из постов выше, думаю надо выводить знаки в каждый разряд по отдельности? подскажите куда дальше копать? первый скетч термометр, второй вывод символа градуса.
И снова сдрасте, вернулся к этому скетчу и не получается опять выдаёт ошибку(((
Библиотеки разные пробовал применять, не компилируется и всё
Подскажите пожалуйста что делать?
Подскажите пожалуйста что делать?
Как минимум описать подробно, что за ошибка
Ругается таким вот образом
แทน Dht. -> dht.
Пробовал и большими и маленькими
DHT.read22(dht_pin);
dht.read22(dht_pin);
DHT.read22(DHTPIN);
DHT.read(DHTPIN);
Пробовал и большими и маленькими
DHT.read22(dht_pin);
dht.read22(dht_pin);
DHT.read22(DHTPIN);
DHT.read(DHTPIN);
А примеры к библиотеке вашей есть? Как там сделано?
Пробовал и большими и маленькими
DHT.read22(dht_pin);
dht.read22(dht_pin);
DHT.read22(DHTPIN);
DHT.read(DHTPIN);
Ы :) а так:
dht.read22(DHTPIN)
Ибо:
+ у Вас найдено две библиотеки "DHT.h" - оставьте только одну.
Да и что то мне подсказывает чтонапдергали Вы из разных примеров. Потому что для библиотеки где используется создание:
DHT dht(DHTPIN, DHTTYPE);
читают так:
Из всех библ:
01
#include <SimpleDHT.h>
02
03
#include "DHT.h"
04
#include <DHT.h>
Оставьте только строку 4. И одну библиотеку и читайте как в примере к ней.
Попробовал вашь вариант, баловался по всякому, но так и не компилируется.
Попробовал переустановить программу, не помогло.
Вот что у меня получилось
в ответ он мне заругался так
P@vel,
Вам же в сообщении #62 T.Rook дал и ссылку на библиотеку и ссылку на пример. Где вы в этом примере видите dht.temperature или dht.humidity? Сделайте как в примере
По поводу библяотеки, у меня она не компилирует элементарнй DHTtester пока не удалишь DHT_U.cpp
И как я понял меня упрекнули в том что я на выдёргивал с разных примеров.
Как я понимаю Serial.println - это вывод на монитор (что мне не надо) что в свою очередь я удаляю
ну и последнее на что заругался компилятор
И как я понял меня упрекнули в том что я на выдёргивал с разных примеров.
Я бы скорее сказал. что ваша беда - вы пытаетесь программировать методом тыка. Не подошли большие буквы DHT - попробуем маленькие? - так?
А почитать? хотя бы те крохи, что по ссылке "Программирование" вверху форума . Например описание оператора взятия остатка "%". Этот оператор неприменим к типу float - о чем вам компилятор и пишет.
P@vel, судя по вашим сообщениям, вы воюете с этим несчестным скетчем с октября. За это время уже можно было выучить C++. Ну. или в вашем случае - понять, что "программирование - не мое"
Вы совершенно правы, дело в том что я возвращаюсь к этому вопросу по остаточному принципу т.е. сперва повседневные дела и заботы. Знаю что нужно учить библию, т.к. это далеко не единственная идея по благоустройсту, но нужно начинать с малого, метод тыка вовсе не так плох и даёт свои результаты.