На DP идет сигнал,хотя не должен

Тема в разделе "Arduino & Shields", создана пользователем Ye11ow, 20 июн 2018.

  1. Ye11ow

    Ye11ow Нерд

    Друзья, помогите пожалуйста.

    Собрал из двух семисегментных индикаторов подобие таймера. Проблема в том, что на правом индикаторе right на некоторых числах отображается точка DP. Собирал с помощью 2 сдвиговых регистров.

    Код и фото прикладываю.
    Код (C++):
    //Проект 19 - Утнвление двумя семисегментными индикаторами

    #define DATA 6 //К ВЫВОДУ 14 МИКРОСХЕМЫ
    #define LATCH 8 //К ВЫВОДУ 12 МИКРОСХЕМЫ
    #define CLOCK 10 //К ВЫВОДУ 11 МИКРОСХЕМЫ

    //ПОДГОТОВИТЬ МАССИВ С КОМБИНАЦИЯМИ СЕГМЕНТОВ
    //ДЛЯ ЦИФР 0-9 И БУКВ A-F
    int digits[]={252,96,218,242,102,182,190,224,254,246,238,62,156,122,158,142};

    void setup()
    {
      Serial.begin(9600);
    pinMode(LATCH,OUTPUT);
    pinMode(CLOCK,OUTPUT);
    pinMode(DATA,OUTPUT);
    }

    void displayNumber(int n)
    {
      int left,right=0;
      if (n<10)
      {
        Serial.print("Left is ");
        Serial.print(0,1);
        Serial.print(" Right is ");
        Serial.print(n,1);
        digitalWrite (LATCH,LOW);
        shiftOut(DATA,CLOCK,LSBFIRST,digits[n]);
        shiftOut(DATA,CLOCK,LSBFIRST,252);
        digitalWrite(LATCH,HIGH);
      }
      else if(n>=10)
      {
        right=n%10; //остаток от деления числа на 10
        left=n/10; //частное от деления числа на 10
        Serial.print("Left is ");
        Serial.print(left,1);
        Serial.print(" Right is ");
        Serial.print(right,1);
        digitalWrite(LATCH,LOW);
        shiftOut(DATA,CLOCK,LSBFIRST,digits[right]);
        shiftOut(DATA, CLOCK,LSBFIRST,digits[left]);
        digitalWrite(LATCH,HIGH);
      }
    }
    void loop()
    {
    int i;
    for(i=99;i>0;i--)
    {
      displayNumber(i);
      Serial.print(" // Integer indicated ");
      Serial.println(i,1);
      delay(1000);
    }
    }
    9n1Z_70YdZM.jpg
     
  2. AlexU

    AlexU Гуру

    В коде проблем не вижу -- проверяйте схему. Фотка красочная, но ней не видно что-куда подключено.
    На каких?
    Попробуйте написать скетч, который зажигает по одному сегменту на правом индикаторе. Может это немного прояснит ситуацию.
     
    Ye11ow и arkadyf нравится это.
  3. Ye11ow

    Ye11ow Нерд

  4. Ye11ow

    Ye11ow Нерд

    Собрано все верно-это сто процентов.
     
  5. Ye11ow

    Ye11ow Нерд

    Точка с цифрами 2,3,4,5,8,9
     
  6. parovoZZ

    parovoZZ Гуру

    Косяк здесь
    Либо регистры ёвые.
     
  7. Ye11ow

    Ye11ow Нерд

    А что тут закосячено?
     
  8. AlexU

    AlexU Гуру

    Если бы в этом списке была ещё '6', то это прояснило бы ситуацию. А так получается какая-то мистика....
    На всякий случай проверьте, что бы выводы резисторов друг-друга не касались. Если ножки кривые, то может быть не нужный контакт.
     
    Igor68 нравится это.
  9. Ye11ow

    Ye11ow Нерд

    А что прояснится, если 6 будет? Просто она вроде как есть, смогу только позже проверить....
     
  10. AlexU

    AlexU Гуру

    Что общего есть в цифрах 2,3,4,5,6,8,9 и нет в цифрах 0,1,7 (в плане отображения на индикаторе)?
    Тогда станет понятно зачем:
    Хотя может проблема и не в лишнем контакте... Надо проверять...
     
    Igor68 нравится это.