#1 17-12-2019 20:07:11

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Не в сети

#2 19-12-2019 13:20:14

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

15767362741881417013014570408429.jpg

15767363221558016530918801493542.jpg

Не в сети

#3 19-12-2019 13:23:35

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Прикрутил дисплей ST7735 к Arduino UNO + градусник DS18B20. Дисплей не дорогой, но не очень качественно собран. Пришлось заново приклеивать сам дисплей к плате, на двухсторонний скотч.

#include <SPI.h>
#include "Ucglib.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800  
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0  
#define WHITE   0xFFFF

Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=_SCL*/ 13, /*data=SDA*/ 11, /*cd=DC*/ 9, /*cs=CS*/ 10, /*reset=RES*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
#define ONE_WIRE_BUS_1 7//ВХОД DS18B20
OneWire oneWire_in(ONE_WIRE_BUS_1);
DallasTemperature sensor_inhouse(&oneWire_in);

void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  Serial.begin(115200);
  //ds18b20
  sensor_inhouse.begin();
}

void loop(void)
{
  //ds18b20//
    sensor_inhouse.requestTemperatures();
    Serial.print("Inhouse: ");
    Serial.println(sensor_inhouse.getTempCByIndex(0)); 

float tempC = sensor_inhouse.getTempCByIndex(0);
   ucg.setRotate90();
  ucg.setFont(ucg_font_ncenR24_tr);
  ucg.setColor(0, 255, 0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.println("ТЕМПЕРАТУРА 1");
    Serial.print(tempC);
   
  //ucg.clearScreen();
  ucg.setPrintPos(0,25);
  ucg.print("T1_");
  ucg.setPrintPos(60,25);
  ucg.print(tempC);
  delay(1800);
  ucg.setColor(0, 0, 0);
  ucg.setPrintPos(60,25);
  ucg.print(tempC);
  }
  else Serial.print("DEVICE1 ds18b20 DISCONNECTED");
  Serial.print(" ");
}

Не в сети

#4 14-01-2020 23:44:07

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Новая плата/шилд. Дисплей ST7735 + дисплей светодиодный 4 бит на TM1637. Прототип, в железе ещё не собирал.


ARDUINO-UNO-SHIELD-1-7-DIG.gif
Скетч для проверки работоспособности обоих дисплеев.

#include <SPI.h>
#include "Ucglib.h"
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800  
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0  
#define WHITE   0xFFFF
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=_SCL*/ 13, /*data=SDA*/ 11, /*cd=DC*/ 10, /*cs=CS*/ 9, /*reset=RES*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9, /*cs=*/ 10, /*reset=*/ 8);
#include "TM1637.h"
#define CLK 2
#define DIO 3
TM1637 disp(CLK, DIO);
void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  Serial.begin(115200);
   //TM1637//
  disp.init();  // инициализация дисплея
  disp.set(3);  // яркость дисплея, 0 - 7 (минимум - максимум)
   disp.point(1);//ВКЛЮЧИТЬ ДВОЕТОЧИЕ.
}
void loop(void)
{
   ucg.setRotate90();
  ucg.setFont(ucg_font_ncenR24_tr);
  ucg.setColor(0, 255, 0);  
  //ucg.clearScreen();
  ucg.setPrintPos(0,25);
  ucg.print("T1_");
  delay(1800);
 disp.point(1);//ВКЛЮЧИТЬ ДВОЕТОЧИЕ.
  disp.displayByte(_dash, _dash, _dash, _dash); //индикация --:--
  delay(3000); 
}

Не в сети

#5 15-01-2020 17:29:50

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Новая плата в железе.

1579083868745464206450787082409.jpg

15790839937756715770516652674190.jpg

15790840714884131867779123483908.jpg

15790841404292042409070415824459.jpg

Не в сети

#6 15-01-2020 17:44:35

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Код.

#include <SPI.h>
#include "Ucglib.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#include "TM1637.h"
#define CLK 2
#define DIO 3
TM1637 disp(CLK, DIO);
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800  
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0  
#define WHITE   0xFFFF
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=_SCL*/ 13, /*data=SDA*/ 11, /*cd=DC*/ 10, /*cs=CS*/ 9, /*reset=RES*/ 8);

#define ONE_WIRE_BUS_1 5//ВХОД DS18B20
OneWire oneWire_in(ONE_WIRE_BUS_1);
DallasTemperature sensor_inhouse(&oneWire_in);
//DeviceAddress insideThermometer, outsideThermometer,outsideThermometer1;
void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  Serial.begin(115200);
  //ds18b20
  sensor_inhouse.begin();
 //TM1637//
  disp.init();  // инициализация дисплея
  disp.set(1);  // яркость дисплея, 0 - 7 (минимум - максимум)
  disp.point(1);//ВКЛЮЧИТЬ ДВОЕТОЧИЕ.
}

