Визуализатор спектра

Тема в разделе "Arduino & Shields", создана пользователем rbibokon, 23 май 2017.

  1. mcureenab

    mcureenab Гуру

    Создание вкладок
     

    Вложения:

  2. rbibokon

    rbibokon Нерд

    а как их загружать на ардуинку? по одному файлу? или как? я просто еще не сталкивался с таким
     
  3. rbibokon

    rbibokon Нерд

    че то у меня проблемы с добавлением дамп0 в 1 файл, куда его там надо добавить?
     
  4. mcureenab

    mcureenab Гуру

    Загрузить скетч как обычно. Arduino IDE сама соберет все файлы.
     
  5. mcureenab

    mcureenab Гуру

    Создать скетч Dump_A0.
    Во вкладке Dump_A0 всё стереть ( и setup и loop )
    Скопировать текст Dump_A0 во вкладку Dump_A0.
    Создать вкладку File_1 скопировать текст File_1 во вкладку.
    И т.д. с остальными файлами.

    Проверить
    Загрузить
     
  6. dborcov

    dborcov Нуб

    Привет. Помогите с решением. Хочу реализовать графическое отображение положения бегунка переменного резистора на дисплее lcd1602 в виде одной строки заполненной курсорами (прямоугольниками) в зависимости от положения резистора.
     
  7. mcureenab

    mcureenab Гуру

    С подключением удалось разобраться?
    Напиши, что куда подключено.
     
  8. mcureenab

    mcureenab Гуру

    Принцип такой.
    В символьном буфере формируем строку из нужного количества заполняющих символов и остаток заполняем пробелами.
    Ставим курсор в начало первой или второй строки и отправляем буфер на экранчик.
     
  9. rbibokon

    rbibokon Нерд

    Ок буду завтра пробывать. если что напишу
     
  10. rbibokon

    rbibokon Нерд

    А можно ещё комментарии в скетчи вставить, более подробно какая строка за что отвечает, а то я чувствую сам не разберусь, да и препод докапается а я не буду знать что ответить, заранее спасибо
     
  11. mcureenab

    mcureenab Гуру

    Код (C++):
    // File_2
    // https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf
    // Управление светодиодной матрицей 8x8 с драйвером MAX7219

    // Номера пинов к которым подключен драйвер должны быть определены в начале скетча
    // например
    // #define dataPin 10
    // #define csPin 9
    // #define clockPin 8

    // Настройка в setup
    // пример
    //    pinMode(dataPin, OUTPUT);
    //    pinMode(clockPin, OUTPUT);
    //    pinMode(csPin, OUTPUT);
    //    mtxWrite(0xB, 0x7); // задействуем все 8 линий матрицы
    //    mtxWrite(0xC, 0x1); // включили драйвер Table 3. Shutdown Register Format (Address (Hex) = 0xC)
    // проверка матрицы. на 1000мс включаем все диоды и выключаем
    //    mtxWrite(0xF, 0x1); // Table 10. Display-Test Register Format (Address (Hex) = 0xF)
    //    delay(1000);
    //    mtxWrite(0xF, 0x0);// Table 10. Display-Test Register Format (Address (Hex) = 0xF)

    // Включение/выключение светодиодов в линии матрицы
    // mtxWrite(1, 0b10101010); // линия 1 (нумерация с 1 до 8) , сетодиды включены через 1.

    void mtxWrite( // передает данные в регистр драйвера светодиодной матрицы
      uint8_t reg, // Регистр по таблице Table 2. Register Address Map. Колонка HEX CODE
      uint8_t data // Значение регистра DATA ( D7 D6 D5 D4 D3 D2 D1 D0 )
    )
    {
       digitalWrite(csPin, LOW);                    // чтобы сделать HIGH нужно сделать LOW
       shiftOut(dataPin, clockPin, MSBFIRST, reg);  // передача 16 бит в буфер драйвера
       shiftOut(dataPin, clockPin, MSBFIRST, data);
       digitalWrite(csPin, HIGH);                   // драйвер применяет данные
    }
     
    тут не много и не сложно. вопросы?
     
  12. mcureenab

    mcureenab Гуру

    тут сложнее. Надо главу из даташита вкурить.
    enum'ы по таблицам сделаны.
    манипуляции с регистрами оформлены в функции. почти все параметры ADC это числа из одного и более битов в одном регистре. Только для выбора аналогового канала в функции analog_channel нужно трогать два регистра: ADMUX и ADCSRB.

    // File_1
    // http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
    // 24. Analog to Digital Converter - ADC