Ви не увійшли.
http://prntscr.com/6wthff
Вот скрин будущей моей платы!
Добрый день!
Значит свою распайку контактов на плате оставляю? Они подойдут и к экрану с 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 будет у меня как донором для прошивки.
вечер добрый, ну что ж начните с дисплея
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);
Или вот :
// 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");
}
////// конец
Привет!
Я не против. Но в электрике без проблем подключу. Но в Скетч внести изменения , даже не знаю куда добавить вверх или в низ своего Скетча?
// 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);
}
Это по второму дисплею.
привет )
я тоже не силён в программировании Ардуино.
с выводом на дисплей у вас вообще не будет особых проблем.
по остальным вопросам ) рекомендую не занижать свои силы и все у вас получится )
смотрел библиотеки ардуиновские SPI/I2C,они хорошие, все запустите сами . получите море удовольствия )
Автору на Ютубе писал ранее о предложении внести неплохие дополнения. Так как вроде не плохо работает блок питания на Ардуино.
Так как уже заказал LCD 20x4 с подсветкой . В наличии уже есть Барометр (датчик атмосферного давления) BMP180 , Датчик влажности и температуры DHT11, Датчик температуры DS18B20 , Real Time Clock Модуль с батарейкой (DS1307).
Некоторые уже компоненты в наличии. Уже готовлю в Sprint Layout 6.0 печатную плату для своего рабочего блока питания .
Но есть одна проблема у меня я не силён в программировании Ардуино. Но думаю кто поможет реализовать мою идею , за мной не заржавеет.
спс
День добрый, тема свежая, сам автор пишет "Сам код, достаточно хорошо прокомментирован, но если будут вопросы — пишите комментарии! Обязательно отвечу. "
к автору то обращались?, ваши доработки имеют смысл, думаю что не откажет )
Добрый день !
Дайте совет. Возможно ли внести изменения в Скетч который будет прилагаться в этом письме.
Есть у меня интересная задумка по поводу внесения изменения + доработка в этот Лабораторный БП на Arduino_1.1.
Хочу добавить в него таймер на отсчёт времени зарядки аккумуляторов (примерно 10ч) + установить датчик температуры.
Посоветуйте как это реализовать в прошивке (Скетче) ?
Не охота ещё лепить второй ARDUINO UNO + второй индикатор.
Думаю заместо LCD 16x2 с подсветкой установить LCD 20x4 с подсветкой .
И в третью и четвёртую строки индикации внести : дату , время , температуру. - типа такого.
Возможно ли такое реализовать в жизнь?
Или что Вы сможете посоветовать?
спс