акваконтроллер помогите немного изменить скетч

asdhooper
Offline
Зарегистрирован: 19.03.2017

здравствуйте. взял готовый скетч, в программировании не разбираюсь, ардуино взял в руки первый раз, помогите решить проблему. существует проблема с отображением времени чисел до 10 и не могу поставить точку в показания температурного датчика(вместо точки стоит буква Ю) и при проверке выскакивает предупреждение

E:\AquaRCh\AquaRCh\AquaRCh.ino: In function 'void setup()':
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:107:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
 myOLED.print("FRDFRJYNHJKKTH", 25, 40);
 
                                      ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:108:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
 myOLED.print("XE,SRBY DKFLBVBH", 0, 0);
 
                                      ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino: In function 'void loop()':
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:176:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
          myOLED.print("ELJ     DRK", 60, 0); 
 
                                           ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:182:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
          myOLED.print("ELJ    DSRK", 60, 0);
 
                                           ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:192:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
         myOLED.print("CJ2     DRK", 60, 9);
 
                                          ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:198:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
           myOLED.print("CJ2    DSRK", 60, 9); 
 
                                            ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:208:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
        myOLED.print("CDTN 1  DRK", 60, 17); 
 
                                          ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:214:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
           myOLED.print("CDTN 1 DSRK", 60, 17); 
 
                                             ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:223:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
          myOLED.print("CDTN 2  DRK", 60, 26);
 
                                            ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:229:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
           myOLED.print("CDTN 2 DSRK", 60, 26); 
 
                                             ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:238:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
          myOLED.print("CDTN 3  DRK", 60, 35);
 
                                            ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:244:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
          myOLED.print("CDTN 3 DSRK", 60, 35);
 
                                            ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:253:43: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
         myOLED.print("HTKT 6  DRK", 60, 44);
 
                                           ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:259:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
           myOLED.print("HTKT 6 DSRK", 60, 44);
 
                                             ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:265:34: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
    myOLED.print("NTVG DJLS", 0, 0); 
 
                                  ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:270:40: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
         myOLED.print("J{K DJLS-", 0, 44);
 
                                        ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:276:39: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
        myOLED.print("J{K DJLS+", 0, 44);
 
                                       ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:283:33: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
  myOLED.print("NTVG CDTN", 0, 17); 
 
                                 ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:288:40: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
         myOLED.print("J{K CDTN-", 0, 53);
 
                                        ^
 
E:\AquaRCh\AquaRCh\AquaRCh.ino:294:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
 
       myOLED.print("J{K CDTN+", 0, 53);
 
                                      ^
 
 
Скетч использует 15 212 байт (49%) памяти устройства. Всего доступно 30 720 байт.
Глобальные переменные используют 1 534 байт (74%) динамической памяти, оставляя 514 байт для локальных переменных. Максимум: 2 048 байт.
 
asdhooper
Offline
Зарегистрирован: 19.03.2017
сам скетч вот

//Загрузка библиотек 
#include <OneWire.h>
#include <Wire.h>
#include <RTClib.h>

#include <OLED_I2C.h> 
OLED  myOLED(SDA, SCL, 8);
extern uint8_t RusFont[];
extern uint8_t SmallFont[];

int TSensorPin1 = 2;
int TSensorPin2 = 3;
OneWire ds1(TSensorPin1);
OneWire ds2(TSensorPin2);

RTC_DS1307 RTC;
                          //Подключение выходов

                           
const int RelayChn1 = 5;                            //Используем цифровой ПОРТ 5  для ПЕРВОГО    канала релейного модуля
const int RelayChn2 = 6;                            //Используем цифровой ПОРТ 6  для ВТОРОГО    канала релейного модуля
const int RelayChn3 = 7;                            //Используем цифровой ПОРТ 7  для ТРЕТЬЕГО   канала релейного модуля
const int RelayChn4 = 8;                            //Используем цифровой ПОРТ 8  для ЧЕТВЕРТОГО канала релейного модуля
const int RelayChn5 = 9;                            //Используем цифровой ПОРТ 9  для ПЯТОГО     канала релейного модуля
const int RelayChn6 = 10;                           //Используем цифровой ПОРТ 10 для ШЕСТОГО    канала релейного модуля
const int RelayChn7 = 11;                           //Используем цифровой ПОРТ 11 для СЕДЬМОГО   канала релейного модуля
const int RelayChn8 = 12;                           //Используем цифровой ПОРТ 12 для ВОСЬМОГО   канала релейного модуля
#define sc 1UL
#define mn 60UL
#define hr 3600UL
                          //----------Настройки времени и продолжительности включения реле
                          
                          //----------Первый канал---------------------------
                          
