Друзья, помогите пожалуйста. Собрал из двух семисегментных индикаторов подобие таймера. Проблема в том, что на правом индикаторе 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); } }
В коде проблем не вижу -- проверяйте схему. Фотка красочная, но ней не видно что-куда подключено. На каких? Попробуйте написать скетч, который зажигает по одному сегменту на правом индикаторе. Может это немного прояснит ситуацию.
Если бы в этом списке была ещё '6', то это прояснило бы ситуацию. А так получается какая-то мистика.... На всякий случай проверьте, что бы выводы резисторов друг-друга не касались. Если ножки кривые, то может быть не нужный контакт.
Что общего есть в цифрах 2,3,4,5,6,8,9 и нет в цифрах 0,1,7 (в плане отображения на индикаторе)? Тогда станет понятно зачем: Хотя может проблема и не в лишнем контакте... Надо проверять...