Нужна помощь с DS1302 +LCD модуль

zugni
Offline
Зарегистрирован: 14.06.2015

Дело в том что не как не получается вывести показания на дисплей теже часики на LCD модуль там всего 4 вывода +. - sda scl . а на стандартном примере 

// DS1302:  CE pin          -> Arduino Digital 2
//                I/O pin         -> Arduino Digital 3
//                SCLK pin      -> Arduino Digital 4
 
LCD:         DB7             -> Arduino Digital 6
//             DB6             -> Arduino Digital 7
//             DB5             -> Arduino Digital 8
//             DB4             -> Arduino Digital 9
//             E                 -> Arduino Digital 10
//             RS               -> Arduino Digital 11
 
 как тут подключишь если все вот так вот выглядит и библиотека стоит не та а вот какая
 
#include <LiquidCrystal.h>
 
#include <LiguidCrystal_I2C> покажите пожалуйста про этот дисплей может где на форуме что есть киньте ссыл 
и уроки кстати все про тот же дисплей (не про модуль).
 

спасибо

#include <LiquidCrystal.h>

#include <DS1302.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);

// Init the LCD
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);

void setup()
{
  // Set the clock to run-mode, and disable the write protection
  rtc.halt(false);
  rtc.writeProtect(false);
  
  // Setup LCD to 16x2 characters
  lcd.begin(16, 2);

  // The following lines can be commented out to use the values already stored in the DS1302
  rtc.setDOW(FRIDAY);        // Set Day-of-Week to FRIDAY
  rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(6, 8, 2010);   // Set the date to August 6th, 2010
}

void loop()
{
  // Display time centered on the upper line
  lcd.setCursor(4, 0);
  lcd.print(rtc.getTimeStr());
  
  // Display abbreviated Day-of-Week in the lower left corner
  lcd.setCursor(0, 1);
  lcd.print(rtc.getDOWStr(FORMAT_SHORT));
  
  // Display date in the lower right corner
  lcd.setCursor(6, 1);
  lcd.print(rtc.getDateStr());

  // Wait one second before repeating :)
  delay (1000);
}

 

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Вот такая же фигня. Подключаю микрофон. Прошиваю скеч для мигания светодиодиком.. и микрофон нифига не работает. Не знаете почему?

Alexey_A
Offline
Зарегистрирован: 01.05.2015
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Puhlyaviy пишет:
Вот такая же фигня. Подключаю микрофон. Прошиваю скеч для мигания светодиодиком.. и микрофон нифига не работает. Не знаете почему?

:)

ValeryF
Offline
Зарегистрирован: 18.05.2015

Просто часы

#include <DS1302.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Init the DS1302
DS1302 rtc(2, 3, 4);    // (RST, DAT, CLK)
LiquidCrystal_I2C lcd(0x3F,16,2);  // set the LCD address to 0x3F for a 16 chars and 2 line display

Time t;



void setup()
{
  // Set the clock to run-mode, and disable the write protection
  //Установка  часов для запуска-

rtc.halt(false);
rtc.writeProtect(false);
  


// The following lines can be commented out to use the values already stored in the DS1302
rtc.setTime(12, 00, 00);     // Set the time to 12:00:00 (24hr format)

}

void loop()
{
   t = rtc.getTime(); 

lcd.init();                     // initialize the lcd  
lcd.backlight();          // включение подсветки
 
  
lcd.setCursor(0, 0); // отступ первой строки слева 0 .
lcd.print(rtc.getTimeStr());    //  Время в формате    час:минуты:секунды


}

 

zugni
Offline
Зарегистрирован: 14.06.2015

Спасибо ща попробую что получится

 

zugni
Offline
Зарегистрирован: 14.06.2015

Ошибка: lcd.init();   // initialize the lcd ?

zugni
Offline
Зарегистрирован: 14.06.2015
Arduino: 1.6.5 Hourly Build 2015/05/15 06:16 (Windows 7), Плата"Arduino Uno"
 
Изменена опция сборки, пересобираем все
 