const long StartRelCn_1 = 11*hr+00*mn+00*sc;               //Время срабатывания на ПЕРВОМ канале релейного модуля
const long DurationCh_1 = 00*hr+00*mn+15*sc;                    //ДЛИТЕЛЬНОСТЬ срабатывания реле на ПЕРВОМ канале

                          //----------Первый канал 2-------------------------
                          
const long StartRelCn_1L = 14*hr+50*mn+00*sc;               
const long DurationCh_1L = 00*hr+00*mn+15*sc;
                          //----------Второй канал---------------------------
                          
const long StartRelCn_2 = 11*hr+00*mn+00*sc;                    
const long DurationCh_2 = 10*hr+00*mn+00*sc;                   
                          //----------Третий канал---------------------------
                          
const long StartRelCn_3 = 12*hr+00*mn+00*sc;                      
const long DurationCh_3 = 10*hr+00*mn+00*sc;                     
                          //----------Четвертый канал------------------------
                          
const long StartRelCn_4 = 12*hr+30*mn+00*sc;                     
const long DurationCh_4 = 9*hr+00*mn+00*sc;                     
                          //----------Пятый канал----------------------------
                          
const long StartRelCn_5 = 15*hr+00*mn+00*sc;                
const long DurationCh_5 = 4*hr+00*mn+00*sc;                    
                          //----------Шестой канал---------------------------
                          
const long StartRelCn_6 = 0*hr+00*mn+00*sc;                    
const long DurationCh_6 = 0*hr+00*mn+00*sc; 
                   
                          //----------Терморегуляторы
                          
                          //----------Седьмой КАНАЛ--------------------------
                          
float t1 = 26.5;                                     //Уставка температуры для СЕДЬМОГО канала релейного модуля 1 аквариум
float tGistrsis1 = 1;                              //Уставка гистерезиса - т.е отклонения от темп-ры уставки т.е. в данном случае 0,7 = плюс минус 0,35 градуса

                          //----------Восьмой КАНАЛ--------------------------
                          
float t2 = 44;                                     //Уставка температуры для ВОСЬМОГО канала релейного модуля 2 аквариум
float tGistrsis2 = 12;  
             
                          //*********************************************************
                          
void setup () {
  Wire.begin();            
  RTC.begin();
   //  RTC.adjust(DateTime(__DATE__, __TIME__)); // строка только для первой компиляции!!!
  DateTime myTime = RTC.now();

                          //Первоначальные установки выходов
                          
    pinMode(RelayChn1,OUTPUT);                       //Инициализируем порт для 1 канала как ВЫХОД
    pinMode(RelayChn2,OUTPUT);                       //Инициализируем порт для 2 канала как ВЫХОД   
    pinMode(RelayChn3,OUTPUT);                       //Инициализируем порт для 3 канала как ВЫХОД  
    pinMode(RelayChn4,OUTPUT);                       //Инициализируем порт для 4 канала как ВЫХОД
    pinMode(RelayChn5,OUTPUT);                       //Инициализируем порт для 5 канала как ВЫХОД   
    pinMode(RelayChn6,OUTPUT);                       //Инициализируем порт для 6 канала как ВЫХОД 
    pinMode(RelayChn7,OUTPUT);                       //Инициализируем порт для 7 канала как ВЫХОД
    pinMode(RelayChn8,OUTPUT);                       //Инициализируем порт для 8 канала как ВЫХОД   
   
    digitalWrite(RelayChn1,HIGH);                    //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень 
    digitalWrite(RelayChn2,HIGH);                    //Т.к. используемый релейный модуль с опторазвязкой - управляется инверсной логикой 
    digitalWrite(RelayChn3,HIGH);                    //   
    digitalWrite(RelayChn4,HIGH);                   //
    digitalWrite(RelayChn5,HIGH);                   // 
    digitalWrite(RelayChn6,HIGH);                   //   
    digitalWrite(RelayChn7,HIGH);                    //
    digitalWrite(RelayChn8,HIGH);                    //

                           //Первоначальные надписи на дисплее
                           
myOLED.begin();
myOLED.setFont(RusFont);
myOLED.print("FRDFRJYNHJKKTH", 25, 40);
myOLED.print("XE,SRBY DKFLBVBH", 0, 0);
myOLED.update();
delay (2000);
myOLED.clrScr();
myOLED.drawLine (57, 0, 57, 64);
myOLED.drawLine (0, 35, 57, 35);
myOLED.update();
}
                           //***************************************************
                           
