Нужна помощь! BMP 180 Вывод показаний на OLED дисплей 128х64

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

* Часы реализованные через millis()
  *  практически весь код часов взят по первой попавшейся ссылке в поисковой программе
  *  http://arduino.ru/forum/programmirovanie/chasy-i-arduino
  *  Библиотека для работы с OLED дисплеем
  *   http://www.RinkyDinkElectronics.com/
  *   
  *   Arduino Uno/Nano
  *   Display:  SDA pin   -> Arduino Analog 4 or the dedicated SDA pin
  *             SCL pin   -> Arduino Analog 5 or the dedicated SCL pin
  *  
  *   Arduino Leonardo:
  *   ----------------------
  *   Display:  SDA pin   -> Arduino Digital 2 or the dedicated SDA pin
  *             SCL pin   -> Arduino Digital 3 or the dedicated SCL pin
  *   Arduino Mega:          
  *   ----------------------
  *   Display:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA pin
  *             SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL pin
  *             
  *   Arduino Due:     
  *   ----------------------
  *   Display:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
  *             SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
  *   
  *   The internal pull-up resistors will be activated when using the       
  *   hardware I2C interfaces.
  *   Внутренние подтягивающие резисторы будут активированы при использовании
  *   аппаратных интерфейсов I2C.
  */
 
#include <OLED_I2C.h>
#include <Wire.h>           // I2C Arduino Library
// #include <Keypad.h>         // Брал отсюда https://github.com/Chris--A/Keypad
// #include <EEPROM.h>


  OLED  myOLED(SDA, SCL, 8);
  extern uint8_t SmallFont[];
  extern uint8_t TinyFont[];
  extern uint8_t MediumNumbers[];
  extern uint8_t BigNumbers[];
  
  long previousMillis = 0;  // переменная для хранения значений таймера
  int sec=0;                // значение секунд
  int minuts=0;             // значение минут
  int chas=0;               // значение часов
  int button=0;             // значение кнопки

  int kormls = 500;         // корректировки, пока в переменных, потом во флэш
  int korsec = 0;
  int kormin = 0;
  int korchas = 0;
/*
  const byte rows = 4;      // Четыре строки Four rows
  const byte cols = 3;      // Три колонки Three columns

 // Define the Keymap
char keys[rows][cols] =
{
  {
    '1','2','3'                 }
  ,
  {
    '4','5','6'                 }
  ,
  {
    '7','8','9'                 }
  ,
  {
    '*','0','#'                 }
};

 
// Normal Keyboard Connected To Arduino
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[rows] = {
  8, 7, 6, 5 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[cols] = {
  4, 3, 2 };

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );

  */


// Clock - Timer
// Часы реализованные через millis()

void myClock()
   {
     if (millis() - previousMillis >=500) 
   {  
   previousMillis = previousMillis + 496;       // корректировка на наш кварц и задержки в коде
   digitalWrite(13, !digitalRead(13));             // меняем значение порта каждые 0.5секунд
   if(digitalRead(13) == HIGH){sec++;  }           // если 13 нога лог1 то...
                                                   // переменная секунда + 1
   } 
   
   if(digitalRead(13) == LOW) { }                  // через каждые 0.5 секунд меняем символ ":" на "."
                                                   // здесь будет город заложон
    
   if(sec>59)                                      // если переменная секунда больше 59 ...
   { 
     sec=0;                                        // сбрасываем ее в 0
     minuts++;                                     // пишем +1 в переменную минута
     previousMillis = previousMillis + korsec;     // корректировка раз в минуту точнее 6.82м сек
   }
      
   if(minuts > 59)                                 // если переменная минута больше 59 ...
   {
     minuts=0;                                     // сбрасываем ее на 0
     chas++;                                       // пишем +1 в переменную час
     previousMillis = previousMillis + kormin;     // корректировка раз в час 
    }
   
   if(chas >23)                                    // если переменная час больше 23 ...
   {
     chas=0;                                       // сбрасываем ее на 0
     previousMillis = previousMillis + korchas;    // корректировка раз в сутки 
    }    
  }  // *** END myClock() ***



