Функция void

feel feel
Offline
Зарегистрирован: 20.05.2019

Всем добрый день! Появилась проблема с функцией void LED_DISPLAY() , не могу понять в чем проблема. Если вместо названия этой функции поставить её тело в void loop(), то все прекрасно работает.
 

int Pin = 3;

#define CLK 3
#define DIO 2

#include "GyverTM1637.h"
GyverTM1637 disp(CLK, DIO);
void setup() {
  // put your setup code here, to run once:
pinMode(A1, INPUT_PULLUP); // Кнопка "Следуюший трек" (на выходе по умолчанию 1 из-за подтягивающего резистора)
pinMode(A2, INPUT_PULLUP); // Кнопка "Предыдущий трек" (на выходе по умолчанию 1 из-за подтягивающего резистора)
Serial.begin(9600);
disp.clear();
disp.brightness(7);  // яркость, 0 - 7 (минимум - максимум)
//------------------------------ПРИВЕТСТВИЕ------------------------------------------------------------
  byte troll[4] = {_0, _0, _0, _0};
  disp.twistByte(troll, 50);
  disp.clear();
  disp.twistByte(troll, 50);
  byte welcome_banner[] = {_H, _E, _L, _L, _O, _empty, _empty, _F, _E, _E, _L};
  disp.runningString(welcome_banner, sizeof(welcome_banner), 200);  // 200 это время в миллисекундах!
  disp.clear();
//------------------------------ПРИВЕТСТВИЕ------------------------------------------------------------
}


void loop() {
  
  if(!digitalRead(A1) == 1) {  
    if(Pin >= 3 && Pin < 13){
      Pin++;
      delay(300);   // millis() не подходит, так как идет задержка на считывания с пинов ADAFRUIT SOUND BOARD. СМ. скетч may09a, там выполнена millis()
    }
  }
  if(!digitalRead(A2) == 1){
    if(Pin > 3 && Pin <= 13) {
      Pin--;
      delay(300);
    }
  }
  LED_DISPLAY;
  Serial.println(Pin);
}

void LED_DISPLAY() {
  switch(Pin) {
    case 3:
    disp.display(3, 3, 3, 3);
     break;
     case 4:
    disp.display(4, 4, 4, 4);
     break;
     case 5:
    disp.display(5, 5, 5, 5);
     break;
  }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

всегда четко пишите. в чем проблема, а не просто "не работает".  Например - если компиляция с ошибкой - пишите текст ошибки.

Хотя я сразу выижу ошибку в вашем коде и могу просто указать на нее - но тогда вы ничему не научитесь. Почитайте правила оформления и вызова функций в языке Си - может сами догадаетесь?

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

А это чо? 

byte welcome_banner[] = {_H, _E, _L, _L, _O, _empty, _empty, _F, _E, _E, _L};

а чо, так можно? 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

а чо, так можно? 

Помню, из Правил поведения в студенческом лагере :

"В лагере можно делать ВСЕ!... что может позволить себе культурный и образованный человек."

feel feel
Offline
Зарегистрирован: 20.05.2019

Спасибо за ответ! Впредь буду более четче выражать свою проблему. Ошибку нашел и понял. Из-за невнимательности забыл поставить скобки после названия функции

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

feel feel пишет:

Спасибо за ответ! Впредь буду более четче выражать свою проблему. Ошибку нашел и понял. Из-за невнимательности забыл поставить скобки после названия функции

И компилятор вам таки ничего не говорил?

feel feel
Offline
Зарегистрирован: 20.05.2019

Нет, все нормально было. Загружался без ошибок

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

А чего ему говорить? По мне так не должен. Ну, разве что скромный варнинг типа code has no effect.

Жаль, что 6-ую строку никто не заметил :(

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ЕвгенийП пишет:

Жаль, что 6-ую строку никто не заметил :(

Я заметил, сразу, потому и молчал :)))

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

ЕвгенийП пишет:

А чего ему говорить? По мне так не должен. Ну, разве что скромный варнинг типа code has no effect.

Хм, действительно.((((