在FireBeetle Board-ESP32的内部,配置有12 位的模数转换器,其最大输出值为4095,而 Arduino UNO 的ADC只有10 位,最大输出值为1023。因此,在精度上它比普通的 UNO 要高,且转换速率要快,并可用Arduino analogRead 函数来直接读取。 ADC的数据采集程序如图1所示, 图1 ADC数据采集 实现数据采集的电路连接如图2所示,是通过电位调节模块来提供采集的模拟信号,并连接到模拟量输入口A0。 图2 电路连接 经程序的编译和上传,其借助串口监视器的输出结果如图3所示。 图3 数据采集结果 此外,我们还可以为它配上数码管显示,并实现检测值与电压值的同步显示,其效果如图4所示。 显示数码管双值显示的主要程序如下: void setup() { pinMode(LED_PIN, OUTPUT); pinMode(CS,OUTPUT); pinMode(CLK,OUTPUT); pinMode(DIN,OUTPUT); delay(50); Init_MAX7219(); delay(200); Write_Max7219(0xff,0x00); } void loop() { int v,d; float s; v=analogRead(A0); Write_Max7219(1,v%10); if(v>10) Write_Max7219(2,v%100/10); else Write_Max7219(2,0x0f); if(v>100) Write_Max7219(3,v%1000/100); else Write_Max7219(3,0x0f); if(v>1000) Write_Max7219(4,v/1000); else Write_Max7219(4,0x0f); s=v*3.3/409.5; d=s; Write_Max7219(5,0x0f); Write_Max7219(6,d%10); Write_Max7219(7,(d%100/10)|0x80);//(v%100/10)&&0x80 Write_Max7219(8,0x0f); digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } 图4 双值显示
|