void setup() {
  myOLED.begin();
  myOLED.setFont(SmallFont);
 
  pinMode(13,OUTPUT);                   // инициализация портов
  pinMode(12,OUTPUT);
 
}

void loop() {
  
   myClock();
   
   String str1 = String(chas);
   String str2 = String(minuts);
   String str3 = String(sec);
   myOLED.setFont(BigNumbers);
   
    if (chas>=0 && chas<10 && minuts>=0 && minuts<10 && sec>=0 && sec<10) {
    myOLED.print("0"+str1+"-"+"0"+str2+"-"+"0"+str3, 7,  26);}
    if (chas>=0 && chas<10 && minuts>=0 && minuts<10 && sec>10) {
    myOLED.print("0"+str1 + "-0"+str2 +"-"+str3, 7,  26);}
    if (chas>=0 && chas<10 && minuts>=10 && sec>=0 && sec<10) {
    myOLED.print("0"+str1 + "-"+str2 +"-0"+str3, 7,  26);}
    if (chas>=0 && chas<10 && minuts>=10 && sec>=10) {
    myOLED.print("0"+str1 + "-"+str2 +"-"+str3, 7,  26);}
    if (chas>=10 && minuts>=0 && minuts<10 && sec>=0 && sec<10) {
    myOLED.print(str1 + "-0"+str2 +"-0"+str3, 7,  26);}
    if (chas>=10 && minuts>=10 && sec>=0 && sec<10) {
    myOLED.print(str1 + "-"+str2 +"-0"+str3, 7,  26);}
    if (chas>=10 && minuts>=10 && sec>=10) {
    myOLED.print(str1 + "-" + str2 + "-" + str3, 7,  26);}
    
    myOLED.update();
  
  }

 

BamBoo
Offline
Зарегистрирован: 20.02.2019

sadman41 пишет:

А, ну точно. Читайте свои же комментарии:   display.display(); // Как я понял, команда позволяет вывести текст на экран.

Под дисплеями вставил строку display.display();

Появились изменения. =0) Теперь поверх текста Hello, V i k i !!! что-то напечатлось, но не понять что. 

sadman41
Offline
Зарегистрирован: 19.10.2016

У вас же там исполнитель какой-то есть... Сделает вашу задачу - посмотрите в чем ошибка была.

BamBoo
Offline
Зарегистрирован: 20.02.2019

kalapanga пишет:

Вместо какой-то фигни в строках 57-58 нужно печатать Ваши переменные. Всё завершать вызовом display.display().

Я не знаю что там писать. Могли бы Вы подскзать мне строки кода которые нужно туда вбить?

kalapanga пишет:
А почему Вы примеры не посмотрите от библиотеки Adafruit_SSD1306 ?

Я много разных примеров попробовал. Часть не работает, либо руки кривые. Но под вывод данных с БМП так и не нашел.

BamBoo
Offline
Зарегистрирован: 20.02.2019

sadman41 пишет:

У вас же там исполнитель какой-то есть... Сделает вашу задачу - посмотрите в чем ошибка была.

Есть. Но хочется же самому научиться, чтобы людей не дергать. 

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

Извините, но меня надо носом тыкать и разжевывать, пока я не решу поставленную задачу. После будет легче. 

 

Еще раз извините за мои ЧТО И КУДА! 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да. видимо, штото не так с руками. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ТС, ты монка скачал?  Ну почитай ты его уже, наконец.  Мошт, просветлеешь мыслями.  Там и про OLED есть, памойму.

BamBoo
Offline
Зарегистрирован: 20.02.2019

ua6em пишет:

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


Выдает ошибки и ссылается на эту строку: *   аппаратных интерфейсов I2C.

Хоть строка и за комментирована, он выделяет ее как ошибку. 

BamBoo
Offline
Зарегистрирован: 20.02.2019

DetSimen пишет:

ТС, ты монка скачал?  Ну почитай ты его уже, наконец.  Мошт, просветлеешь мыслями.  Там и про OLED есть, памойму.

Скачал. Читать начну вечером. Но схожу завтра по книжным, может есть бумажная версия, не люблю в телефоне читать. 

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

To ТС, поднимите глаза выше, на сообщение Деда, и идите предложенным им путем. Иначе так и будете каждую запятую выклянчивать.

