В 144 сообщении 8 а не 6 индикаторов, если вникли в скетч то там глобальная ошибка для ваших 6 индикаторов - цикл надо менять и размер буфера, в какой строке вы вводите две цифры для индикации?
Щас внимательно посмотрел, в 47 скетче жёстко прописано 4 индикатора, даже цикла нет, почему именно это вы взяли за образец, не понятно в интернете поищите более продвинутый пример.
Делаете массив с выводимыми данными (например 8888). Перед этим собирате данные с датчиков и по циклу, по времени, НЕ ИСПОЛЬЗУЙТЕ SLEEP!, закидываете в массив с выводимыми данными. Из массива в обработчик на вывод индикатора.
если вы про мой скетч, то да, выкидываем часы, выкидываем получение температуры и давления,
заполняем массив цифр LED_BUF[8]
нужными значениями и все будет работать.
Можете для пробы вообще сначала ничего не убирать, а перед отображением в строке 259 заполнить буфер чем нибудь своим и посмотреть как будет работать, а потом уже убирать лишнее.
Я ничего не решил, я пытаюсь со вчерашнего вечера понять что у вас за индикаторы, а вы все темните, давно бы уже скинули ссылку с описанием или хотя бы фото.
Если обрубки цифр и еле светяться значит с большой вероятностью у вас другие индикаторы с общим катодом, а то что еле светяться - могли бы и догадаться пин А1 контроллера на +5м или земплю повесить, т.к. от его уровня яркость зависит.
экспериментируете с содержимым массива в строке 25, т.к. не понятно что там китайцы скоммутировали,
вместо процедуры вывода пишите shiftOut (примеры в ветке или интернете), потом уже разберетесь как работаете - сами переделайте процедуру под свой индикатор.
Я понял. Почерк автора так сказать.К стати если их даже не отключать на выходе у них ноль все равно. Достаточно только обозначить пин на выход и там сразу 0.
Всем привет. Пошесть просто пошла купил дисплей 12с переходником. Подключил SCL d a5 ,SDA в A4 .
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void setup()
{
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.print("iarduino.ru");
lcd.setCursor(8, 1);
lcd.print("LCD 1602");
}
void loop()
{
// Устанавливаем курсор на вторую строку и нулевой символ.
lcd.setCursor(0, 1);
// Выводим на экран количество секунд с момента запуска ардуины
lcd.print(millis()/1000);
}
Загрузил пример и не работает . И что странно на дисплее когда подать питание светится только нижняя строка бубиками а верхняя нет. Подскажите в чем проблема ????
Доброго времени суток ! Решил добить вопрос по индикатору . Но не совсем пойму строка 25 и 26 это массивы и в них ци фры так вот что это за цифры и от куда они берутся?
23 строка - массив байт, в каждом из которых биты, обозначающих какие светодиоды(сегменты данного конкретного индикатора ) будут светиться, т.е. матрица свечения
24 строка - описание каждого байта - т.е. какой сивол будет на индикаторе
25 строка - бит индикатора( общий анод) который нужно зажеч, вот так через ж... китайцы спаяли не подряд
26 непостредственно что должно отображаться на индикаторах = порядковый номер из массива строки 23
т.е. например 0 в первом байте 26 строки означает что сначала посылается байт выбора индикатора (16 из строки 25)
потом уже сам байт матрицы 0xC0 (или наоборот - не помню, сначала 0xC0 потом 16)
То есть в одном цифра их 7 плюс точка . Тогда откуда такие цифры как 128 ? Даже если считать 8 цифр и в них по 8 диодиков то это всего 56 . Каким образом формируются цифры в 25 строке ?
Я понял 16 это две цывры(диодиков ) 32. 4 цифры и ид. Верно ?
нарисуйте цифры из 25 строки в двоичной системе и увидите что там всего одна 1ка - это и есть тот индикатор который отображается в данный конкретный момент времени, соотвественно поочередно зажигая их с высокой частотой - человеку кажеться что они горят одновременно
Да вы правы индикатор оказался с общим катодом. Я подключил 4 сегментный индикатор без здвиговог регистра и опять не чего не работает и прозвонил его оказалось что он с общим катодом.
Подключил резистор через беременную вывожу значения все клас. Подключил библиотеку тензодатчика чтоб выводить вес индикатор вес выводит но цифры мерцают не успеваю разогрется. Может контроллер не успевает подсчитывает информацию с датчика усреднять ее и при этом сегменты зажигать ??
Завтра буду возле компьютера брошу. Но там только добавлена вместо цыфр в 30 ой строке переменная которая выводит значение с потенцыометра.
Значит варианты следующие
1 не верно подключено
2 я один не понял сколько у вас 7 сегментных индикаторов ?
3 если вместо 63 выходит 636 - значит не корректно заполняете массив с цифрами и сами не понимаете как скетч работает
Индикаторов 6. Как работает скетч понимаю но не до конца. Это мой первый индикатор. Если укажите на ошибки буду оч благодарен.
Вместо 36 выводит 636 то есть последняя цифра дублируются первой если 35 выводит 535 и т.д. Индикатор как у вас в 144. Сообщении.
В 144 сообщении 8 а не 6 индикаторов, если вникли в скетч то там глобальная ошибка для ваших 6 индикаторов - цикл надо менять и размер буфера, в какой строке вы вводите две цифры для индикации?
Щас внимательно посмотрел, в 47 скетче жёстко прописано 4 индикатора, даже цикла нет, почему именно это вы взяли за образец, не понятно в интернете поищите более продвинутый пример.
Окей благодарю будем искать .
че их искать то - ветку почитайте, первые попавшиеся, 123 сообщение, 144 сообщение - выкиньте все лишнее и будет вам счастье.
Там даже коментов к строкам толком нет мне как начинающему совсем тяжко. Подскажите хоть примерно че там жа как сделать ??
Что мозг выносите? посмотри мой скетч он вообще универсален.
Там даже коментов к строкам толком нет мне как начинающему совсем тяжко. Подскажите хоть примерно че там жа как сделать ??
ну извините :)
пишу обычно для себя а не для всеобщего обозрения, комментарии как то лень писать.
Я так понял убираем часы датчики оставляем ??
Делаете массив с выводимыми данными (например 8888). Перед этим собирате данные с датчиков и по циклу, по времени, НЕ ИСПОЛЬЗУЙТЕ SLEEP!, закидываете в массив с выводимыми данными. Из массива в обработчик на вывод индикатора.
Я так понял убираем часы датчики оставляем ??
э...я не знаю нужны ли вам датчики.
если вы про мой скетч, то да, выкидываем часы, выкидываем получение температуры и давления,
заполняем массив цифр LED_BUF[8]
нужными значениями и все будет работать.
Можете для пробы вообще сначала ничего не убирать, а перед отображением в строке 259 заполнить буфер чем нибудь своим и посмотреть как будет работать, а потом уже убирать лишнее.
Пробую
Пишет ошибка компиляции для ардуино уно . Наверно библиотеки не хватает ?
Пишет ошибка компиляции для ардуино уно . Наверно библиотеки не хватает ?
наверное да :)
в начале скетча есть же список библиотек - что мешает подключить?
По закрывал все не нужное
#include <Wire.h> //#include <DallasTemperature.h> #include <SPI.h> //#include <Adafruit_BMP280.h> #define DS_TPN 8 // DS18B20 grey // GND black +5V white //OneWire oneWire(DS_TPN); #define RTC_SDA A4 // - #define RTC_SCL A5 // - black// GND white +5V grey //RTC_DS1307 RTC; //#define LED_PWM 9 // - OE on 74HC595 #define LED_SCLK 10 // - blue #define LED_RCLK 11 // - green #define LED_DIO 12 // - maroon // GND yellow +5V orange #define CYCLE_GET_TIME 60 #define CYCLE_SHOW 4 #define CYCLE_GET_TEMP 243 #define BMP_SCK 4 #define BMP_MISO 5 #define BMP_MOSI 6 #define BMP_CS 7 //Adafruit_BMP280 bmp; // I2C //Adafruit_BMP280 bmp(BMP_CS); // hardware SPI //Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); byte LED_0F[33] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xC2, 0x89, 0xF9, 0xF1, 0xC3, 0xA9, 0xC0, 0x8C, 0x98, 0x92, 0xC1, 0x91, 0xFE, 0xBF, 0xFF, 0x9C, 0xAB}; // 0123456789AbCdEFGHIJLnOPqSUY_- (null) (degree) (mm) byte LED_NU[8] = {16, 32, 64, 128, 1, 2, 4, 8}; byte LED_BUF[8] = {30, 30, 30, 30, 30, 30, 30, 30}; byte LED_PWM = 3; // level light 7 = MAX 0 = MIN byte PWM_MAX[8] = {0b00000001, 0b00010001, 0b00100101, 0b01010101, 0b01011101, 0b11011101, 0b11111101, 0b11111111}; // matrix level light byte cicle_pwm = 0; //0..7 byte dd = 99; // day byte mm = 99; // month byte yh = 99; // high year byte yl = 99; // low year byte ho = 99; // hour byte mi = 99; // minute float tt = 99; // temp float pr = 99; // pressure float ut = 99; // street temp byte lu = 10; // last data street temp - MAX = 9 unsigned long timerSec = 0; byte timerGetTime = 37; byte timerShow = 0; byte timerGetTemp = 242; byte flShow = 0; // 0 time and temp 1 date 2 press void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); pinMode(LED_SCLK, OUTPUT); pinMode(LED_RCLK, OUTPUT); pinMode(LED_DIO, OUTPUT); digitalWrite(LED_BUILTIN, LOW); Serial.begin(9600); delay(1000); // sensors.begin(); pinMode(LED_PWM, OUTPUT); Wire.begin(); // if (! RTC.begin()) { while (1); } //if (! RTC.isrunning()) { // following line sets the RTC to the date & time this sketch was compiled // RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); // } // bmp.begin(); //} byte addPoint(byte inByte) { byte outByte = (inByte << 1); outByte = (outByte >> 1); return outByte; } void showLedBuf() { // select level light byte flbit; flbit = bitRead(PWM_MAX[LED_PWM], cicle_pwm); if (flbit == 1) { for (byte i = 0; i <= 7; i++) { digitalWrite(LED_RCLK, LOW); //shiftOut(LED_DIO, LED_SCLK, MSBFIRST, LED_0F[LED_BUF[i]]); shiftOut(LED_DIO, LED_SCLK, MSBFIRST, LED_BUF[i]); // full light shiftOut(LED_DIO, LED_SCLK, MSBFIRST, LED_NU[i]); digitalWrite(LED_RCLK, HIGH); } } else { // delay analog full light for (byte i = 0; i <= 7; i++) { digitalWrite(LED_RCLK, LOW); shiftOut(LED_DIO, LED_SCLK, MSBFIRST, 255); // empty shiftOut(LED_DIO, LED_SCLK, MSBFIRST, 255); digitalWrite(LED_RCLK, HIGH); } } // - ++cicle_pwm; if (cicle_pwm > 7) { cicle_pwm = 0; } } void loop() { // put your main code here, to run repeatedly: // count timers unsigned long ctmr = (long(millis() / 1000)); if ((timerSec > 4294900) && (ctmr < 100)) { timerSec = 0; } if (ctmr > timerSec) { timerSec = ctmr; ++timerGetTime; ++timerShow; ++timerGetTemp; if (timerGetTime >= CYCLE_GET_TIME) { timerGetTime = 0; // get time and date // DateTime now = RTC.now(); // dd = now.day(); // mm = now.month(); // yh = (now.year()) / 100; // yl = (now.year()) % 100; // ho = now.hour(); // mi = now.minute(); } if (timerShow >= CYCLE_SHOW) { timerShow = 0; switch (flShow) { case 1 : { // show date if ((dd >= 1) && (dd <= 31)) { if (dd < 10) { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[(dd % 10)]; } else { LED_BUF[0] = LED_0F[(dd / 10)]; LED_BUF[1] = LED_0F[(dd % 10)]; } } else { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[30]; } LED_BUF[1] = addPoint(LED_BUF[1]); if ((mm >= 1) && (mm <= 12)) { if (mm < 10) { LED_BUF[2] = LED_0F[0]; LED_BUF[3] = LED_0F[(mm % 10)]; } else { LED_BUF[2] = LED_0F[(mm / 10)]; LED_BUF[3] = LED_0F[(mm % 10)]; } } else { LED_BUF[2] = LED_0F[30]; LED_BUF[3] = LED_0F[30]; } LED_BUF[3] = addPoint(LED_BUF[3]); if ((yh >= 20) && (yh <= 29) && (yl >= 00) && (yl <= 99)) { LED_BUF[4] = LED_0F[(yh / 10)]; LED_BUF[5] = LED_0F[(yh % 10)]; if (yl < 10) { LED_BUF[6] = LED_0F[0]; LED_BUF[7] = LED_0F[(yl % 10)]; } else { LED_BUF[6] = LED_0F[(yl / 10)]; LED_BUF[7] = LED_0F[(yl % 10)]; } } else { LED_BUF[4] = LED_0F[30]; LED_BUF[5] = LED_0F[30]; LED_BUF[6] = LED_0F[30]; LED_BUF[7] = LED_0F[30]; } ++flShow; break; } case 2 : { // show press if ((pr >= 600) && (pr <= 900)) { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[30]; LED_BUF[5] = LED_0F[30]; LED_BUF[6] = LED_0F[32]; LED_BUF[7] = LED_0F[32]; int hp = int(pr); LED_BUF[2] = LED_0F[(hp / 100)]; byte pd = hp % 100; LED_BUF[3] = LED_0F[(pd / 10)]; LED_BUF[4] = LED_0F[(pd % 10)]; flShow = 0; break; } else { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[30]; LED_BUF[2] = LED_0F[30]; LED_BUF[3] = LED_0F[30]; LED_BUF[4] = LED_0F[30]; LED_BUF[5] = LED_0F[30]; LED_BUF[6] = LED_0F[30]; LED_BUF[7] = LED_0F[30]; flShow = 0; } } default : { // show time and temp if ((ho >= 0) && (ho <= 23)) { if (ho < 10) { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[(ho % 10)]; } else { LED_BUF[0] = LED_0F[(ho / 10)]; LED_BUF[1] = LED_0F[(ho % 10)]; } } else { LED_BUF[0] = LED_0F[30]; LED_BUF[1] = LED_0F[30]; } LED_BUF[1] = addPoint(LED_BUF[1]); if ((mi >= 0) && (mi <= 59)) { if (mi < 10) { LED_BUF[2] = LED_0F[0]; LED_BUF[3] = LED_0F[(mi % 10)]; } else { LED_BUF[2] = LED_0F[(mi / 10)]; LED_BUF[3] = LED_0F[(mi % 10)]; } } else { LED_BUF[2] = LED_0F[30]; LED_BUF[3] = LED_0F[30]; } // show temp if ((tt >= (-30)) && (tt <= 40)) { byte ta; if (tt < 0) { LED_BUF[4] = LED_0F[29]; ta = abs(tt); } else { LED_BUF[4] = LED_0F[30]; ta = tt; } if (ta < 10) { LED_BUF[5] = LED_0F[30]; LED_BUF[6] = LED_0F[(ta % 10)]; } else { LED_BUF[5] = LED_0F[(ta / 10)]; LED_BUF[6] = LED_0F[(ta % 10)]; } LED_BUF[7] = LED_0F[31]; } else { LED_BUF[4] = LED_0F[30]; LED_BUF[5] = LED_0F[30]; LED_BUF[6] = LED_0F[30]; LED_BUF[7] = LED_0F[30]; } ++flShow; } } } if (timerGetTemp >= CYCLE_GET_TEMP) { timerGetTemp = 0; // get temp and bar // sensors.requestTemperatures(); tt = sensors.getTempCByIndex(0); Serial.print("current DS18B20 = "); Serial.println(tt); if (tt == 0.00) { tt = 99; } else { tt = tt + 0.51; } // get bmp280 // pr = bmp.readPressure() / 133.322; } } // show info showLedBuf(); // set display light // word ll = analogRead(FOTORES); // LED_PWM = map(ll, 0, 1023, 0, 7); //--- end loop }Не судите строго .
вы если сложно воспринимаете чужой код, попытайтесь сначала что нибудь попроще написать
#ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #endif #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif #define PB2_HIGH sbi(PORTB,PB2); #define PB2_LOW cbi(PORTB,PB2); #define PB3_HIGH sbi(PORTB,PB3); #define PB3_LOW cbi(PORTB,PB3); #define PB4_HIGH sbi(PORTB,PB4); #define PB4_LOW cbi(PORTB,PB4); #define FOTORES A1 // grey // GND yellow +5V maroon #define LED_SCLK 10 // - blue PB2 #define LED_RCLK 11 // - green PB3 #define LED_DIO 12 // - maroon PB4 // GND yellow +5V orange byte LED_0F[33] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xC2, 0x89, 0xF9, 0xF1, 0xC3, 0xA9, 0xC0, 0x8C, 0x98, 0x92, 0xC1, 0x91, 0xFE, 0xBF, 0xFF, 0x9C, 0xAB}; // 0123456789AbCdEFGHIJLnOPqSUY_- (null) (degree) (mm) byte LED_NU[8] = {16, 32, 64, 128, 1, 2, 4, 8}; byte LED_BUF[8] = {0, 1, 2, 3, 4, 7, 8, 9}; byte LED_PWM = 3; // level light 7 = MAX 0 = MIN void setup() { // put your setup code here, to run once: // OFF unused pins pinMode(0, OUTPUT); digitalWrite(0, LOW); pinMode(1, OUTPUT); digitalWrite(1, LOW); pinMode(3, OUTPUT); digitalWrite(3, LOW); pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(13, OUTPUT); digitalWrite(13, LOW); pinMode(A0, OUTPUT); digitalWrite(A0, LOW); pinMode(A2, OUTPUT); digitalWrite(A2, LOW); pinMode(A3, OUTPUT); digitalWrite(A3, LOW); pinMode(A6, OUTPUT); digitalWrite(A6, LOW); pinMode(A7, OUTPUT); digitalWrite(A7, LOW); //-- pinMode(LED_SCLK, OUTPUT); pinMode(LED_RCLK, OUTPUT); pinMode(LED_DIO, OUTPUT); } byte addPoint(byte inByte) { byte outByte = (inByte << 1); outByte = (outByte >> 1); return outByte; } void showLedBuf() { for (byte lp = 0; lp <= LED_PWM; ++lp) { for (byte i = 0; i <= 7; i++) { PB3_LOW; for (byte j = 0; j <= 7; j++) { if (bitRead(LED_BUF[i], (7 - j))) { PB4_HIGH; } else { PB4_LOW; } PB2_HIGH; PB2_LOW; } for (byte j = 0; j <= 7; j++) { if (bitRead(LED_NU[i], (7 - j))) { PB4_HIGH; } else { PB4_LOW; } PB2_HIGH; PB2_LOW; } PB3_HIGH; } } for (byte lp = 0; lp < (7 - LED_PWM); ++lp) { PB3_LOW; PB4_HIGH; for (byte j = 0; j <= 15; j++) { PB2_HIGH; PB2_LOW; } PB3_HIGH; delayMicroseconds(350); } } void loop() { // put your main code here, to run repeatedly: // set display light word ll = analogRead(FOTORES); LED_PWM = map(ll, 0, 1023, 0, 7); // show info showLedBuf(); //--- end loop }пробуйте, если индикаторы аналогичные и подключено верно, должна быть строчка цифр 0, 1, 2, 3, 4, 7, 8, 9
Я так понял раз так много выходов вы ришили что у меня индикатор без регистроф ? У меня такой как на вашем фото с двумя регитрами
Залил скетч еле светятся все 6 какимито обрубками цыфр
У меня пины DIO.SCK.RCK подключил аналогично вашим SCLK.RCLK.DIO
Я ничего не решил, я пытаюсь со вчерашнего вечера понять что у вас за индикаторы, а вы все темните, давно бы уже скинули ссылку с описанием или хотя бы фото.
Если обрубки цифр и еле светяться значит с большой вероятностью у вас другие индикаторы с общим катодом, а то что еле светяться - могли бы и догадаться пин А1 контроллера на +5м или земплю повесить, т.к. от его уровня яркость зависит.
ЗЫ. Совсем обленились :(
Может какой другой индикатор посоветуете ? А то я до этого наверно еще не дорос . Или экранчик какой ?
нормальный экран, но сам не пробовал,
в строках 25 и 26 уменьшаете массивы до 6,
экспериментируете с содержимым массива в строке 25, т.к. не понятно что там китайцы скоммутировали,
вместо процедуры вывода пишите shiftOut (примеры в ветке или интернете), потом уже разберетесь как работаете - сами переделайте процедуру под свой индикатор.
http://codius.ru/articles/%D0%A2%D1%8E%D0%BD%D0%B8%D0%BD%D0%B3_Arduino_%...
http://codius.ru/articles/Arduino_%D0%A1%D0%B4%D0%B2%D0%B8%D0%B3%D0%BE%D...
https://mysku.ru/blog/ebay/35339.html
Прокоментируте пожалуйста строки с 32 по 41 ?
А0. Это фоторезистор яркость сегментов а вот остальное это что ?
Точнее A3
http://arduino.ru/Reference
почитайте - тут почти все есть, и в том числе команды с 31 по 42 строку
что такое А0 А3 в ваших вопросах? если аналоговые пины , то в каком контексте вопрос?
ЗЫ. Я честно говоря фигею от вас, я бы уж давно загуглил что это за команды и не задавал глупых вопросов на форуме.
Вас в школе и институте (если был) не учили пользоваться литературой?
Еду в машине а ответ хочется узнать. Ну вы понимаете интересно ж так что ....Приеду к компу обязательно разберусь.
Нет что это за команды я знаю. Я имел в виду зачем они там все на выход стоят если используется только одна.?
И зачем они все LOW.?
не помню, привычка отключать все не используемые пины
Я понял. Почерк автора так сказать.К стати если их даже не отключать на выходе у них ноль все равно. Достаточно только обозначить пин на выход и там сразу 0.
Всем привет. Пошесть просто пошла купил дисплей 12с переходником. Подключил SCL d a5 ,SDA в A4 .
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей void setup() { lcd.init(); lcd.backlight();// Включаем подсветку дисплея lcd.print("iarduino.ru"); lcd.setCursor(8, 1); lcd.print("LCD 1602"); } void loop() { // Устанавливаем курсор на вторую строку и нулевой символ. lcd.setCursor(0, 1); // Выводим на экран количество секунд с момента запуска ардуины lcd.print(millis()/1000); }Загрузил пример и не работает . И что странно на дисплее когда подать питание светится только нижняя строка бубиками а верхняя нет. Подскажите в чем проблема ????
Доброго времени суток ! Решил добить вопрос по индикатору . Но не совсем пойму строка 25 и 26 это массивы и в них ци фры так вот что это за цифры и от куда они берутся?
23 строка - массив байт, в каждом из которых биты, обозначающих какие светодиоды(сегменты данного конкретного индикатора ) будут светиться, т.е. матрица свечения
24 строка - описание каждого байта - т.е. какой сивол будет на индикаторе
25 строка - бит индикатора( общий анод) который нужно зажеч, вот так через ж... китайцы спаяли не подряд
26 непостредственно что должно отображаться на индикаторах = порядковый номер из массива строки 23
т.е. например 0 в первом байте 26 строки означает что сначала посылается байт выбора индикатора (16 из строки 25)
потом уже сам байт матрицы 0xC0 (или наоборот - не помню, сначала 0xC0 потом 16)
26 строкой мы указываем что у нас будут цифры от 1 до 9 ? Но 25 переключает аноды каждого разряда ? Или каждого сигмента ?
23 и 26 строки понятны а вот от куда берутся цыфры в 25 ? Это номера сегментов (диодов )?
Да, 8й (или 1 ый} бит это точка
То есть в одном цифра их 7 плюс точка . Тогда откуда такие цифры как 128 ? Даже если считать 8 цифр и в них по 8 диодиков то это всего 56 . Каким образом формируются цифры в 25 строке ?
Или это количество бит ?
Я понял 16 это две цывры(диодиков ) 32. 4 цифры и ид. Верно ?
Цифри отображаются не правильно пишу 2 отображается перевернутая шесть. Не правильно аноды переключаются ?
Цифри отображаются не правильно пишу 2 отображается перевернутая шесть. Не правильно аноды переключаются ?
если в инверсии - надо инвертировать отправляемые байты или да возможно ваш индикатор с общими катодами
нарисуйте цифры из 25 строки в двоичной системе и увидите что там всего одна 1ка - это и есть тот индикатор который отображается в данный конкретный момент времени, соотвественно поочередно зажигая их с высокой частотой - человеку кажеться что они горят одновременно
Да вы правы индикатор оказался с общим катодом. Я подключил 4 сегментный индикатор без здвиговог регистра и опять не чего не работает и прозвонил его оказалось что он с общим катодом.
Изменил в примере 0 на 1 то есть начал зажигать ну лем все работает .
Подключил резистор через беременную вывожу значения все клас. Подключил библиотеку тензодатчика чтоб выводить вес индикатор вес выводит но цифры мерцают не успеваю разогрется. Может контроллер не успевает подсчитывает информацию с датчика усреднять ее и при этом сегменты зажигать ??