void loop(void)
{
  //ds18b20//
    sensor_inhouse.requestTemperatures();
    Serial.print("Inhouse: ");
    Serial.println(sensor_inhouse.getTempCByIndex(0)); 

float tempC = sensor_inhouse.getTempCByIndex(0);
   ucg.setRotate270();
  ucg.setFont(ucg_font_ncenR24_tr);
  ucg.setColor(0, 255, 0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.println("ТЕМПЕРАТУРА 1");
    Serial.print(tempC);
  ucg.setPrintPos(0,27);
  ucg.print("T1:");
  ucg.setPrintPos(55,27);
  ucg.print(tempC);
  ucg.print("C");
  disp.displayInt(tempC*100);
  ucg.setPrintPos(0,54);
  ucg.print("T2:");
   ucg.setPrintPos(0,81);
  ucg.print("T3:");
   ucg.setPrintPos(0,108);
  ucg.print("T4:");
  delay(1800);
  ucg.setColor(0, 0, 0);
  ucg.setPrintPos(55,27);
  ucg.print(tempC);
  }
  else Serial.print("DEVICE1 ds18b20 DISCONNECTED");
  Serial.print(" ");
}

Не в сети

#7 26-01-2020 00:01:39

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Добавил NTC датчик 10К. Такой как в W1209 используется.  Датчик припаян к аналоговому входу А0 и +5В. С контакта А0 на землю идёт резистор 12К(его реальное сопротивление 11300 Ом        // Value of the series resistor).

#include "thermistor.h"
#include "HardwareSerial.h"
#include <SPI.h>
#include "Ucglib.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#include "TM1637.h"
#define CLK 2
#define DIO 3
TM1637 disp(CLK, DIO);
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=_SCL*/ 13, /*data=SDA*/ 11, /*cd=DC*/ 10, /*cs=CS*/ 9, /*reset=RES*/ 8);
float tempNTC=0;
#define ONE_WIRE_BUS_1 5//ВХОД DS18B20
OneWire oneWire_in(ONE_WIRE_BUS_1);
DallasTemperature sensor_inhouse(&oneWire_in);
//DeviceAddress insideThermometer, outsideThermometer,outsideThermometer1;
// Analog pin used to read the NTC
#define NTC_PIN               A0
// Thermistor object
THERMISTOR thermistor(NTC_PIN,        // Analog pin
                      10000,          // Nominal resistance at 25 ºC
                      3950,           // thermistor's beta coefficient
                      11300);         // Value of the series resistor
// Global temperature reading
uint16_t temp;
void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  Serial.begin(115200);
  //ds18b20
  sensor_inhouse.begin();
 //TM1637//
  disp.init();  // инициализация дисплея
  disp.set(1);  // яркость дисплея, 0 - 7 (минимум - максимум)
  disp.point(1);//ВКЛЮЧИТЬ ДВОЕТОЧИЕ.
}
void loop(void)
{
  //ds18b20//
    sensor_inhouse.requestTemperatures();
    Serial.print("Inhouse: ");
    Serial.println(sensor_inhouse.getTempCByIndex(0)); 
float tempC = sensor_inhouse.getTempCByIndex(0);
   ucg.setRotate270();
  ucg.setFont(ucg_font_ncenR24_tr);
  ucg.setColor(0, 255, 0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.println("ТЕМПЕРАТУРА 1");
    Serial.print(tempC);
  ucg.setPrintPos(0,27);
  ucg.print("DS18B20:");
  ucg.setPrintPos(0,54);
  ucg.print(tempC);
  ucg.print("*C");
  disp.displayInt(tempC*100);
   ucg.setPrintPos(0,81);
  ucg.print("NTC_10K:");
   ucg.setPrintPos(0,110);
   temp = thermistor.read();   // Read temperature
   tempNTC=temp/10;
  ucg.print(tempNTC);
 ucg.print("*C");
  delay(1800);
  ucg.setColor(0, 0, 0);
 ucg.setPrintPos(0,54);
  ucg.print(tempC);
   ucg.setPrintPos(0,110);
  Serial.println(temp);
   ucg.print(tempNTC);
  }
  else Serial.print("DEVICE1 ds18b20 DISCONNECTED");
  Serial.print(" ");
}