gfx125
Offline
Зарегистрирован: 27.05.2017

BamBoo пишет:

Теперь поверх текста Hello, V i k i !!! что-то напечатлось, но не понять что. 


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

BamBoo
Offline
Зарегистрирован: 20.02.2019

Есть маленький, но результат. 

На экран выводится 0xDEADBEEF из 58 строки display.println(0xDEADBEEF, HEX);

Судя по всему не все потеряно. Экран значит работает и выводит информацию. 

Как вместо 0xDEADBEEF вывести хотя бы Температуру? 

Green
Offline
Зарегистрирован: 01.10.2015

Вот это как раз ответ на вопрос "за что деньги".

BamBoo
Offline
Зарегистрирован: 20.02.2019

Green пишет:

Вот это как раз ответ на вопрос "за что деньги".

Плюсую! Теперь все понимаю. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да уже гаркни на нее что есть мочи "ТЕМПЕРАТУРУ!  ЖИВО!!!"

Если не абосцыца, то выведет. 

BamBoo
Offline
Зарегистрирован: 20.02.2019

DetSimen пишет:

Да уже гаркни на нее что есть мочи "ТЕМПЕРАТУРУ!  ЖИВО!!!"

Если не абосцыца, то выведет. 

Так и сделал! =0)))

Счастью нет предела. Я допер как вывести данные! Но допер благодаря ВАМ ВСЕМ кто поддерживал меня в данном топике. Хоть наверное вам и хотелось дать мне леща, но ВЫ все упорно мне помогали. 

Моей благодарности НЕТ ПРЕДЕЛА!!!

Спасибо ВАМ ОГРОМНОЕ ВСЕМ!!!

Ураааааа!!!!

BamBoo
Offline
Зарегистрирован: 20.02.2019

Кирилицу пока не поддерживает, но удалось вывести высоту в Футах. 

Спасибо ОГРОМНЕЙШЕЕ!!!

kalapanga
Offline
Зарегистрирован: 23.10.2016

BamBoo пишет:

Кирилицу пока не поддерживает, но удалось вывести высоту в Футах. 

Вверху страницы в поиске наберите "русификация Adafruit_SSD1306" - тут тема про это есть.

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

BamBoo  используй ASOLED, Luke!!!

http://arduino.ru/forum/proekty/asoled-kompaktnaya-biblioteka-dlya-oled-...

Графиков она тебе, канеш, не построит, но и памяти не сожрёть, и русский выведет

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Пока тебе награда полагается как Новичку Месяца.  Держи.

BamBoo
Offline
Зарегистрирован: 20.02.2019

DetSimen пишет:

Пока тебе награда полагается как Новичку Месяца.  Держи.

Спасибо! =0) Повешу на стену. 

BamBoo
Offline
Зарегистрирован: 20.02.2019

Проблемка!

Вот этим кодом вывожу данные температуры. Пока датчик подключается, градусы цельсия стоят 0.00С. Как только данные температуры цельсия обновляются, вся строка заполняется кракозяброй. Где ошибка? Подскажите пожалуйста.

display.setCursor(0, 10);
display.setTextSize(1);  
display.setTextColor(WHITE);
      display.print("T: ");  //  "температура: "
      display.print(T,2);
      display.print(" C/");  //  " градусов Цельсия, "
      display.print((9.0/5.0)*T+32.0,2);
      display.println("F");
display.display();

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

Сам по себе кусочек вроде ничего плохого не делает. Показывайте весь актуальный скетч - где-то чего-то ещё навыводили.

BamBoo
Offline
Зарегистрирован: 20.02.2019

kalapanga пишет:

Сам по себе кусочек вроде ничего плохого не делает. Показывайте весь актуальный скетч - где-то чего-то ещё навыводили.

// подключаем к скетчу две библиотеки, SFE_BMP180 и Wire; Wire –
// это стандартная библиотека, идущая в комплекте с IDE Arduino.
#include <SFE_BMP180.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 7
Adafruit_SSD1306 display(OLED_RESET);
 
// создаем экземпляр класса SFE_BMP180 и называем его «pressure»:
SFE_BMP180 pressure;
 
// это высота над уровнем моря в штаб-квартире SparkFun, в Боулдере;
// указана в метрах:
#define ALTITUDE 465.0
 
