在本Arduino基础中,我们试图理解代码实现过程,其中外部模拟信号馈送到Arduino模拟输入,并翻译或转换成相应比例的数字读数。在这里,我们采用了一个可变电阻的壶的形式作为模拟信号源。
模拟阅读系列
在这个例子中,我们学习了从外部设备(如电位器)读取模拟输入的方法。电位器是一种机电设备,通过手动操作实现电路中的可变电阻。
Arduino可以用来测量电位器输出电压的大小,从而读取和识别相应变化的电阻。这可以通过将电压作为模拟值馈送到Arduino模拟输入端口来实现。
在这里,我们将看到在通过Arduino和连接的计算机建立串行通信之后,如何执行上述操作。
硬件要求
Arduino电路板
10-kilohm电位计
电路操作
如上图所示,将从锅中伸出的三根电线连接到Arduino端口上。
来自锅的一个外部引线的电线与地线或板的负线分配。
另一个自由的极外端引线与板的+5V连接。
剩下的是这个锅的中心引线,它连接到Arduino板的模拟输入。
当锅轴旋转时,通过中心引线和外部终端的阻力从高到低,反之亦然,这取决于滑块臂靠近哪一侧。
例如,当滑块手臂旋转到+5V引线时,中心引线更接近5V,当它接触到5V指定引线时,趋于获得整个值。同样地,当滑块轴向地槽引线移动时,中心引线趋向于达到零电位。
上述线性变化的供电电压通过arduino模拟输入读取锅的中心引线,将其解释为相应变化的锅的电阻。
Arduino内部包含一个模数转换器电路,可以有效地解释上述槽的移动,并将其转换为0到1023之间的数字。
壶轴上的特定位置导致Arduino翻译0和1023之间的比例数字,对于5V和0伏的终值,解释明显是0和1023。

在上述程序中,只需要触发设置函数来启动串行通信,速率为每秒9600位数据,通过Arduino板和计算机。
所期望的命令如下所示:
Serial.begin (9600);
随后,在你的代码的主循环中,我们强制一个变量,以固定从pot leads接收到的电阻值(它将在0到1023之间讨论,刚好适合int数据类型):
int sensorValue = analogRead(A0);
最后,将该信息作为十进制(DEC)值打印到串行窗口。你可以在最后一行代码中使用命令Serial.println()来实现这个:
系列。println (sensorValue 12月)
在此之后,每当在Arduino开发域中启动Serial Monitor时(这是通过单击程序头部的“上传”按钮右侧立即完成的按钮)。
我们会看到从0到1023的数字链一致,对应于壶轴变化的旋转位置。
如果我们在某一时刻停止锅轴的旋转,Arduino的屏幕上会显示出相应的瞬时数,这也会随着我们继续改变锅轴的位置而发生成比例的变化。
的代码
/*
AnalogReadSerial
读取引脚0上的模拟输入,将结果打印到串行监视器。
将电位计的中心引脚连接到引脚A0,外部引脚连接到+5V和地。
此示例代码位于公共域中。
*/
//当你按下reset键时,setup例程运行一次:
无效的设置(){
//初始化串行通信速度为每秒9600位:
Serial.begin (9600);
}
//循环例程一遍又一遍地运行:
无效循环(){
//读取模拟引脚0的输入:
int sensorValue = analogRead(A0);
//输出读取的值:
以sensorValue);
延迟(1);//读取之间的延迟是为了稳定
}
你可以尝试一个手机振动电机,并连接螺旋桨到它,并使用它作为一个迷你风车与你的电路。
振动器无法触发振荡器
你说你的升压转换器可以升压0.3V,我认为在最佳转速下,振动器可以很容易地产生超过0.3V的电压。