Нужна помощь в создании часов

Тема в разделе "Arduino & Shields", создана пользователем Rinat, 13 апр 2016.

  1. Unixon

    Unixon Оракул Модератор

    Просто каждую секунду перезаписываете все содержимое регистров, в котором будет меняться 1 бит.
     
  2. REm

    REm Гик

    Спасибо))) всё это видел. Но разобраться не смог, именно в том как второй регистр задействовать,
    К примеру, на первом сегменте все порты в нуль, на втором - 1,3,5 в единицу.
    Для меня сложно понять это, без примера для особо одарённых, разобраться не могу.
     
  3. Vad33

    Vad33 Капитан-оригинал

    Давайте по порядку.
    Пришлите состояние скетча и схемы на котором остановились.
    И в чем именно затруднение?

    Сделать по готовому примеру легко, не особо понимая, что для чего нужно.
    Благополучно забыть все это потом еще легче. :)
     
  4. REm

    REm Гик

    Код (C++):
    const byte latchPin = 6;
    const byte clockPin = 7;
    const byte dataPin = 5;


    byte number[] = {0b10000010, 0b10011111, 0b1000110, 0b01100010, 0b00110011, 0b00101010, 0b00001010, 0b11100011, 0b00000010, 0b00100010};

    void setup() {

    pinmode(latchPin, OUTPUT);
    pinmode(clockPin, OUTPUT);
    pinmode(dataPin, OUTPUT);

    }
    void loop() {

      digitalWrite (latchPin, LOW);

      shiftOut(dataPin, clockPin, MSBFIRST, number[1]);

      digitalWrite (latchPin, HIGH);
    }
    Вот что я освоил))) можно смело называть меня Программистом Микроконтроллеров Ардуино ))))
    ---
    по делу:
    Побитовая запись для меня очень удобна и данный пример я освоил в достаточной мере.
    А вот последовательно соединённый регистр молчит от моих усилий.
     

    Вложения:

    • mc118-2.png
      mc118-2.png
      Размер файла:
      26,2 КБ
      Просмотров:
      795
  5. Vad33

    Vad33 Капитан-оригинал

    Дык, у вас в программе одни контакты, а на схеме другие.
    Или это очепятка?

    [​IMG]
     
  6. REm

    REm Гик

    это очепятка, у меня 328 р-рu, один регистр работает исправно, и два, если использую i++
    а вот побитово - тут уже глухо.
     
  7. Vad33

    Vad33 Капитан-оригинал

    А чего у вас shiftOut только один?
     
  8. REm

    REm Гик

    а вот это уже интересно)))
    не встречал в примерах подобного, просто хотел попробовать на другие порты посадить регистр, но не делал этого, смысл теряется, вернее делу такой способ не поможет.
    получается, нужно добавить shiftOut2?
    только как? Ведь остальные тоже переправить нужно?
    Код (C++):
     digitalWrite (latchPin, LOW);

      shiftOut(dataPin, clockPin, MSBFIRST, number[1]);

      digitalWrite (latchPin, HIGH);
    ---
    вот тут уже ковыряю...
     
    Последнее редактирование: 16 апр 2016
  9. Vad33

    Vad33 Капитан-оригинал

    Как это не встречал?
    В исходном здешнем скетче их аж...

    Код (C++):
      digitalWrite(LATCH,LOW);
        shiftOut(SER, CLK, MSBFIRST, num[s2]);
        shiftOut(SER, CLK, MSBFIRST, num[s1]);
        shiftOut(SER, CLK, MSBFIRST, num[m2]);
        shiftOut(SER, CLK, MSBFIRST, num[m1]);
        shiftOut(SER, CLK, MSBFIRST, num[h2]);
        shiftOut(SER, CLK, MSBFIRST, num[h1]);
      digitalWrite(LATCH,HIGH);
    ...много
     
  10. REm

    REm Гик

    Код (C++):
    byte number[] = {0b10000010, 0b10011111, 0b1000110, 0b01100010, 0b00110011, 0b00101010, 0b00001010, 0b11100011, 0b00000010, 0b00100010};
    а эту строку, получается тоже нужно сделать так?
    Код (C++):
    byte number2[] = {0b10000010, 0b10011111, 0b1000110, 0b01100010, 0b00110011, 0b00101010, 0b00001010, 0b11100011, 0b00000010, 0b00100010};
     
  11. Securbond

    Securbond Гуру

    А зачем ? Если значения массива одинаковые....
     
  12. REm

    REm Гик

    Код (C++):
    const byte latchPin = 6;
    const byte clockPin = 7;
    const byte dataPin = 5;


    byte number[] = {0b10000010, 0b10011111, 0b1000110, 0b01100010, 0b00110011, 0b00101010, 0b00001010, 0b11100011, 0b00000010, 0b00100010};
    byte number2[] = {0b10000010, 0b10011111, 0b1000110, 0b01100010, 0b00110011, 0b00101010, 0b00001010, 0b11100011, 0b00000010, 0b00100010};

    void setup() {

    pinmode(latchPin, OUTPUT);
    pinmode(clockPin, OUTPUT);
    pinmode(dataPin, OUTPUT);

    }
    void loop() {

      digitalWrite (latchPin, LOW);

      shiftOut(dataPin, clockPin, MSBFIRST, number[1]);
       shiftOut2(dataPin, clockPin, MSBFIRST, number2[5]);

      digitalWrite (latchPin, HIGH);
    }
    Получается так? И почему сам не додумался до этого? Ну да ладно, есть бедолаги поумнее меня)))

    Массив на бумаге одинаковый, а в деле я 2 и 3 регистрам ножки развёл не так. Платку переделывать пока не буду, потом в прототипе сделаю, сейчас лишь бы элементы доточить.
    Потому второй введу, с другими, подобранными значениями.
     
  13. Vad33

    Vad33 Капитан-оригинал

    Что не запаяли, то запрограммируем. :D

    p.s. а что такое shiftOut2 ??
    shiftOut - это штатная команда языка
    http://arduino.ru/Reference/ShiftOut
     
    Последнее редактирование: 16 апр 2016
    Securbond нравится это.
  14. REm

    REm Гик

    Действительно, не положено по штату префикс указывать. Загнался.
    Кстати, по поводу пайки и коду, у меня почти всё криво сделано и взаимодополняет до требуемой функции. Крайности, но главное работает. Сейчас очень большая работа делается, всё с нуля почти. Только индикаторов работы устройства больше 15 шт.