void loop () {
  DateTime myTime = RTC.now();
  uint32_t utime = myTime.unixtime();
  utime %=86400;
                          // Смещение и добавление "0" при значении часов,минут,секунд менее 10
                          
//if (myTime.hour()<10) //Больше 10 часов
//{
//myOLED.print(String(myTime.hour()), 60,53);
//myOLED.update();
//}
//else
//{
//myOLED.print("0", 60,53);
//myOLED.print(String(myTime.hour()), 67,53);
//myOLED.update();
//}
//if (myTime.minute()<10) //Больше 10 минут
//{
//myOLED.print(String(myTime.minute()), 77,53);
//myOLED.update();
//}
//else
//{
//myOLED.print("0", 77,53);
//myOLED.print(String(myTime.minute()), 84,53);
//myOLED.update();
//}
//if (myTime.second()<10) //Больше 10 секунд
//{
//myOLED.print(String(myTime.second()), 94,53);
//myOLED.update();
//}
//else
//{
//myOLED.print("0", 94,53);
//myOLED.print(String(myTime.second()), 101,53);
//myOLED.update();  
//}
myOLED.print(String(myTime.hour()), 60,53);
myOLED.print(String(myTime.minute()), 77,53);
myOLED.print(String(myTime.second()), 94,53);


//myOLED.print("_", 73,53);
//myOLED.print("_", 90,53);
myOLED.update();

  
                              //----------------------------релейная настройка начало------------------
                              
                              //------------КАНАЛ 1------------------------------
                              
    if ((utime >= StartRelCn_1) && 
       (utime < (StartRelCn_1+DurationCh_1)) or (utime >= StartRelCn_1L) && 
       (utime < (StartRelCn_1L+DurationCh_1L)))
      {
          digitalWrite(RelayChn1,LOW);               //Устанавливаем на входе релейного модуля НИЗКИЙ уровень - реле срабатывает
         myOLED.print("ELJ     DRK", 60, 0); 
         myOLED.update();
      }  
    else
      {
          digitalWrite(RelayChn1,HIGH);              //Устанавливаем на входе релейного модуля ВЫСОКИЙ уровень - реле выключается
         myOLED.print("ELJ    DSRK", 60, 0);
         myOLED.update(); 
      } 

                               //------------КАНАЛ 2 ------------------------------
                               
    if ((utime >= StartRelCn_2) && 
       (utime < (StartRelCn_2+DurationCh_2)))
      {
        digitalWrite(RelayChn2,LOW);                 //Устанавливаем на ВТОРОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
        myOLED.print("CJ2     DRK", 60, 9);
        myOLED.update(); 
      }  
    else
      {
          digitalWrite(RelayChn2,HIGH);              //Устанавливаем на ВТОРОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
          myOLED.print("CJ2    DSRK", 60, 9); 
          myOLED.update();
      } 

                                //------------КАНАЛ 3------------------------------
                                
    if ((utime >= StartRelCn_3) && 
       (utime < (StartRelCn_3+DurationCh_3)))
      {
          digitalWrite(RelayChn3,LOW);               //Устанавливаем на ТРЕТЬЕМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
       myOLED.print("CDTN 1  DRK", 60, 17); 
       myOLED.update();
      }  
    else
      {
          digitalWrite(RelayChn3,HIGH);              //Устанавливаем на ТРЕТЬЕМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
          myOLED.print("CDTN 1 DSRK", 60, 17); 
          myOLED.update();
      } 
                                  //------------КАНАЛ 4------------------------------
                                  
    if ((utime >= StartRelCn_4) && 
       (utime < (StartRelCn_4+DurationCh_4)))
      {
          digitalWrite(RelayChn4,LOW);               //Устанавливаем на ЧЕТВЕРТОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
         myOLED.print("CDTN 2  DRK", 60, 26);
         myOLED.update(); 
      }  
    else
      {
          digitalWrite(RelayChn4,HIGH);              //Устанавливаем на ЧЕТВЕРТОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
          myOLED.print("CDTN 2 DSRK", 60, 26); 
          myOLED.update();
      } 
                                    //------------КАНАЛ 5------------------------------
                                    
    if ((utime >= StartRelCn_5) && 
       (utime < (StartRelCn_5+DurationCh_5)))
      {
          digitalWrite(RelayChn5,LOW);               //Устанавливаем на ПЯТОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
         myOLED.print("CDTN 3  DRK", 60, 35);
         myOLED.update(); 
      }  
    else
      {
          digitalWrite(RelayChn5,HIGH);              //Устанавливаем на ПЯТОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
         myOLED.print("CDTN 3 DSRK", 60, 35);
         myOLED.update(); 
      } 
                                     //------------КАНАЛ 6------------------------------
                                     
    if ((utime >= StartRelCn_6) && 
       (utime < (StartRelCn_6+DurationCh_6)))
      {
          digitalWrite(RelayChn6,LOW);               //Устанавливаем на ШЕСТОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает
        myOLED.print("HTKT 6  DRK", 60, 44);
        myOLED.update(); 
      }  
    else
      {
          digitalWrite(RelayChn6,HIGH);              //Устанавливаем на ШЕСТОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается
          myOLED.print("HTKT 6 DSRK", 60, 44);
          myOLED.update(); 
      } 
                                       //------------КАНАЛ 7 Контроль температуры -------
                                       
     float temp1 = getTemp1();                          //Читаем температуру с датчика 
   myOLED.print("NTVG DJLS", 0, 0); 
   myOLED.print(String(temp1,1), 0, 9);   
    if (temp1 < t1-tGistrsis1/2)
      {
        digitalWrite(RelayChn7,HIGH);                 //Устанавливаем на 7 входе релейного модуля НИЗКИЙ уровень - реле срабатывает
        myOLED.print("J{K DJLS-", 0, 44);
        myOLED.update(); 
      }     
    else if (temp1 > t1+tGistrsis1/2)
      {
        digitalWrite(RelayChn7,LOW);                //Устанавливаем на 7 входе релейного модуля ВЫСОКИЙ уровень - реле выключается
       myOLED.print("J{K DJLS+", 0, 44);
       myOLED.update();
      }     
      
                                          //------------КАНАЛ 8 Контроль температуры -----------
                                          
 float temp2 = getTemp2();                          //Читаем температуру с датчика 
 myOLED.print("NTVG CDTN", 0, 17); 
 myOLED.print(String(temp2,1), 0, 26);  
  if (temp2 < t2-tGistrsis2/2)
      {
        digitalWrite(RelayChn8,HIGH);                 //Устанавливаем на 8 входе релейного модуля НИЗКИЙ уровень - реле срабатывает
        myOLED.print("J{K CDTN-", 0, 53);
        myOLED.update();
      }     
    else if (temp2 > t2+tGistrsis2/2)
      {
        digitalWrite(RelayChn8,LOW);                //Устанавливаем на 8 входе релейного модуля ВЫСОКИЙ уровень - реле выключается
      myOLED.print("J{K CDTN+", 0, 53);
      myOLED.update();
      }
}
                                             //*****************************************************
                                             //Функции чтения с датчиков температуры
                                             
