Помогите с простым скетчем.

Тема в разделе "Arduino & Shields", создана пользователем DeathKing, 28 авг 2019.

  1. DeathKing

    DeathKing Нуб

    Специалисты гляньте что не так пожалуйста. Я делаю светодиодный проект. Есть светодиодная строка из светодиодных матриц 8х8 на микросхемах MAX7219. Так же есть семисегментные индикаторы на TM1637 и 5 светодиодов на сдвиговом регистре 74HC595. По отдельности скетчи проверки работают а вот когда обьединяю в один скетч не хочет работать. Не работают светодиоды и строка не хочет работать правильно. Гланьте может я что то не так делаю? Огромное спасибо!!!

    Код (C++):

    /*Time_Test*/
    #include "TM1637.h"


    #define DISP1_CLK 30
    #define DISP1_DIO 31

    #define DISP2_CLK 22
    #define DISP2_DIO 23

    #define DISP3_CLK 24
    #define DISP3_DIO 25

    #define DISP4_CLK 32
    #define DISP4_DIO 33

    #define DISP5_CLK 28
    #define DISP5_DIO 29



    TM1637 Display_1(DISP1_CLK, DISP1_DIO);

    TM1637 Display_2(DISP2_CLK, DISP2_DIO);

    TM1637 Display_3(DISP3_CLK, DISP3_DIO);

    TM1637 Display_4(DISP4_CLK, DISP4_DIO);

    TM1637 Display_5(DISP5_CLK, DISP5_DIO);


    int8_t Time1[] = {1, 2, 2, 0};
    int8_t Time2[] = {1, 4, 3, 5};
    int8_t Time3[] = {0, 7, 2, 4};
    int8_t Time4[] = {0, 9, 4, 6};
    int8_t Time5[] = {1, 9, 4, 7};

    /*5Led_Test*/
    const int data_pin = 2;
    const int sh_pin = 4;
    const int st_pin = 3;

    int bt = 0;

    void shift(byte v){
        for(int z=0; z<8; z++){
            digitalWrite(sh_pin, LOW);
            digitalWrite(data_pin, v & (1 << z ));
            digitalWrite(sh_pin, HIGH);
        }
        digitalWrite(st_pin, HIGH);
        digitalWrite(st_pin, LOW);
    }

    /*Display_Test*/
    #include <SPI.h>
    #include <Adafruit_GFX.h>
    #include <Max72xxPanel.h>

    int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
    int numberOfHorizontalDisplays = 1;
    int numberOfVerticalDisplays = 25;

    Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

    String tape = "SW12.3 NW14.5 S 15  NE14.3 EW19.2";
    int wait = 20; // In milliseconds

    int spacer = 1;
    int width = 5 + spacer; // The font width is 5 pixels


    void setup()

    /*Time_Test*/
    {
      /*Инициализация дисплеев*/
      Display_1.init();
      Display_2.init();
      Display_3.init();
      Display_4.init();
      Display_5.init();
      /*Устанавливаем яркость свечения дисплеев*/
      /*BRIGHT_TYPICAL - нормальная яркость*/
      /*BRIGHT_DARKEST - затемнённый дисплей*/
      /*BRIGHTEST - яркий дисплей*/
      Display_1.set(BRIGHTEST);
      Display_2.set(BRIGHTEST);
      Display_3.set(BRIGHTEST);
      Display_4.set(BRIGHTEST);
      Display_5.set(BRIGHTEST);


    /*5Led_Test*/
        pinMode(data_pin, OUTPUT);
        pinMode(sh_pin, OUTPUT);
        pinMode(st_pin, OUTPUT);

    /*Display_Test*/
      matrix.setIntensity(15); // Use a value between 0 and 15 for brightness

    // Adjust to your own needs
    //  matrix.setPosition(0, 0, 0); // The first display is at <0, 0>
    //  matrix.setPosition(1, 1, 0); // The second display is at <1, 0>
    //  matrix.setPosition(2, 2, 0); // The third display is at <2, 0>
    //  matrix.setPosition(3, 3, 0); // And the last display is at <3, 0>
    //  ...
    //  matrix.setRotation(0, 2);    // The first display is position upside down
      matrix.setRotation(1);    // The same hold for the last display  

    }
    void loop()
    {

    /*5Led_Test*/
        shift(1<<bt);
        bt++;
        if( bt==8 )
            bt = 0;
    /*Time_Test*/
     
      /*Сразу же гасим десятичную точку для всех знакомест*/
      Display_1.point(true);
      Display_2.point(true);
      Display_3.point(true);
      Display_4.point(true);
      Display_5.point(true);
      /*Вывод значения температуры на дисплей с десятичной точкой*/
      Display_1.display(Time1);
      Display_2.display(Time2);
      Display_3.display(Time3);
      Display_4.display(Time4);
      Display_5.display(Time5);
      /*Выводим значение времени на дисплей с разделителем двоеточие*/
      /*Также управляем зажиганием и гашением разделителя двоеточие*/




    /*Display_Test*/

    // for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {

          for ( int i = 196 ; i < width * tape.length() + matrix.width() - 1 - spacer;) {

        matrix.fillScreen(LOW);

        int letter = i / width;
        int x = (matrix.width() - 1) - i % width;
        int y = (matrix.height() - 8) / 2; // center the text vertically

        while ( x + width - spacer >= 0 && letter >= 0 ) {
          if ( letter < tape.length() ) {
            matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
          }

          letter--;
          x -= width;
        }

        matrix.write(); // Send bitmap to display

       delay(wait);


      }

    }
     
     
  2. b707

    b707 Гуру

    я вам уже на другом форуме ответил - вы "механически" склеили два кода, не потрудившись даже перенести подключения библиотек в начало, неудивительно, что у вас нифига не работает.
    Когда исправите очевидные косяки - приходите снова и попытайтесь конкретно описать, что именно не работает . Ваша фраза "диоды не работают" - не несет никакой информации. Пример того, что нужно писать - "диоды 1,3, 6 и 8 должны последовательно загораться с интервалом в 100мс и гаснуть одновременно, вместо этого зажигается только диод 9 и мигает раз в секунду"
     
    Daniil, Andrey12, issaom и ещё 1-му нравится это.
  3. Asper Daffy

    Asper Daffy Иксперд

    А вдруг тут как-то по-другому будет? :)))
     
    Andrey12 нравится это.
  4. NikitOS

    NikitOS Король шутов Администратор

    Будет
    Тут есть я, который отправит в гугол, опираясь на правило 5.3
     
    Andrey12 нравится это.
  5. Asper Daffy

    Asper Daffy Иксперд

    Злой ты! Искать заставляешь. Тут человеку влом написать что он собственно хотел сделать, и что пошло не так, а ты его в поиск... зверь прямо :(

    Я вот человек добрый, никого искать не заставляю, таким как ТС сразу прямые ссылки даю. Вот, например, пусть пользуется :)
     
    Andrey12 и NikitOS нравится это.
  6. NikitOS

    NikitOS Король шутов Администратор

    А я могу еще это предложить
    Не так красиво, но мне просто лень что-то делать
     
    Andrey12 и Asper Daffy нравится это.
  7. DeathKing

    DeathKing Нуб

    :mad: злые вы. Не знаю я как правильно обьединять скетчи. Я понял из всех ответов только что подключение библиотек нужно сместить вверх.
     
  8. NikitOS

    NikitOS Король шутов Администратор

    loop в loop, setup в setup
    Остальные функции в низ

    Расставлять в порядке, в котором должно выполняться по задаче

    Что сложного?
     
    Andrey12 нравится это.
  9. parovoZZ

    parovoZZ Гуру

    значит, рано ещё объединять. Помигай светодиодом для начала.
     
    Daniil, DetSimen и NikitOS нравится это.
  10. Asper Daffy

    Asper Daffy Иксперд

    И напрасно.

    Пока не поймёшь вот этого, тебе не поможет никто, как тебе там и написали.
     
    b707 нравится это.