void setup()
{
  Serial.begin(9600);
  Serial.println("Перезагрузка");  //  "ПЕРЕЗАГРУЗКА"
 
  // инициализируем датчик (важно извлечь калибровочные данные,
  // хранящиеся в устройстве):
  if (pressure.begin())
    Serial.println("Датчик опознан...");
    // "Инициализация BMP180 прошла успешно"
  else
  {
    // упс, что-то пошло не так!
    // как правило, так происходит из-за проблем с подключением
    // (о том, как подключить датчик правильно, читайте выше):
    Serial.println("Датчик не опознан...");
    // "Инициализация BMP180 не удалась"
    while(1); // вечная пауза
  }
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // инициализация дисплея код подсмотрл в интернете. Почему он именно такой, так и не понял.SSD1306 это судя по всему чип дисплэя.
  display.clearDisplay(); // очистка дисплея. Не уверен, что эта строка нужна в этой части.
  display.setTextSize(1); // Размер шрифта. Как я понял, размер заается исходя из библиотеки, но могу ошибаться. 
  display.setTextColor(WHITE); // установка цвета текста. Стоит белый, т.к. в данный момент использую белый дисплэй. При удалении этой строки, при компиляции, программа ругается. 
  display.setCursor(5, 0); // Начало строки координаты X = 5; Y = 0
  //display.print (""); // Выводимый текст.
  display.display(); // Как я понял, команда позволяет вывести текст на экран.
}
 
