Ви не увійшли.

Добрый день !
Дайте совет. Возможно ли внести изменения в Скетч который будет прилагаться в этом письме.
Есть у меня интересная задумка по поводу внесения изменения + доработка в этот Лабораторный БП на Arduino_1.1.
Хочу добавить в него таймер на отсчёт времени зарядки аккумуляторов (примерно 10ч) + установить датчик температуры.
Посоветуйте как это реализовать в прошивке (Скетче) ?
Не охота ещё лепить второй ARDUINO UNO + второй индикатор.
Думаю заместо LCD 16x2 с подсветкой установить LCD 20x4 с подсветкой .
И в третью и четвёртую строки индикации внести : дату , время , температуру. - типа такого.
Возможно ли такое реализовать в жизнь?
Или что Вы сможете посоветовать?
спс
Неактивний

Неактивний

День добрый, тема свежая, сам автор пишет "Сам код, достаточно хорошо прокомментирован, но если будут вопросы — пишите комментарии! Обязательно отвечу. "
к автору то обращались?, ваши доработки имеют смысл, думаю что не откажет )
Неактивний

Автору на Ютубе писал ранее о предложении внести неплохие дополнения. Так как вроде не плохо работает блок питания на Ардуино.
Так как уже заказал LCD 20x4 с подсветкой . В наличии уже есть Барометр (датчик атмосферного давления) BMP180 , Датчик влажности и температуры DHT11, Датчик температуры DS18B20 , Real Time Clock Модуль с батарейкой (DS1307).
Некоторые уже компоненты в наличии. Уже готовлю в Sprint Layout 6.0 печатную плату для своего рабочего блока питания .
Но есть одна проблема у меня я не силён в программировании Ардуино. Но думаю кто поможет реализовать мою идею , за мной не заржавеет.
спс
Неактивний

привет )
я тоже не силён в программировании Ардуино.   
 
с выводом на дисплей у вас вообще не будет особых проблем.
по остальным вопросам ) рекомендую не занижать свои силы и все у вас получится )
смотрел  библиотеки ардуиновские SPI/I2C,они хорошие, все запустите сами . получите море удовольствия )
Неактивний

Привет!
Я не против. Но в электрике без проблем подключу. Но в Скетч внести изменения , даже не знаю куда добавить вверх или в низ своего Скетча?
// Arduino LCD ЖК дисплей 2004 204 20X4 Character Display Blue Blacklight
#include <LiquidCrystal.h> // Подключаем библиотеку LiquidCrystal.
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // контакты на Arduino = lcd: - (2=RS, 3=E, 4=D4, 5=D5, 6=D6, 7=D7)
// PIN lcd-(V0)подсветка дисплея. Подключаем к GND/Земля, через резистор 2.2 килоом.
void setup() 
{    
  lcd.begin(20, 4); // устанавливаем размер (количество столбцов и строк) экрана.   
  lcd.print("Hello world! 11111"); // печатаем первую строку.
  // устанавливаем курсор в колонку 0, строку 1. 
  lcd.setCursor(0, 1); // на самом деле это строка №2, т.к. нумерация начинается с 0.
  lcd.print("Dmitry OSIPOV 22222"); // печатаем 2 строку.    
  lcd.setCursor(0, 2); // устанавливаем курсор в колонку 0, строку 2.(строка №3 ).
  lcd.print("youtube.com 333333"); // печатаем 3 строку. 
}
void loop() {
  lcd.setCursor(0, 3); // устанавливаем курсор в колонку 0, строку 3.(строка №4 ).
  lcd.print("Arduino test "); // печатаем 4 строку.
  lcd.print(millis()/1000); // печатаем 4 строку. 
  delay(1000);
}
Это по второму дисплею.
Неактивний

Или вот :
// LM75 + DS1307 
// Код из видео http://youtu.be/ZJ123KbrXmY
//  
#include <Wire.h>
#include <LiquidCrystal.h>
#define DS1307_I2C_ADDRESS 0x68
#define LM75_I2C_ADDRESS 0b1001000 //  1001 A0 A1 A2
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
byte gradus[8] = {
  0b00110,
  0b01001,
  0b01001,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
///// часы ..
byte decToBcd(byte val){
  return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val){
  return ( (val/16*10) + (val%16) );
}
void setDateDs1307(byte second,        // 0-59
                   byte minute,        // 0-59
                   byte hour,          // 1-23
                   byte dayOfWeek,     // 1-7
                   byte dayOfMonth,    // 1-28/29/30/31
                   byte month,         // 1-12
                   byte year)          // 0-99
{
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.write(0);
   Wire.write(decToBcd(second));    
   Wire.write(decToBcd(minute));
   Wire.write(decToBcd(hour));     
   Wire.write(decToBcd(dayOfWeek));
   Wire.write(decToBcd(dayOfMonth));
   Wire.write(decToBcd(month));
   Wire.write(decToBcd(year));
   Wire.endTransmission();
}
void getDateDs1307(byte *second,
          byte *minute,
          byte *hour,
          byte *dayOfWeek,
          byte *dayOfMonth,
          byte *month,
          byte *year)
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
  *second     = bcdToDec(Wire.read() & 0x7f);
  *minute     = bcdToDec(Wire.read());
  *hour       = bcdToDec(Wire.read() & 0x3f); 
  *dayOfWeek  = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month      = bcdToDec(Wire.read());
  *year       = bcdToDec(Wire.read());
}
  