sketch_jul02a.ino: In function 'void loop()':
sketch_jul02a:34: error: 'class LiquidCrystal_I2C' has no member named 'init'
Multiple libraries were found for "DS1302.h"
 
 Used: C:\Users\Юрий\Documents\Arduino\libraries\DS1302
 
 Not used: C:\Users\Юрий\Documents\Arduino\libraries\arduino-ds1302-master
 
'class LiquidCrystal_I2C' has no member named 'init'
 
  Это сообщение будет содержать больше информации чем
  "Отображать вывод во время компиляции"
  включено в Файл > Настройки
 
ValeryF
Offline
Зарегистрирован: 18.05.2015

Честно говоря не помю откуда брал библиотеку LiquidCrystal I2C , но по-моему всё-таки здесь : http://arduino-project.net/biblioteki-arduino/

Попробуйте примеры из неё.

И обратите внимание на название микросхемы PCF8574T (A), (AT) , у меня в одной посылке (5 шт.) три были с буквами Т , а ещё две АТ.

Соответственно разная адресация для Т LiquidCrystal_I2C lcd(0x27,16,2) , для АТ LiquidCrystal_I2C lcd(0x3F,16,2)

Начините с этого : http://arduino.ru/forum/programmirovanie/i-opyat-pro-lcd-i-pcf8574-nu-ni...

Удачи !

zugni
Offline
Зарегистрирован: 14.06.2015

Вот за это огромное спасибо все заработало просто мне нужно было поставить 0х27,16,2 и вуаля :)

zugni
Offline
Зарегистрирован: 14.06.2015

Еще один вопрос как вывести на экран к примеру 2 квадратика и чтоб один из квадратика мигнул как бы получается глазом 

 

ValeryF
Offline
Зарегистрирован: 18.05.2015

В начале раздела "Программирование" много об этом писали : http://arduino.ru/forum/programmirovanie/lcd-1602-i-svoi-simvoly

Ещё здесь : http://robocraft.ru/blog/arduino/503.html

Как-то так .

 

zugni
Offline
Зарегистрирован: 14.06.2015
#include <Wire.h>        // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT;               // Объявление переменной класса dht11
#define DHT11_PIN 4      // Датчик DHT11 подключен к цифровому пину номер 4

byte degree[8] =         // Битовая маска символа градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};    
 
LiquidCrystal_I2C lcd(0x27,16,2);   // Задаем адрес и размерность дисплея

void setup()
{
  lcd.init();                       // Инициализация lcd             
  lcd.backlight();                  // Включаем подсветку
  lcd.createChar(1, degree);        // Создаем символ под номером 1
}

void loop()
{
  // Выводим показания влажности и температуры
  lcd.setCursor(0, 0);              // Устанавливаем курсор в начало 1 строки
  lcd.print("humidity = %");                   // Выводим текст
  lcd.setCursor(11, 0); 
  lcd.print(DHT.humidity, 1);
  lcd.setCursor(0, 1);              // Устанавливаем курсор в начало 2 строки
  lcd.print("temp = \1C");                 // Выводим текст, \1 - значок градуса
  lcd.setCursor(11, 1);             
  lcd.print(DHT.temperature,1);  

  int chk;    
  ; // Мониторинг ошибок
  chk = DHT.read(DHT11_PIN);    // Чтение данных
  switch (chk){
  case DHTLIB_OK:  
    break;
  case DHTLIB_ERROR_CHECKSUM:  
    lcd.clear(); 
    lcd.print("Checksum error");  
    break;
  case DHTLIB_ERROR_TIMEOUT:
    lcd.clear(); 
    lcd.print("Time out error");
    break;
  default:
    lcd.clear(); 
    lcd.print("Unknown error");
    break;
  }
  delay(1000);                     
}

Помогите мне в этот скетч еще модуль реального времени ds1302 добавить плиз

 

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

Помогите мне в этот скетч еще модуль реального времени ds1302 добавить плиз

а смысл помогать, мы то умеем, а Вы не научитесь! с экраном закончили? сделали часики на milis? 

прежде, чем подключать модуль, выведите часы простые, а потом с модулем разберитесь, а потом!!!! соединяйте.

zugni
Offline
Зарегистрирован: 14.06.2015