void loop()
{
  char status;
  double T,P,p0,a;
 
  // блок loop() считывает давление каждые 10 секунд
 
  // если вам нужно давление, приведенное к уровню моря
  // (т.е. давление, используемое в прогнозах погоды),
  // вам нужно знать, уровень моря в месте,
  // где вы измеряете давление;
 
  // в данном скетче мы используем константу ALTITUDE:
 
  Serial.println();
  Serial.print("Предоставленная высота: ");
  //  "заданная высота над уровнем моря"
  Serial.print(ALTITUDE,0);
  Serial.print(" Метров, ");  //  " метров, "
  Serial.print(ALTITUDE*3.28084,0);
  Serial.println(" Футов");   //  " футов, "

//Выводим данные на дисплей.
//Выводим высоту над уровнем моря.
{
display.setCursor(0, 0);
display.setTextSize(1);  
display.setTextColor(WHITE);
display.print("H: ");
display.print(ALTITUDE,0);
display.print(" M, ");
display.print(ALTITUDE*3.28084,0);
display.println(" Ft");
display.display();
}
//Выводим температуру
{
display.setCursor(0, 10);
display.setTextSize(1);  
display.setTextColor(WHITE);
      display.print("T: ");  //  "температура: "
      display.print(T,2);
      display.print(" C/");  //  " градусов Цельсия, "
      display.print((9.0/5.0)*T+32.0,2);
      display.println("F");
display.display();
delay (1000);
}
 
  // если вы хотите измерить высоту над уровнем моря,  // то вам нужно знать информацию о давлении; расчет высоты
  // над уровнем моря показан в конце скетча
 
  // чтобы рассчитать давление, сначала нужно измерить температуру
 
  // запускаем измерение температуры; если функция
  // будет выполнена успешно, она вернет количество
  // миллисекунд, потребовавшихся на измерение;
  // а если неуспешно, то вернет «0»:
  status = pressure.startTemperature();
  if (status != 0)
  {
    // ждем, когда завершится измерение:
    delay(status);
 
    // извлекаем данные о температуре; обратите внимание,
    // что измеренные данные хранятся в переменной «T»;
    // если функция будет выполнена успешно, она вернет «1»,
    // а если нет, то «0»
 
    status = pressure.getTemperature(T);
    if (status != 0)
    {
      // печатаем измеренную температуру:
      Serial.print("Температура: ");  //  "температура: "
      Serial.print(T,2);
      Serial.print(" °С, ");  //  " градусов Цельсия, "
      Serial.print((9.0/5.0)*T+32.0,2);
      Serial.println(" °F");  //  " градусов Фаренгейта"
     
      // запускаем измерение давления; параметр отвечает
      // за частоту дискретизации данных; допустимые значения
      // для параметра – от «0» до «3», где «3» - это
      // самое высокое разрешение, но и самая долгая задержка;
      // если функция будет выполнена успешно, она вернет
      // количество миллисекунд, потребовавшихся на ожидание,
      // а если неуспешно, то «0»:
      status = pressure.startPressure(3);
      if (status != 0)
      {
        // ждем завершения измерения:
        delay(status);
 
        // извлекаем данные о давлении; обратите внимание,
        // что измеренные данные хранятся в переменной «P»;
        // также обратите внимание, что этой функции
        // требуются данные о температуре (переменная «T»);
        // если температура стабильна, то для многократного
        // измерения давления вы можете измерить температуру
        // всего один раз;
 
        // если функция будет выполнена успешно, она вернет «1»,
        // а если нет, то «0»:
 
        status = pressure.getPressure(P,T);
        if (status != 0)
        {
          // печатаем результат:
          Serial.print("Обс. давление: ");
          // "абсолютное давление: "
          Serial.print(P,2);
          Serial.print(" mb, ");  // " мбар, "
          Serial.print(P*0.0295333727,2);
          Serial.println(" inHg");  // " дюймов рт. ст."
 
          // датчик давления возвращает данные об абсолютном давлении,
          // которые могут варьироваться в зависимости от высоты
          // над уровнем моря; чтобы убрать эффект от высоты
          // над уровнем моря, используйте функцию sealevel(),
          // указав в ней высоту над уровнем моря для вашей локации
 
          // показатель давления без учета высоты над уровнем моря
          // используется, как правило, в прогнозах погоды;
          // параметры: P = абсолютное давление в миллибарах,
          // ALTITUDE = высота над уровнем моря в метрах;
          // результат: p0 = давление без учета
          // высоты над уровнем моря в миллибарах
 
          p0 = pressure.sealevel(P,ALTITUDE);
          // здесь, в Боулдере, 1655 метров над уровнем моря
          Serial.print("От. давление: ");
          // относительное давление (приведенное к уровню моря)
          Serial.print(p0,2);
          Serial.print(" mb, ");  // " мбар, "
          Serial.print(p0*0.0295333727,2);
          Serial.println(" inHg");  // " дюймов рт. ст."
 
          // кроме того, зная давление, вы можете определить
          // высоту над уровнем моря;
          // это выполняется при помощи функции altitude();
          // параметры: P = абсолютное давление в миллибарах,
          // p0 = базовое давление в миллибарах
          // результат: a = высота над уровнем моря в метрах
 
          a = pressure.altitude(P,p0);
          Serial.print("Рас. высота: ");
          // "расчитанная высота над уровнем моря: "
          Serial.print(a,0);
          Serial.print(" Метров, "); // " метров, "
          Serial.print(a*3.28084,0);
          Serial.println(" Футов"); // " футов"
 
        }
        else Serial.println("error retrieving pressure measurement\n");
        // "ошибка при извлечении данных о давлении"
      }
      else Serial.println("error starting pressure measurement\n");
      // "ошибка при запуске измерения давления"
    }
    else Serial.println("error retrieving temperature measurement\n");
    // "ошибка при извлечении данных о температуре"
  }
  else Serial.println("error starting temperature measurement\n");
  // "ошибка при запуске измерения температуры"
  delay(5000);  // 5-секундная пауза
}

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

Да вроде всё-так. Т.е в начале у Вас вся картинка полная и красивая? И высота в метрах и футах выведена и температура ноль градусов по цельсию и ноль по фаренгейту - всё показывается? А на следующем цикле всё портится?

А если перед 70-й строкой display.clearDisplay(); вставить?

BamBoo
Offline
Зарегистрирован: 20.02.2019

kalapanga пишет:

Да вроде всё-так. Т.е в начале у Вас вся картинка полная и красивая? И высота в метрах и футах выведена и температура ноль градусов по цельсию и ноль по фаренгейту - всё показывается? А на следующем цикле всё портится?

А если перед 70-й строкой display.clearDisplay(); вставить?

Да, все так. И появилась еще одна проблемка. Почему-то выводит не верные данные. Показывает давление всегда одно и тоже 48, а температуру 8С. Хотя в доме почти 26С.