///// температура ..
float getTempLM75(){
    float val;
    Wire.beginTransmission(LM75_I2C_ADDRESS);
    Wire.write(0x00);
    Wire.endTransmission(); 
    Wire.requestFrom(LM75_I2C_ADDRESS, 2);      
    while(Wire.available() < 2);    
    byte msb = Wire.read();    
    byte lsb = Wire.read();
    if (msb < 0x80) val=((msb*10)+(((lsb&0x80)>>7)*5));
    else{
       val=((msb*10)+(((lsb&0x80)>>7)*5));
       val=-(2555.0-val);
    }
    return val/10;
}
void setup()
{
  Wire.begin();
  lcd.createChar(1, gradus);
  lcd.begin(16, 2);
  lcd.clear();
 /*  // установка часов
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  second = 30;
  minute = 0;
  hour = 14;
  dayOfWeek = 3; // день недели
  dayOfMonth = 1; // день
  month = 4;
  year = 14;
  setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
 */
}
void loop()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  char week[8][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  
//   lcd.clear();
    lcd.setCursor(1, 0);
     if (hour < 10) lcd.print("0"); 
    lcd.print(hour); 
    lcd.print(":");
     if (minute < 10) lcd.print("0"); 
    lcd.print(minute);
//  lcd.print(":");
//   if (second < 10) lcd.print("0");
//  lcd.print(second);
    lcd.setCursor(8, 0);
    lcd.print(week[dayOfMonth]);
    lcd.print("    ");  
    lcd.setCursor(0, 1);
     if (dayOfMonth < 10) lcd.print("0");
    lcd.print(dayOfMonth);
    lcd.print("/");
     if (month < 10) lcd.print("0");
    lcd.print(month);
    lcd.print("/");
     if (year < 10) lcd.print("0");
    lcd.print(year);
    lcd.print("  ");
    lcd.print(int(getTempLM75()));
    lcd.write(1);
    lcd.print("C"); 
}
////// конец
Неактивний

вечер добрый, ну что ж начните с дисплея
original
LiquidCrystal lcd(11, 6, 5, 4, 3, 2); //rs, e, d4, d5, d6, d7свой дисплей так и подключайте 
ваш пример - LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // контакты на Arduino = lcd: - (2=RS, 3=E, 4=D4, 5=D5, 6=D6, 7=D7) в чистом виде не подходит
в void setup()
 //запуск дисплея
  lcd.begin(16, 2);     
  lcd.print("Loading..."); исправляете на
lcd.begin(20, 4); // устанавливаем размер (количество столбцов и строк) экрана.   
 lcd.clear(); //
 lcd.print("Loading...");вывод будет работать, использует установку курсора lcd.setCursor (X,Y);
Неактивний

Добрый день!
Значит свою распайку контактов на плате оставляю? Они подойдут и к экрану с 20, 4 ?
Только в Скетче нужно будет поменять вот эти строки: 
lcd.begin(20, 4); // устанавливаем размер (количество столбцов и строк) экрана.   
 lcd.clear(); //
 lcd.print("Loading...");
хорошо.
Сегодня вечером на Новую почту приходит экран 20,4 .
Выводы думаю по распайке экрана должны быть идентичны? От 1 ..... 16.
Да ещё Второй вопрос, на какие выводу будет оптимально повесить(подключить) Real Time Clock Модуль с батарейкой (DS1307) и Датчик влажности и температуры DHT11.?
Готовлю печатную плату для ATmega328 чип с загрузчиком Arduino UNO и сразу к нему сделаю выводы под индикатор 20,4.
А сама плата Клон Arduino Uno Rev3 будет у меня как донором для прошивки.
Неактивний

http://prntscr.com/6wthff
Вот скрин будущей моей платы!
Неактивний