просто часы я делал этот скетч с температорой и влажностью ошибки переправил а вот чтоб 2 скетча в один слить не могу 5 часов мучую один дисплей у же не работает 2 ой пока что живой так что нужна помощь (

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

просто часы я делал этот скетч с температорой и влажностью ошибки переправил а вот чтоб 2 скетча в один слить не могу 5 часов мучую один дисплей у же не работает 2 ой пока что живой так что нужна помощь (

опросили первое устрйство, получили переменные, вывели их на экран - какие могут быть сложности??? Могу посоветовать лишь одно, посылать в монитор порта переменные в контрольных точках и проверять их значения... типа

 Serial.println(sensorValue);
 Serial.println(VAL);
 Serial.println(z  );
 Serial.println(x  );
 Serial.println(c  );
 Serial.println(v  );
 Serial.println("----" );

delay(2500);

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

просто часы я делал этот скетч с температорой и влажностью ошибки переправил а вот чтоб 2 скетча в один слить не могу 5 часов мучую один дисплей у же не работает 2 ой пока что живой так что нужна помощь (

я тоже недавно учился... :) посмотрите как организован loop ()  и убейте в своем коде все лишнее (для наглядности)

zugni
Offline
Зарегистрирован: 14.06.2015

Вот как я сдела они будут работать ?

#include <DS1302.h>
#include <Wire.h>        // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT;               // Объявление переменной класса dht11
#define DHT11_PIN 4      // Датчик DHT11 подключен к цифровому пину номер 4

byte degree[8] =         // Битовая маска символа градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};    

DS1302 rtc(2, 3, 4); 
LiquidCrystal_I2C lcd(0x27,16,2);   // Задаем адрес и размерность дисплея
Time t;

void setup()
{
  lcd.init();                       // Инициализация lcd             
  lcd.backlight();                  // Включаем подсветку
  lcd.createChar(1,degree);        // Создаем символ под номером 1

  rtc.halt(false);
  rtc.writeProtect(false);
  rtc.setTime(17, 21, 00);
}

void loop()
{
  t = rtc.getTime(); 

  lcd.init();                     
  lcd.backlight(); 
  lcd.print(rtc.getTimeStr());
  // Выводим показания влажности и температуры
  lcd.setCursor(0,0);              // Устанавливаем курсор в начало 1 строки
  lcd.print("humidity = %");                   // Выводим текст
  lcd.setCursor(11,0); 
  lcd.print(DHT.humidity, 1);
  lcd.setCursor(0,1);              // Устанавливаем курсор в начало 2 строки
  lcd.print("temp = \1C");                 // Выводим текст, \1 - значок градуса
  lcd.setCursor(11,1);             
  lcd.print(DHT.temperature,1);  

  int chk;    
  ; // Мониторинг ошибок
  chk = DHT.read(DHT11_PIN);    // Чтение данных
  switch (chk){
  case DHTLIB_OK:  
    break;
  case DHTLIB_ERROR_CHECKSUM:  
    lcd.clear(); 
    lcd.print("Checksum error");  
    break;
  case DHTLIB_ERROR_TIMEOUT:
    lcd.clear(); 
    lcd.print("Time out error");
    break;
  default:
    lcd.clear(); 
    lcd.print("Unknown error");
    break;
  }
  delay(1000);                     
}

 

zugni
Offline
Зарегистрирован: 14.06.2015

Ладно все понятно с вами(

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

Ладно все понятно с вами(

да Вам похеже в эту тему :)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

zugni пишет:

Ладно все понятно с вами(

ну так с нами с самого начала все понятно.. ну не любим мы халявщиков.. пришел учиться, учись!

Гриша
Offline
Зарегистрирован: 27.04.2014

Puhlyaviy пишет:

zugni пишет:

Ладно все понятно с вами(

ну так с нами с самого начала все понятно.. ну не любим мы халявщиков.. пришел учиться, учись!

именно УЧИТЬСЯ, остальное в разделе "ищу исполнителя"

zugni
Offline
Зарегистрирован: 14.06.2015

а я и не ищу халяву я просто прошу показать как урок что ли а не написать скетч за меня (

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

выше - много чего почитать-подумать вам предложили....
...или конкретней-ужееееее ( точнее ) вопрос задавайте :)

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

а я и не ищу халяву я просто прошу показать как урок что ли а не написать скетч за меня (

для урока, Вы выбрали слишком ОБЪЕМНУЮ задачу, одно дело помочь с выводом на LCD другое, слепить два скетча, тем более, что вы еще с первым не разобрались (видно из ваше го "слепка скетчей")!!!

сделайте самые простые часы на millis на LCD!!! и покажите скетч... потом продолжим, а до того помогать мы просто не сможем.

UPD. не часы, а таймер!!

zugni
Offline
Зарегистрирован: 14.06.2015

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

Гриша
Offline
Зарегистрирован: 27.04.2014

SU-27-16 пишет:

...или конкретней-ужееееее ( точнее ) вопрос задавайте :)

конкретнее! :) пост 19 ... без комментариев

Гриша
Offline
Зарегистрирован: 27.04.2014

zugni пишет:

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

никто и не ругается! вам вопрос, а вы в обиду... я пас из этой темы... (тоже обиделся :)))))

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