Хотя в Мониторе порта показывает верные данные:

19:36:25.191 -> Температура: 26.95 °С, 80.51 °F
19:36:25.238 -> Обс. давление: 964.13 mb, 28.47 inHg
19:36:25.332 -> От. давление: 1019.06 mb, 30.10 inHg
19:36:25.332 -> Рас. высота: 465 Метров, 1526 Футов
 
BamBoo
Offline
Зарегистрирован: 20.02.2019

kalapanga пишет:

Да вроде всё-так. Т.е в начале у Вас вся картинка полная и красивая? И высота в метрах и футах выведена и температура ноль градусов по цельсию и ноль по фаренгейту - всё показывается? А на следующем цикле всё портится?

А если перед 70-й строкой display.clearDisplay(); вставить?

Помогло! Спасибо огромное. 

BamBoo
Offline
Зарегистрирован: 20.02.2019

Такой еще вопрос:

Сейчас у меня все выводится на одном экране в три строки. Вывожу высоту, температуру и давление.

Вопрос:

Как сделать так, чтобы выводилась например высота, спустя 5 секунд экран меняется и выводит температуру, потом спустя 5 секунд давление?

И можно ли коротким кодом вывести дату и время? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BamBoo пишет:

ua6em пишет:

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


Выдает ошибки и ссылается на эту строку: *   аппаратных интерфейсов I2C.

Хоть строка и за комментирована, он выделяет ее как ошибку. 

уже не надо, у вас вывод на экран идёт, значит с адресацией дисплея всё правильно, смотрите примеры, как, куда и что выводится

kalapanga
Offline
Зарегистрирован: 23.10.2016

BamBoo пишет:

Сейчас у меня все выводится на одном экране в три строки. Вывожу высоту, температуру и давление.

Как сделать так, чтобы выводилась например высота, спустя 5 секунд экран меняется и выводит температуру, потом спустя 5 секунд давление?

И можно ли коротким кодом вывести дату и время? 

У вас между измерениями как раз пять секунд задержка стоит (в конце loop), значит на каждом проходе и выводите что-то одно. А чтобы знать, что именно сейчас выводить заведите переменную, равную 0. Пишите в программе - если переменная равна 0 то вывести высоту, если 1 то вывести температуру, если 2 то давление. Увеличить переменную на 1. Если стала больше 2, то приравнять её снова к нулю. А уж как это на си запрограммировать в книжке глянете.

Про время. Вывести-то его конечно можно, только откуда-то его взять нужно! Обычно используется модуль часов реального времени (RTC). Покупайте, осваивайте. Это будет следующий шаг.

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

BamBoo пишет:

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

BamBoo
Offline
Зарегистрирован: 20.02.2019

bwn пишет:

BamBoo пишет:

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

Понял, спасибо. 

BamBoo
Offline
Зарегистрирован: 20.02.2019

kalapanga пишет:

BamBoo пишет:

Сейчас у меня все выводится на одном экране в три строки. Вывожу высоту, температуру и давление.

Как сделать так, чтобы выводилась например высота, спустя 5 секунд экран меняется и выводит температуру, потом спустя 5 секунд давление?

И можно ли коротким кодом вывести дату и время? 

У вас между измерениями как раз пять секунд задержка стоит (в конце loop), значит на каждом проходе и выводите что-то одно. А чтобы знать, что именно сейчас выводить заведите переменную, равную 0. Пишите в программе - если переменная равна 0 то вывести высоту, если 1 то вывести температуру, если 2 то давление. Увеличить переменную на 1. Если стала больше 2, то приравнять её снова к нулю. А уж как это на си запрограммировать в книжке глянете.

Про время. Вывести-то его конечно можно, только откуда-то его взять нужно! Обычно используется модуль часов реального времени (RTC). Покупайте, осваивайте. Это будет следующий шаг.

Спасибо! 

Всем еще раз ОГРОМНОЕ СПАСИБО!

На сегодня задача выполнена и я пойду отдыхать. 

Завтра буду работать над сменой экрана и буду подключать GPS модуль с выводом координат на тот же экран. =0)

 

Спасибо огромное мужики! Жму руку каждому.