7seg4dig стал бледнее светится.

Kazs
Offline
Зарегистрирован: 29.01.2017

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

Для меня непонятная ситация, которая приключилась с 7-seg LED 4x module(sma420364).

Написал код, который брал случайное число с pin0 и задавал на случайный экран случайное же число. В итоге цифры по 1 просто бегали по 4 экранам, вполне себе обычно. Решил поучится задавать число через монитор порта. Почитал тут про синтаксис, про то, как интегрировать. Но чего-то не взлетело, никакие цифры не выводились на табло. Перетыкал разные синаксисы Serial, чтобы опробовать этот синтаксис, игрался с бодам и т.д.

Понятное дело, из-за того, что код не взлетел - цифр я не видел, и экран не работал.

Вернул код на прежнее место, но теперь циферблат стал светиться очень бледно. Проверил контакты и т.д., но ничего не увидел.

int incomingByte = 0;   
 
void setup() 
{
    Serial.begin(9600);
}
 void loop()
 {
    if (Serial.available() > 0)
     { 
        incomingByte = Serial.read();
     }
    //тут уже пытался передать полученное число на табло, заменив свой рандомайзер
}

Вот такой использовал кусок кода. Могу, если надо выложить весь код.

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

 

Kazs
Offline
Зарегистрирован: 29.01.2017

Короче, провёл собственное расследование.

Запустил такой скетч

//Аноды
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int dp = 9;
//Катод
int d4 = 13;
void setup()
 {
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(dp, OUTPUT);
}

void loop() //Цифра 0 
{
  digitalWrite(d4, LOW);  
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
  digitalWrite(dp, LOW);
}

Ноль горит ярко. Значит проблема в коде.

Но я уже создал тему в Аппаратной ветке. Есть у модераторов возможность перенести? Может помогут найти ошибку из-за чего горит бледно. Вот мой скетч

// Андоы
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int dp = 9;
// Катоды
int d4 = 10;
int d3 = 11;
int d2 = 12;
int d1 = 13;
// Для рандомайзера
int symbol;
int digPosition;

void setup()
{
  Serial.begin(9600);
  randomSeed(analogRead(0));
  pinMode(d1, OUTPUT);
  pinMode(d2, OUTPUT);
  pinMode(d3, OUTPUT);
  pinMode(d4, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(dp, OUTPUT);
}
void loop()
{
  digPosition = random(1, 5);
  symbol = random(1, 10);
  Display(digPosition, symbol);
  delay(1000);
}
void Display(char digPosition, char symbol)   // Подсчёт для Display. Выводит знак "symbol" на позацию "digPosition"
{
  digitPosition(digPosition);
  pickSymbol(symbol);
  Clear(); // Очистка "digPosition" и знака в ней.
}
void digitPosition(char n) //Выбор экрана на которм выводится число
{
  switch (n)
  {
    case 1:
      digitalWrite(d1, LOW);
      digitalWrite(d2, HIGH);
      digitalWrite(d3, HIGH);
      digitalWrite(d4, HIGH);
      break;
    case 2:
      digitalWrite(d1, HIGH);
      digitalWrite(d2, LOW);
      digitalWrite(d3, HIGH);
      digitalWrite(d4, HIGH);
      break;
    case 3:
      digitalWrite(d1, HIGH);
      digitalWrite(d2, HIGH);
      digitalWrite(d3, LOW);
      digitalWrite(d4, HIGH);
      break;
    case 4:
      digitalWrite(d1, HIGH);
      digitalWrite(d2, HIGH);
      digitalWrite(d3, HIGH);
      digitalWrite(d4, LOW);
      break;
    default :
      digitalWrite(d1, HIGH);
      digitalWrite(d2, HIGH);
      digitalWrite(d3, HIGH);
      digitalWrite(d4, HIGH);
      break;
  }
}
void Num_0()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
  digitalWrite(dp, LOW);
}
void Num_1()
{
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(dp, LOW);
}
void Num_2()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_3()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_4()
{
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_5()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_6()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_7()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(dp, LOW);
}
void Num_8()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Num_9()
{
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Cels() // Знак Цельсий °С
{
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
  digitalWrite(dp, LOW);
}
void Clear()
{
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(dp, LOW);
}


void pickSymbol(char n)// Выбор знака
{
  switch (n)
  {
    case 0: Num_0();
      break;
    case 1: Num_1();
      break;
    case 2: Num_2();
      break;
    case 3: Num_3();
      break;
    case 4: Num_4();
      break;
    case 5: Num_5();
      break;
    case 6: Num_6();
      break;
    case 7: Num_7();
      break;
    case 8: Num_8();
      break;
    case 9: Num_9();
      break;
    case 10: Cels();
      break;
    default: Clear();
      break;
  }
}

 

Kazs
Offline
Зарегистрирован: 29.01.2017

Всем спасибо, извиняюсь за создание лишней темы. Ошибка была в том, что добавил дилей в луп. Убрал в его в void Display(char digPosition, char symbol) - стало как прежде.

Только не понятно почему делей в лупе вызывает бледность.

Тему можно закрывать.

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

Посмотрите на строки 45-47. Вы этот бедный символ только что вывели и тут же стираете.

Kazs
Offline
Зарегистрирован: 29.01.2017

Ага, теперь я вспомнил зачем туда дилей вставлял.