1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Решено Часы - реле для аквариума

Тема в разделе "Цифровая техника", создана пользователем Buba_Chkhadze, 17 дек 2015.

  1. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    317
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Переходи на сдвиговые регистры.
  2. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    Я ссылку скидывал там есть как управлять сдвиговым регистром)
    --- Сообщения объединены, 20 дек 2015 ---
    Есть такой способ подключения кнопок, можно сократить кол-во используемых ног.
    [​IMG]
    --- Сообщения объединены, 20 дек 2015 ---
    [​IMG]
    ну и как понять что кнопка нажата
    Buba_Chkhadze нравится это.
  3. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    опа, данке шон
  4. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    с индикатором тоже определиться не могу, есть от DVD мелкий индикатор, но как то там не очень удобно
    выводы сделаны, срисовал схему
    индикатор.jpg

    не знаю пойдет нет ?
    Последнее редактирование: 22 дек 2015
  5. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    317
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
  6. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    это мы в курсе, думаю как это будет в коде
  7. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    Вот пример работы с SPI для сдвигового регистра

    настройка
    Код:
    /*настройка SPI*/
    void spiInit()
    {
      SPCR = 0b01110011;
    }
    шлем байт data

    Код:
    void send_spi(uint8_t data)
    {
      PORTB &= ~(1<<PB0);
      SPDR = data;
      /* проверка завершения передачи*/
      while(!(SPSR &(1<<SPIF)));
      PORTB |= (1<<PB0);
    }
    можно несколько слать - это в две 595, например так:

    Код:
    void send_spi(uint8_t data, uint8_t data2)
    {
      PORTB &= ~(1<<PB0);
      SPDR = data;
      /* проверка завершения передачи*/
      while(!(SPSR &(1<<SPIF)));
      SPDR = data2;
      /* проверка завершения передачи*/
      while(!(SPSR &(1<<SPIF)));
      PORTB |= (1<<PB0);
    }
    Buba_Chkhadze нравится это.
  8. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    а символы как выводить ?
  9. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    для 7 сегментника?
  10. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    да
  11. koteika

    koteika В доску свой

    Сообщения:
    768
    Симпатии:
    118
    Род занятий:
    программирование
    объявить массивы с кодами символов, и кодами разрядов 7 сегментника. и пихать их по спи на 595.
    Код:
    /*символы*/
    uint8_t number_ok[20] =
    {
      /*0babcdefgh*/
        0b00000011, /*0*/
        0b10011111, /*1*/
        0b00100101, /*2*/
        0b00001101, /*3*/
        0b10011001, /*4*/
        0b01001001, /*5*/
        0b01000001, /*6*/
        0b00011111, /*7*/
        0b00000001, /*8*/
        0b00001001, /*9*/
          0b11111101, /*- - 10*/
          0b00110001, /*P - 11*/
          0b01100011, /*c - 12*/
          0b11100001, /*t - 13*/
          0b01100001, /*E - 14*/
          0b11000001, /*b - 15*/
          0b10000101, /*d - 16*/
          0b11010001, /*h - 17*/
          0b10010001, /*H - 18*/
          0b00010001, /*R - 19*/
    };
    
    /*разряды*/
    uint8_t digit_ok[5] =
    {
      0b00000001,
      0b00000010,
      0b00000100,
      0b00001000,
    };
    Код:
    /*буффер для вывода через  spi*/
    uint8_t buff[4];
    uint8_t buff_index = 0;

    Код:
    /* тут отправляем то что надо вывести например 1234*/
    void send_spi_data(uint16_t data)
    {
      /*1234 buff[0] = 4, buff[1] = 3.......*/
      buff[0] = data % 10;
      data = data / 10;
      buff[1] = data % 10;
      data = data / 10;
      buff[2] = data % 10;
      buff[3] = data / 10;
      //send_spi();
    }
    
    /*функция вывода любого значения в любой разряд 7 сегментника*/
    
    void send_buffer(uint8_t num1, uint8_t num2, uint8_t num3, uint8_t num4)
    {
        buff[3] = num1;
        buff[2] = num2;
        buff[1] = num3;
        buff[0] = num4;
    }
    
    /*отправка на 7 сегментник*/
    void send_buffer_spi()
    {
      PORTB &= ~(1<<PB0);
      SPDR = digit_ok[buff_index];
      while(!(SPSR &(1<<SPIF)));
      SPDR = number_ok[buff[buff_index]];
      while(!(SPSR &(1<<SPIF)));
      PORTB |= (1<<PB0);
      buff_index++;
      _delay_us(100);
      if(buff_index==4){
        buff_index=0;
      }
    }
    Buba_Chkhadze нравится это.
  12. .ctor

    .ctor В доску свой

    Сообщения:
    720
    Симпатии:
    209
    Род занятий:
    парогенератор
    Адрес:
    Алматы
    чейто вдруг не подходят? О_о
    --- Сообщения объединены, 20 дек 2015 ---
    Динамическая индикация, другого варианта нет. У меня 8-ми циферный дисплей так сделан.
    2 индикатора по 4 цифры
  13. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.915
    Симпатии:
    317
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Плохо подходят, их постоянно перегружать надо для динамической индикации.
    Для статики выставил значения и забыл до следующей смены цифр. А в динамике молотить постоянно надо.
  14. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    в общем пока отпадают регистры и сегментники, сейчас смотрю в сторону LCD от Nokia 1110 или 3310.
    1110 есть в наличии
  15. .ctor

    .ctor В доску свой

    Сообщения:
    720
    Симпатии:
    209
    Род занятий:
    парогенератор
    Адрес:
    Алматы
    ну так такие дисплеи (объединенные) в принципе по другому не работают.
  16. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    203
    Симпатии:
    107
    А как насчет вот этого дисплея [​IMG]
    --- Сообщения объединены, 20 дек 2015 ---
    Вот схемка его [​IMG]
    --- Сообщения объединены, 20 дек 2015 ---
    Пять кнопок управляются по 1 проводу через АЦП и семь проводов на дисплей плюс кнопка reset
  17. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    у меня такое ощущение, что мне пытаются принудительно что то продать,
    я видел это всё на чипдип.кз
  18. Дмитрий BASIC

    Дмитрий BASIC В доску свой

    Сообщения:
    203
    Симпатии:
    107
    Вот еще подключение по I2C [​IMG]
    --- Сообщения объединены, 20 дек 2015 ---
    Почему продать ?
    Разговор вроде идет что ног не хватает разве плохая идея использовать АЦП ?
  19. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.494
    Симпатии:
    371
    Адрес:
    Талгар
    Да вроде разобрались

    Вот предварительный набросок схемы
    схема набросок.jpg
  20. .ctor

    .ctor В доску свой

    Сообщения:
    720
    Симпатии:
    209
    Род занятий:
    парогенератор
    Адрес:
    Алматы
    эти люди.. с ардуинами.. приходят внезапно))
    [​IMG]
    DenisD, Buba_Chkhadze и koteika нравится это.

Поделиться этой страницей