Отображение числе с перевернутым индикаторов.

maksmkv
Offline
Зарегистрирован: 07.04.2013

Всем привет. В общем были часы китайские, стали часы с ардуино ))) Сам дисплей повторил как на китайских с  перевернутой точкой 

 

Пишу код, который бы отобразил нормально  число например 11:

 

/*
a  = 8
b  = 9
c  = 10
d  = 11
e  = 12
f  = 6
g  = 7
dt = 5
*/

int Digit1 = 2; // индикатор 1
int Digit2 = 3; // индикатор 2

int segA = 8;
int segB = 9;
int segC = 10;
int segD = 11;
int segE = 12;
int segF = 6;
int segG = 7;
int segDT = 5;

void setup() {
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(segDT, OUTPUT);
  pinMode(Digit1, OUTPUT);
  pinMode(Digit2, OUTPUT);

  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segC, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segDT, HIGH);
  digitalWrite(Digit1, HIGH);
  digitalWrite(Digit2, HIGH);
  
}

void loop() {
    clear();
    digit(11);
}


void digit(int x){
    switch (x) {
        case 1:
          digitalWrite (Digit1,LOW);  
          digitalWrite (segB,LOW);
          digitalWrite (segC,LOW);
          break;

          case 11:
          digitalWrite (Digit1,LOW);  
          digitalWrite (segB,LOW);
          digitalWrite (segC,LOW);
          digitalWrite (Digit2,HIGH);
          digitalWrite (segF,HIGH);
          digitalWrite (segE,HIGH);
          break;
          }
} 

void clear(){
  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segC, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segDT, HIGH);
  digitalWrite(Digit1, HIGH);
  digitalWrite(Digit2, HIGH);
  }

 

 

 

Понимаю, что надо как-то инвертировать отображение- пробовал через отдельные функции, пробовал через отдельные переменные - нифига не пашет. Как это  реализовал Китай??? СПАСИБО 

maksmkv
Offline
Зарегистрирован: 07.04.2013

https://img.tttcdn.com/product/xy/500/500/p/gu1/E/L/E1286BL/E1286BL-1-1bff-Saff.jpg     Не вставилась картина сверху (( 

maksmkv
Offline
Зарегистрирован: 07.04.2013

Нашел косяк и исправил. Вот код: 

/*
a  = 8
b  = 9
c  = 10
d  = 11
e  = 12
f  = 6
g  = 7
dt = 5
*/

int Digit1 = 2; // индикатор 1
int Digit2 = 3; // индикатор 2

int segA = 8;
int segB = 9;
int segC = 10;
int segD = 11;
int segE = 12;
int segF = 6;
int segG = 7;
int segDT = 5;

void setup() {
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(segDT, OUTPUT);
  pinMode(Digit1, OUTPUT);
  pinMode(Digit2, OUTPUT);

  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segC, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segE, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segDT, HIGH);
  digitalWrite(Digit1, HIGH);
  digitalWrite(Digit2, HIGH);
  
}

void loop() {
    clear();
    digit(11);
}


void digit(int x){
    switch (x) {
          case 11:
          digitalWrite (Digit1,LOW);  
          digitalWrite (segB,LOW);
          digitalWrite (segC,LOW);
          delay(5);
          clear();
          digitalWrite (Digit2,LOW);
          digitalWrite (segF,LOW);
          digitalWrite (segE,LOW);
          delay(5);
          clear();
          break;
          }
} 

void clear(){
  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segC, HIGH);
  digitalWrite(segD, HIGH);
  digitalWrite(segE, HIGH);
  digitalWrite(segF, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segDT, HIGH);
  digitalWrite(Digit1, HIGH);
  digitalWrite(Digit2, HIGH);
  }

 

Как этот код можно упростить??? СПАСИБО 

sadman41
Offline
Зарегистрирован: 19.10.2016

Упростить - изучив массивы и циклы.

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

Так и не понял, что там "инвертировать". На картинке вроде обычные часы

sadman41
Offline
Зарегистрирован: 19.10.2016

Индикатор, наверное, вверх ногами припаян.

Green
Offline
Зарегистрирован: 01.10.2015

Это ж от разводки зависит. Если у перевёрнутого вместо а, подключить d, то и в софте менять ничего не надо.