Функции однотипные блоки.

Тема в разделе "Arduino & Shields", создана пользователем arduin, 11 мар 2017.

  1. arduin

    arduin Нерд

    Добрый день всем форумчанам.


    Вопрос такой.

    Есть код

    Код (C++):

    void temperatura(){

      if( flag==flag_id) {
       val1=  digitalRead(12);
      tft.fillScreen(GOLUB);
              tft.setCursor(80, 20);
              tft.setTextColor(WHITE);
         tft.setTextSize(3);
    tft.println("TEMPERATURA");
      }
    }

     



    Данный код все время повторяется. vМеняется лишь пара строчек данных
    а именно flag_id и tft.println("TEMPERATURA");

    Как сделать чтоб функция была одна а надпись менялась таким образом.

    1) В место строки
    Код (C++):
    tft.println("TEMPERATURA");
    пишем переменную line_blok
    Код (C++):
    tft.println(line_blok);
    2) Там где ее надо вывести просто пишем код

    Код (C++):
     temperatura("Блок 1 ");
    temperatura("Блок 2");
    temperatura("Блок 3");
    Так же меняем флаг flag==1 flag==2 flag==3

    И так далее.

    В результате в место трех функций будет всего одна, и в ней меняется только название выводимой информации.


    Если можно примерчик.
    Спасибо.
     
  2. rkit

    rkit Гуру

    Код (C++):
    void temperatura(const char* string){
      tft.println(string);
    }
     
    arduin нравится это.
  3. Karabas

    Karabas Гик

  4. arduin

    arduin Нерд

  5. arduin

    arduin Нерд




    Увы не работает.


    Код (C++):
    void modules(const char* string){
     
       val1=  digitalRead(12);
        tft.fillScreen(BLACK);
              tft.setCursor(80, 20);
              tft.setTextColor(WHITE);
              tft.setTextSize(3);
       tft.println(string);
     

    }
      modules("AAAA");
     
     
  6. rkit

    rkit Гуру

    Причесывайте код, читайте ошибки.
     
    arduin нравится это.
  7. arduin

    arduin Нерд

    Код (C++):
    Ошибку выдает
    expected constructor, destructor, or type conversion before '(' token

    Похоже понял ошибку, код был за пределами lopp.

    Спасибо вы очень помогли.


    А второй b nhtnbq параметр я могу добавить?
    Пример. Первые 2 параметра работают а вот RED не передается. Цвет должен оказаться в строке tft.fillScreen(color);
    Хотя Любой другой цвет передается нормально.

    Код (C++):

    loop{
    modules("text  modules", 1, RED);
    }




    void modules(const char* string,  int flag_id,   char color){

       if(2==flag_id) {
       val1=  digitalRead(12);
        tft.fillScreen(color);
              tft.setCursor(80, 20);
              tft.setTextColor(GREEN);
              tft.setTextSize(3);
       tft.println(string);
        tft.println(color);
    }

    }



     
     
    Последнее редактирование: 11 мар 2017