MAX7219怎么实时调整亮度?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7985|回复: 11

[未解决] MAX7219怎么实时调整亮度?

[复制链接]
发表于 2018-3-12 22:16 | 显示全部楼层 |阅读模式
本帖最后由 PUA 于 2018-3-12 22:20 编辑

我想用Arduino,GPS,max7219制作一个车用HUD显示,但有个问题解决不了。

无法实时调整MAX7219亮度,有没有大神指导一下,谢谢!

还是MAX7219只能开机调整1次?


#include <LedControl.h>
byte algarism[11][5] = {B0111110, B1000001, B1000001, B1000001, B0111110, // 0
                        B0000000, B0000001, B1111111, B0100001, B0000000, // 1
                        B0110001, B1001001, B1000101, B1000011, B0100001, // 2
                        B0110110, B1001001, B1001001, B1000001, B0100010, // 3
                        B0000100, B1111111, B0100100, B0010100, B0001100, // 4
                        B1001110, B1010001, B1010001, B1010001, B1110010, // 5
                        B0100110, B1001001, B1001001, B1001001, B0111110, // 6
                        B1100000, B1010000, B1001111, B1000000, B1000000, // 7
                        B0110110, B1001001, B1001001, B1001001, B0110110, // 8
                        B0111110, B1001001, B1001001, B1001001, B0110010, // 9
                        B0000000, B0000000, B0000000, B0000000, B0000000
                       };//空
LedControl mx = LedControl(5, 7, 6, 2); //DIN、CLK、CS、数量
int val = 0;
int i = 0;
int y = 0;
void mxConfig(void) {
  int devices = mx.getDeviceCount(); //查询连接MAX7219设备数量
  for (int matrix = 0; matrix < devices; matrix++) {
    mx.shutdown(matrix, false);      
    mx.setIntensity(matrix, y);         //设置MAX7219亮度
    mx.clearDisplay(matrix);            //清屏MAX7219
  }
}
void writeNumber(byte pos, byte number) {
  switch (pos) {
    case 1:
      mx.setColumn(1, 0, algarism[number][0]);
      mx.setColumn(1, 1, algarism[number][1]);
      mx.setColumn(1, 2, algarism[number][2]);
      mx.setColumn(1, 3, algarism[number][3]);
      mx.setColumn(1, 4, algarism[number][4]);
      break;
    case 2:
      mx.setColumn(1, 6, algarism[number][0]);
      mx.setColumn(1, 7, algarism[number][1]);
      mx.setColumn(0, 0, algarism[number][2]);
      mx.setColumn(0, 1, algarism[number][3]);
      mx.setColumn(0, 2, algarism[number][4]);
      break;
    case 3:
      mx.setColumn(0, 5, algarism[number][1]);
      mx.setColumn(0, 6, algarism[number][2]);
      mx.setColumn(0, 7, algarism[number][3]);
      break;
  }
}
void displayTemp(void) {
  //int i = random(0, 200);
  writeNumber(1, (i % 10));
  if ( i / 100 % 10 == 0 && i / 10 % 10 == 0) {
    writeNumber(2, 10);
  }
  else
  {
    writeNumber(2, (i / 10 % 10));
  }
  if (i / 100 % 10 == 1) {
    writeNumber(3, (i / 100 % 10));
  }
  else
  {
    writeNumber(3, 10);
  }
}
void setup() {
  Serial.begin(9600);
  mxConfig();
}
void loop() {
  displayTemp();
  val = analogRead(A0);
  i = map(val, 0, 1023, 0, 199);
  y = map(val, 0, 1023, 0, 15);
  Serial.println(val, DEC);
  delay(100);
}

发表于 2018-3-13 14:26 | 显示全部楼层

回帖奖励 +5 金币

虽然我不知道,但我要为了金币而奋斗
发表于 2018-3-13 15:35 | 显示全部楼层

回帖奖励 +5 金币

直接调用  setIntensity  不行吗?
 楼主| 发表于 2018-3-13 21:28 | 显示全部楼层
本帖最后由 PUA 于 2018-3-13 21:38 编辑
xvipservice 发表于 2018-3-13 15:35
直接调用  setIntensity  不行吗?

试过了不行,亮度没有变化!开机什么亮度一直是什么亮度,中途修改亮度无效!
 楼主| 发表于 2018-3-13 21:38 | 显示全部楼层
z2010012286 发表于 2018-3-13 14:26
虽然我不知道,但我要为了金币而奋斗

这样不好吧?
发表于 2018-3-14 20:32 | 显示全部楼层

回帖奖励 +5 金币

m.setIntensity(8);  // 設定亮度
用這一個指令
括號中的數字越小亮度越暗
抱歉我是繁體字
 楼主| 发表于 2018-3-15 17:47 | 显示全部楼层
易智洋 发表于 2018-3-14 20:32
m.setIntensity(8);  // 設定亮度
用這一個指令
括號中的數字越小亮度越暗

运行中更改亮度不会变化呀!我是想亮度实时变化
发表于 2019-2-18 07:11 来自手机 | 显示全部楼层
我用这个库https://github.com/agr00m/LedMatrixSPI
发表于 2020-4-17 09:30 | 显示全部楼层
本帖最后由 jjbboox 于 2020-4-17 09:32 编辑

没用过,我还是不发表意见了。
发表于 2021-11-6 19:24 | 显示全部楼层
我也是新手,在找7219带动数码管的教程,好还没找到
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:29 , Processed in 0.128114 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表