#2 Програмування Arduino » Помогите уменьшить код » 2019-02-14 11:53:26

daa_sasha
відповідей: 3

Здравствуйте.
Написал такой скетч для отображения температур с датчиков DS18B20 на OLED дисплея 128X64. Можно как-то его уменьшить чтобы уместить в mega8. Я только начал по немного разбираться в программировании. Можно уменьшить за счет шрифтов но как удалить не нужные буквы со шрифта я не могу понять. Отказаться от DallasTemperature.h не могу так как использую поиск и задание датчиков.
Помогите. Кто что посоветует.

#include <U8glib.h>
//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9);	// SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7);	// SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED)
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);	// I2C / TWI 
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);	// Dev 0, Fast I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);	// Display which does not send ACK

#include <rus8x13.h>
#include <rus10x20.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3 // вывод, к которому подключён DS18B20
#define TEMPERATURE_PRECISION 12 // точность измерений (9 ... 12)

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
DeviceAddress Thermometer1;
DeviceAddress Thermometer2;
float temp1 = 0.0; // текущее значение температуры
float temp2 = 0.0; // текущее значение температуры

void setup() {
  sensor.begin(); // инициализация DS18B20
  sensor.getAddress(Thermometer1, 0); // адрес DS18B20 (поиск по индексу)
  sensor.getAddress(Thermometer2, 1);
  sensor.setResolution(Thermometer1, TEMPERATURE_PRECISION);// установка точности измерения 9...12 разрядов
  sensor.setResolution(Thermometer2, TEMPERATURE_PRECISION);
}
//void draw(void) {
 void loop(void) { 
  sensor.requestTemperatures(); // считывание значение температуры
  temp1 = sensor.getTempC(Thermometer1); // температура в градусах Цельсия
  temp2 = sensor.getTempC(Thermometer2);
     u8g.firstPage();
     do {
      //u8g.setColorIndex(1);
      u8g.setFont(rus8x13);
      u8g.setPrintPos(38,13); u8g.print("Салон");
      u8g.setFont(rus10x20);
      u8g.setPrintPos(10,32); u8g.print(temp1);
      u8g.drawCircle(85,16,2);
      u8g.setPrintPos(89,32); u8g.print("C");
      u8g.setFont(rus8x13);
      u8g.setPrintPos(38,44); u8g.print("Улица");
      u8g.setFont(rus10x20);
      u8g.setPrintPos(10,64); u8g.print(temp2);
      u8g.drawCircle(85,48,3);
      u8g.setPrintPos(89,64); u8g.print("C");
      }    while (u8g.nextPage());
      }

Підвал форуму