Помогите с флагом для реле

Тема в разделе "Arduino & Shields", создана пользователем A.R., 25 дек 2017.

  1. akl

    akl Гуру

    нарисуй пробел нулями;)
     
    Gritsan нравится это.
  2. Gritsan

    Gritsan Нерд

    Все в роде отмучились. :p
    Подправил пробелы, благодаря akl. и теперь температура обновляется ими только на пороговых значениях. Код может и глупость, но работает.
    Низкий поклон всем.
    Код (C++):
    uint32_t myTimer1;
    bool refresh=false; //>10
    bool refresh2=false; //<10
    //bool refresh3=false; //меньше -9
    int temp_old;

    #include <OneWire.h>
    #include <Tiny4kOLED.h>     //библтотека OLED
    #include "HISKYF21_font.h"  // шрифт const DCfont *currentFont = FONTHISKYF21;

    OneWire ds(4); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком

    void setup(){
       oled.begin(64, 48, sizeof(tiny4koled_init_64x48r), tiny4koled_init_64x48r);
       oled.clear();
       oled.on();
       }
    void loop(){


        if (millis() - myTimer1 >= 1000) {
         myTimer1 = millis();
         byte data[2];         // Место для значения температуры  // Определяем температуру от датчика DS18b20
         ds.reset();           // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
         ds.write(0xCC);       // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
        ds.write(0x44);       // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
        ds.reset();          // Теперь готовимся получить значение измеренной температуры
        ds.write(0xCC);
        ds.write(0xBE);      // Просим передать нам значение регистров со значением температуры
        data[0] = ds.read(); // Получаем и считываем ответ. Читаем младший байт значения температуры
        data[1] = ds.read(); // А теперь старший
        float temperature =  ((data[1] << 8) | data[0]) * 0.0625; //вычесление температуры

        if(temperature>=10)          //порог температуры
        {refresh2=false;          
        temp_old=temperature;

        if(fresh==false)    //обновлние строки температуры
        {oled.setCursor(7,2);
        oled.print(F(",,,,,,,"));                 //на самом деле это пробелы))
        refresh=true;}

        if(refresh==true)              
          {oled.setCursor(16, 0);
          oled.setFont(FONT6X8);
          oled.print(F("TEMP>10:"));       //заголовок
          oled.setFont((FONTHISKYF21));   //огромный шрифт
          oled.setCursor(9,2);
          oled.print((temperature),1);    //вывод температуры
          oled.setCursor(50,2);
          oled.print(F("/"));             //знак цельсия}
          }
        }
          if(temperature<10)    
         {refresh=false;
          temp_old=temperature;
       
          if(refresh2==false)                    //обновлние строки температуры
          {oled.setFont((FONTHISKYF21));
           oled.setCursor(1,2);
           oled.print(F(",,,,,,,,"));                //на самом деле это пробелы))
           refresh2=true;}
       
           if(refresh2==true)  //||refresh2==false
           {oled.setCursor(16, 0);
           oled.setFont(FONT6X8);
           oled.print(F("TEMP<30:"));         //заголовок
           oled.setFont((FONTHISKYF21));  //огромный шрифт
           oled.setCursor(11,2);
           oled.print((temperature),1); //вывод температуры
           oled.setCursor(48,2);
           oled.print(F("/"));         //знак цельсия}
           }
         }
    }
     
     
    Andrey12 нравится это.