zugni пишет:

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

зптЫе - очень важны в постах..... ибо только вам известен ход вашей мысли :(
...как и в коде :)-

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Гриша пишет:

zugni пишет:

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

никто и не ругается! вам вопрос, а вы в обиду... я пас из этой темы... (тоже обиделся :)))))

вот и жертвы появились..... КАК типерь он сможет кому-то помочь ?
Гриша ! держись !!!! :)-

bwn
Offline
Зарегистрирован: 25.08.2014

SU-27-16 пишет:

zugni пишет:

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

зптЫе - очень важны в постах..... ибо только вам известен ход вашей мысли :(
...как и в коде :)-

Пробелы рекомендую тоже убрать.

zugni
Offline
Зарегистрирован: 14.06.2015

bwn пишет:

SU-27-16 пишет:

zugni пишет:

не ругайтесь я сам разберусь как не то раз тут не подсказывают по нармальному 

зптЫе - очень важны в постах..... ибо только вам известен ход вашей мысли :(
...как и в коде :)-

Пробелы рекомендую тоже убрать.

вот сюда нужно мне добавить часики посоветуй(

#include <Wire.h>        // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT;               // Объявление переменной класса dht11
#define DHT11_PIN 4      // Датчик DHT11 подключен к цифровому пину номер 4

byte degree[8] =         // Битовая маска символа градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};    
 
LiquidCrystal_I2C lcd(0x27,16,2);   // Задаем адрес и размерность дисплея

void setup()
{
  lcd.init();                       // Инициализация lcd             
  lcd.backlight();                  // Включаем подсветку
  lcd.createChar(1, degree);        // Создаем символ под номером 1
}

void loop()
{
  // Выводим показания влажности и температуры
  lcd.setCursor(0, 0);              // Устанавливаем курсор в начало 1 строки
  lcd.print("Humidity =    % ");     // Выводим текст
  lcd.setCursor(11, 0); 
  lcd.print(DHT.humidity, 1);
  lcd.setCursor(0, 1);              // Устанавливаем курсор в начало 2 строки
  lcd.print("Temp     =   \1C ");    // Выводим текст, \1 - значок градуса
  lcd.setCursor(11, 1);             
  lcd.print(DHT.temperature,1);  


  int chk;    
  ; // Мониторинг ошибок
  chk = DHT.read(DHT11_PIN);    // Чтение данных
  switch (chk){
  case DHTLIB_OK:  
    break;
  case DHTLIB_ERROR_CHECKSUM:  
    lcd.clear(); 
    lcd.print("Checksum error");  
    break;
  case DHTLIB_ERROR_TIMEOUT:
    lcd.clear(); 
    lcd.print("Time out error");
    break;
  default:
    lcd.clear(); 
    lcd.print("Unknown error");
    break;
  }
  delay(1000);                     
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

Ну что вы паритесь, вам Гриша в 16 посте все написал. Берете свои часы из первого поста, берете свой крайний код. Объединяете область инициализации, объединяете Setup-ы, дополняете loop двумя кодами, разделяете их delay-ми и будет у вас экран раз в секунду меняться - время, датчики. Как курсоры ставить и экран чистить, надеюсь сами разберетесь.

zugni
Offline
Зарегистрирован: 14.06.2015

) вот так чтоли но не показывает что то ( 

#include <DS1302.h>
#include <Wire.h>        // Добавляем необходимые библиотеки
#include <LiquidCrystal_I2C.h>
#include <dht11.h>
dht11 DHT;               // Объявление переменной класса dht11
#define DHT11_PIN 4      // Датчик DHT11 подключен к цифровому пину номер 4

byte degree[8] =         // Битовая маска символа градуса
{
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
};    
 
LiquidCrystal_I2C lcd(0x27,16,2);   // Задаем адрес и размерность дисплея

DS1302 rtc(2, 3, 4);    // (RST, DAT, CLK)

Time t;

void setup(){
  
  rtc.halt(false);
  rtc.writeProtect(false);
  rtc.setTime(17, 21, 00);
  
  lcd.init();                       // Инициализация lcd             
  lcd.backlight();                  // Включаем подсветку
  lcd.createChar(1, degree);        // Создаем символ под номером 1
}

void loop(){

  t = rtc.getTime(); 
  lcd.print(rtc.getTimeStr());  
  
  
  // Выводим показания влажности и температуры
  lcd.setCursor(0, 0);              // Устанавливаем курсор в начало 1 строки
  lcd.print("Humidity =    % ");     // Выводим текст
  lcd.setCursor(11, 0); 
  lcd.print(DHT.humidity, 1);
  lcd.setCursor(0, 1);              // Устанавливаем курсор в начало 2 строки
  lcd.print("Temp     =   \1C ");    // Выводим текст, \1 - значок градуса
  lcd.setCursor(11, 1);             
  lcd.print(DHT.temperature,1);  


  int chk;    
  ; // Мониторинг ошибок
  chk = DHT.read(DHT11_PIN);    // Чтение данных
  switch (chk){
  case DHTLIB_OK:  
    break;
  case DHTLIB_ERROR_CHECKSUM:  
    lcd.clear(); 
    lcd.print("Checksum error");  
    break;
  case DHTLIB_ERROR_TIMEOUT:
    lcd.clear(); 
    lcd.print("Time out error");
    break;
  default:
    lcd.clear(); 
    lcd.print("Unknown error");
    break;
  }
  delay(1000);                     
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

строка 40 delay(3000);

zugni
Offline
Зарегистрирован: 14.06.2015

ну а так хоть правильно или что то не так сделал

bwn
Offline
Зарегистрирован: 25.08.2014

Так время отображает или нет? У меня вашего модуля нет.

А к каким пинам, что подключено? Судя по коду, часы и DHT на одном пине висят((((

zugni
Offline
Зарегистрирован: 14.06.2015

все работает теперь я не как не даганю как мне цыфры подвинуть влажности и температуры а то часы не полностью ведны 

 

zugni
Offline
Зарегистрирован: 14.06.2015

вот в этом блоке кода или ниже?

byte degree[8] =         // Битовая маска символа градуса
09
{
10
  B00111,
11
  B00101,
12
  B00111,
13
  B00000,
14
  B00000,
15
  B00000,
16
  B00000,
17
};   

 

zugni
Offline
Зарегистрирован: 14.06.2015

Влаж= <-------------51 %

темер= <-------------29 C 17:

вот так я думаю надо здвинуть цыфры и часы появятся 

bwn
Offline
Зарегистрирован: 25.08.2014

lcd.setCursor(0, 0); и так далее

bwn
Offline
Зарегистрирован: 25.08.2014

В строке 40 и строке 72  delay(3000); lcd.clear(); каждые три секунды должно менятся

zugni
Offline
Зарегистрирован: 14.06.2015

вот за этот урок Вам большое спс))))) все работает ,но появилась задумка там у меня в верху свободная сторока появилась и думаю теперь сам попробую дни поставить но не совсем уж дни ) а буквы П В С Ч П С В и что самое главное на сделать так чтоб наступил день Пн и чтоб он мигал каждые 3 сек) круто ))

bwn
Offline
Зарегистрирован: 25.08.2014

Для первого раза и поддержания задора это хорошо. А на самом деле, к танку привязали плуг для лошади и вспахиваем огород в три сотки. Примерно выглядит так. Читайте, анализируйте, пробуйте.