rockze rockze
关注数: 28 粉丝数: 135 发帖数: 2,660 关注贴吧数: 41
做了个电脑状态显示工具,分享一下。 手上还有一些以前买来的配件,就做点东西玩玩吧。一个arduino开发板,一块lcd 1602的显示屏,一些数据线,就这么多东西了,开工! 首先测试了aida64这个软件可以发送系统的状态数据到串口。 试了好几个显示屏,找到一个比较适合读取数据的:然后分析了数据规则,写个代码让arduino开发板接收这些数据,并显示到lcd 1602显示屏上,就这么简单就完成了. 代码修改了好几次,功能实现了,又想优化成简单点,又想提高效率....... //LCD1602 I2C配置 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { Serial.begin(9600); //打开串口 lcd.init(); lcd.begin(16, 2); lcd.backlight(); lcd.print(" Hello world "); delay(3000); lcd.clear(); lcd.print("CPU: TMP: "); lcd.setCursor(0, 1); //换行 lcd.print("MEM: GPU: "); } void loop() { if (Serial.available()) { char val = Serial.read(); if ( (val == 0x48) ) { delay(2); for (int i=0; i<76;i++) { if (Serial.available()) { val = Serial.read(); //Serial.println(val,HEX); if (i == 0) { lcd.setCursor(4,0); lcd.write(val);}else if (i == 1) { lcd.setCursor(5,0); lcd.write(val);}else if (i == 2) { lcd.setCursor(6,0); lcd.write(val);}else if (i == 20) { lcd.setCursor(12,0); lcd.write(val);}else if (i == 21) { lcd.setCursor(13,0); lcd.write(val);}else if (i == 22) { lcd.setCursor(14,0); lcd.write(val);}else if (i == 40) { lcd.setCursor(4,1); lcd.write(val);}else if (i == 41) { lcd.setCursor(5,1); lcd.write(val);}else if (i == 42) { lcd.setCursor(6,1); lcd.write(val);}else if (i == 60) { lcd.setCursor(12,1); lcd.write(val);}else if (i == 61) { lcd.setCursor(13,1); lcd.write(val);}else if (i == 62) { lcd.setCursor(14,1); lcd.write(val);}else {delay(2);} } } } } } 打印一个外壳,完工。这东西能把电脑当前的各种数据发送到显示屏上,例如CPU使用率,温度,内存,风扇速度,GPU各种数据,显存之类。
1 下一页