0b00111100, 0b00011000 }; // Создаём иконку смайлика в двоичной системе BIN const uint8_t smile[] { 0b00111100, 0b01000010, 0b10100101, 0b10000001, 0b10100101, 0b10011001, 0b01000010, 0b00111100 }; void setup() { // Настраиваем пин с потенциометром в режим входа pinMode(POT_PIN, INPUT); // Инициализируем матрицу matrix.begin(); // Очищаем матрицу matrix.clear(); // Устанавливаем ориентацию матрицы на 0 градусов (по умолчанию) matrix.setRotation(ROTATION_0); // Отображаем на матрице лого Амперки matrix.drawBitmap(amperka); } void loop() { // Считываем значение с потенциометра int brightness = readPot(POT_PIN); // Отражаем показания с потенциометра на яркости матрице updateBrightnessMatrix(brightness); } // Функция считывания показаний с потенциометра int readPot(int pin) { // Создаём переменную для хранения // аналогового сигнала с потенциометра в отчётах АЦП int sensorADC = 0; // Создаём переменную для хранения // преобразованных показаний с потенциометра int sensorValue = 0; // Считываем аналоговый сигнал с потенциометра sensorADC = analogRead(pin); // Преобразуем диапазон значений с потенциометра [0;1023] // в диапазон значений для выбора яркости матрицы [0;9] sensorValue = map(sensorADC, 0, 1023, 0, 9); // Возвращаем полученное значение return sensorValue; } // Функция обновления яркости матрицы void updateBrightnessMatrix(int value) { switch (value) { case 0: matrix.setCurrentLimit(ROW_CURRENT_05MA); break; case 1: matrix.setCurrentLimit(ROW_CURRENT_10MA); break; case 2: matrix.setCurrentLimit(ROW_CURRENT_15MA); break; case 3: matrix.setCurrentLimit(ROW_CURRENT_20MA); break; case 4: matrix.setCurrentLimit(ROW_CURRENT_25MA); break; case 5: matrix.setCurrentLimit(ROW_CURRENT_30MA); break; case 6: matrix.setCurrentLimit(ROW_CURRENT_35MA); break; case 7: matrix.setCurrentLimit(ROW_CURRENT_40MA); break; case 8: matrix.setCurrentLimit(ROW_CURRENT_45MA); break; case 9: matrix.setCurrentLimit(ROW_CURRENT_50MA); break; } }