float getTemp1(){                                       
  byte data[12];
  byte addr[8];
  if ( !ds1.search(addr)) {
    //no more sensors on chain, reset search
    ds1.reset_search();
    return -1001;  
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {

    return -1002;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {

    return -1003;
  }

  ds1.reset();
  ds1.select(addr);
  ds1.write(0x44,1); 

  byte present = ds1.reset();
  ds1.select(addr); 
  ds1.write(0xBE); 


  for (int i = 0; i < 9; i++) { 
    data[i] = ds1.read();
  }

  ds1.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float TRead = ((MSB<<8) | LSB); 
  float Temperature = TRead / 16;

  return Temperature;
}
float getTemp2(){                                       
  byte data[12];
  byte addr[8];
  if ( !ds2.search(addr)) {
    //no more sensors on chain, reset search
    ds2.reset_search();
    return -1001;  
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {

    return -1002;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {

    return -1003;
  }

  ds2.reset();
  ds2.select(addr);
  ds2.write(0x44,1); 

  byte present = ds2.reset();
  ds2.select(addr); 
  ds2.write(0xBE); 


  for (int i = 0; i < 9; i++) { 
    data[i] = ds2.read();
  }

  ds2.reset_search();

  byte MSB = data[1];
  byte LSB = data[0];

  float TRead = ((MSB<<8) | LSB); 
  float Temperature = TRead / 16;

  return Temperature;
}

 

asdhooper
Offline
Зарегистрирован: 19.03.2017

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я правильно понял, что ты просишь в длинном контроллере аквариума разобраться бесплатно, то есть даром???

Афигеть! А ты время не попутал? Типа Совка уже вроде нет? Или мне наврали?

--------------------

1.ворнинги - не стоят внимания вообще. Объяснять дольше, чем забить. Просто поверь и не обращай на них внимания.

2. Точка - это очень просто: если тебе в текстах нигде не нужна буква "ю", то ее код нужно заменить кодом точки.

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

Я даже напишу, чем заменить:

0x00, 0x00, 0x60,0x60, 0x00, 0x00

Вот этим. ;) ;) ;)

asdhooper
Offline
Зарегистрирован: 19.03.2017

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

asdhooperwdrakula предложил самое тупое, а потому - железобетонное решение.

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

Предполагаю, что более "правильное" решение - это производить переключение фонтов при выводе цифр на дисплей. ПО крайней мере, такое решение не будет зависеть от того, используете ли Вы где-то в другом месте букву "ю" или нет.

Ну а дальше Вам следует определиться, хотите ли Вы научиться самостоятельно находитиь и исправлять подобные ошибки или Вам просто нужно внести однократные изменения и забыть об этом.

asdhooper
Offline
Зарегистрирован: 19.03.2017

по поводу точки я понял что это из-за выбранного шрифта, скетч писал не я, а почему автор так решил, я не знаю, т.к. в программировании ничего не понимаю, от слова совсем

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

asdhooper, Вы не поняли. Первые 3 абзаца в моем сообщении были лирическим отступлением. Ну либо подсказкой Вам, что существуют разлиные способы исправления предложенного скетча.

Но рекомендации для Ваших конкретных действий заключены исключительно в последнем абзаце.

asdhooper
Offline
Зарегистрирован: 19.03.2017

учиться и находить это не для меня, пытался начать учить язык, понял не моё, да и времени на это мало (поплнение в семье), мне раз настроить и забыть

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так закажите на ищу исполнителя. Быстрее будет.

asdhooper
Offline
Зарегистрирован: 19.03.2017

если никто не откликнется, буду искать исполнителя на рассвет закат и датчик расхода воды

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

лана...

в библиотеке, файл дефаултфонтс. Там массив RusFont. Этот массив писал полный дебил, но многие им пользуются.

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

Туда, четко соблюдая всю пунктуацию, помести то, что я выделил жирно в первом сообщении.

Это самое простое решение, а критики - пусть идут в жопу.

Переключать фонт, это еще 600 байт тащить в свой код, ннадда? Для контроллера аквариума?

asdhooper
Offline
Зарегистрирован: 19.03.2017

спасибо тебе огромное, точка есть

asdhooper
Offline
Зарегистрирован: 19.03.2017

буду искать исполнителя на рассвет закат и датчик расхода воды, если возьмешься скинь сумму на почту e-vova-08@rambler.ru

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

мое мыло = мой ник на жмейле.

Но я не очень люблю браться за заказы, поскольку я старый (47), необязательный алкаш. Напиши, что именно хочешь, я подумаю.

arDubino
Offline
Зарегистрирован: 12.01.2017

млин там столько готовых этих акваконтроллеров что тут на форуме что в сети.

а народ все пишет и пишет :))))) прям так и хочется занятся и сделать какойнить проектик и продавать рыбоводам :)))

asdhooper
Offline
Зарегистрирован: 19.03.2017

посидел, покумекал и настроил правильное отображение часов, САМ!

asdhooper
Offline
Зарегистрирован: 19.03.2017

конечно много, но не все подходят для человека, который ищет. например мне нужно знать производительность фильтра, но нет ни одного готового скетча с датчиком расхода воды

arDubino
Offline
Зарегистрирован: 12.01.2017

рыпки наверно много пьют :)) особенно после праздников с похмелья :))))))

з.ы.

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

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

asdhooper пишет:

конечно много, но не все подходят для человека, который ищет. например мне нужно знать производительность фильтра, но нет ни одного готового скетча с датчиком расхода воды

А чем датчик расхода воды отличается от кнопки? В принципе.