Не в сети

#8 26-01-2020 00:17:23

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

15799723792537631878182375588801.jpg

15799724295435676653337841337416.jpg

15799724842663177061965606413574.jpg

15799725693957473328327012946622.jpg

Не в сети

#9 26-01-2020 00:35:58

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

Поправил скетч. Так, правильней.

#include "thermistor.h"
#include "HardwareSerial.h"
#include <SPI.h>
#include "Ucglib.h"
#include <DallasTemperature.h>
#include <OneWire.h>
#include "TM1637.h"
#define CLK 2
#define DIO 3
TM1637 disp(CLK, DIO);
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=_SCL*/ 13, /*data=SDA*/ 11, /*cd=DC*/ 10, /*cs=CS*/ 9, /*reset=RES*/ 8);
float tempNTC=0;
#define ONE_WIRE_BUS_1 5//ВХОД DS18B20
OneWire oneWire_in(ONE_WIRE_BUS_1);
DallasTemperature sensor_inhouse(&oneWire_in);
//DeviceAddress insideThermometer, outsideThermometer,outsideThermometer1;
// Analog pin used to read the NTC
#define NTC_PIN               A0
// Thermistor object
THERMISTOR thermistor(NTC_PIN,        // Analog pin
                      10000,          // Nominal resistance at 25 ºC
                      3950,           // thermistor's beta coefficient
                      11300);         // Value of the series resistor
// Global temperature reading
uint16_t temp;
void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  Serial.begin(115200);
  //ds18b20
  sensor_inhouse.begin();
 //TM1637//
  disp.init();  // инициализация дисплея
  disp.set(1);  // яркость дисплея, 0 - 7 (минимум - максимум)
  disp.point(1);//ВКЛЮЧИТЬ ДВОЕТОЧИЕ.
}
void loop(void)
{
  //ds18b20//
    sensor_inhouse.requestTemperatures();
    Serial.print("Inhouse: ");
    Serial.println(sensor_inhouse.getTempCByIndex(0)); 
float tempC = sensor_inhouse.getTempCByIndex(0);
   ucg.setRotate270();
  ucg.setFont(ucg_font_ncenR24_tr);
  ucg.setColor(0, 255, 0);
  if (tempC != DEVICE_DISCONNECTED_C)
  {
    Serial.println("ТЕМПЕРАТУРА 1");
    Serial.print(tempC);
  ucg.setPrintPos(0,27);
  ucg.print("DS18B20:");
  ucg.setPrintPos(0,54);
  ucg.print(tempC);
  ucg.print("*C");
  disp.displayInt(tempC*100);
  }
  else Serial.print("DEVICE1 ds18b20 DISCONNECTED");
  /////////////////////////////
   ucg.setPrintPos(0,81);
  ucg.print("NTC_10K:");
   ucg.setPrintPos(0,110);
   temp = thermistor.read();   // Read temperature
   tempNTC=temp/10;
  ucg.print(tempNTC);
 ucg.print("*C");
  delay(1800);
 ucg.setColor(0, 0, 0);
 ucg.setPrintPos(0,54);
  ucg.print(tempC);
  ucg.setPrintPos(0,110);
  Serial.println(temp);
   ucg.print(tempNTC);
}

Не в сети

#10 14-10-2020 22:06:25

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

https://github.com/cbm80amiga/Arduino_ST7735_Fast
Arduino_ST7735_Fast.h - самая быстрая библиотека для тормозных плат/процессоров типа Arduino Uno. Вполне себе прилично библиотека работает. Если оптимизировать код и перерисовывать только изменяющиеся зоны изображения , довольно хорошо работает. Почти не мыргает.
Для устранения артефактов изображения(в виде горизонтальных и вертикальных полос в низу и с лева) нужно немножко поправить библиотеку Arduino_ST7735_Fast.h
Находим в файле Arduino_ST7735_Fast.h  значение 160 и меняем его на 161, 128 меняем на 130.
Эти параметры должны стать такими:
#define ST7735_TFTWIDTH     130
#define ST7735_TFTHEIGHT     161

image.png

https://alexgyver.ru/encoder/

Не в сети

#11 18-10-2020 01:15:23

IvanAltay
Administrator
Зарегистрирован: 03-05-2018
Сообщений: 4,586

Re: Arduino UNO R3+128x160TFT дисплей ST7735+светодиодный дисплей TM1637.

16029584133967299295578050920752.jpg

16029584638634420913873987112430.jpg

Не в сети

Подвал раздела

Работает на FluxBB (перевод Laravel.ru)