迷你强
发表于 2013-2-19 16:30:42
computerboyk 发表于 2013-2-7 19:28 static/image/common/back.gif
我想问下并联1k欧的电阻,是一定是用1k欧么?还是220的也可以?电路知识不太好,麻烦解释一下
这个1k欧的作 ...
下拉电阻一般取值1k-10k
<一一巛
发表于 2013-3-4 14:06:32
本帖最后由 <一一巛 于 2013-3-5 10:16 编辑
交作业:$
float temp; //创建一个浮点型变量temp作为存储空间准备存放数据
void setup()
{
Serial.begin(9600); //使用9600的波特率进行串口通讯
}
void loop()
{
float vol = analogRead(A4)*5/1023.0;
if (vol != temp)
{
Serial.print(vol); //串口输出电压值,并且不换行
Serial.println(" V"); //串口输出字符V,并且换行
delay(1000); //输出完成后等待1秒钟,用于控制数据的刷新速度。
}
temp = vol;
}
玄冰之神
发表于 2013-4-15 13:48:27
:P学习 嘿嘿..好东西
孤独舰
发表于 2013-5-9 21:27:38
如何使结果更精确,我定义了float a=1.234;Serial.print(a);但结果显示1.23,这是为什么?:(
迷你强
发表于 2013-5-10 09:44:34
孤独舰 发表于 2013-5-9 21:27 static/image/common/back.gif
如何使结果更精确,我定义了float a=1.234;Serial.print(a);但结果显示1.23,这是为什么?
默认两位小数
Serial.print(a,4);
就能显示4位小数了
孤独舰
发表于 2013-5-10 16:59:09
原理如此,哈哈十分感谢!:)
hdragon627
发表于 2013-5-24 19:32:44
本帖最后由 hdragon627 于 2013-5-24 22:14 编辑
交作业嘻嘻,我补充个用外部基准的方法
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //用的是转成i2c的lcd1602
float temp = 5.5; //赋个值,analog口都加了10k下拉电阻,防止lcd不显示
void setup()
{
lcd.init();
lcd.backlight();
}
void loop()
{
int vf = analogRead(A0); //连接外部基准
int va = analogRead(A3);
float volf = vf*(4.6 / 1023.0); //4.6是用万用表测的电源电压,不影响计算被测电压,只是显示当前基准电压
float vola = va*(2.56 / vf); //2.56就是外部基准的标定的电压,影响计算
if (vola == temp)
{
;
}
else
{
lcd.clear();
lcd.print("vf=");
lcd.print(volf, 3);
lcd.print(" rf=2.56");
lcd.setCursor(0, 1);
lcd.print("v=");
lcd.print(vola, 3);
lcd.print("V");
temp = vola;
delay(300);
}
}
hdragon627
发表于 2013-5-24 20:28:33
不过有个问题就是 uno的 analog只有6个,一个基准用,二个给i2c占用了,只剩下三个analog通道
chaoser
发表于 2013-8-9 21:22:55
本帖最后由 chaoser 于 2013-8-9 21:44 编辑
大家都喜欢交作业,我也来,嘻嘻。
烦恼于极其微小的波动也会输出,导致监控窗口上一大列“0.00 V”,所以增加了一个判断,可以自行调节变化幅度。
此外,加了个小东西,可以直观看到波动变化哦,光看数字多枯燥:
/* 程序功能:使用arduino模拟口测量电压,作为0~5V电压表 */
float vSave=9.99;
void setup() {Serial.begin(9600);} // 使用9600的波特率进行串口通讯
void loop() {
float vReal= analogRead(A0)*5.0/1023.0;//从A0口读取电压值,并换算成实际电压值
if (abs(vReal-vSave)<=0.01) return; // 仅当电压值发生变化较大时才输出
Serial.print(vReal,4); // 串口输出电压值,不换行
Serial.print(" V "); // 输出单位符号V,换行
float n=vReal*100.0;
while (n>=2.0) {
Serial.print("*");
n=n-2.0;
}
Serial.println("*");
delay(1000); // 每秒测量一次
vSave=vReal; // 保存当前值,以便与下次比较
}
hick
发表于 2013-8-18 18:10:12
chaoser 发表于 2013-8-9 21:22 static/image/common/back.gif
大家都喜欢交作业,我也来,嘻嘻。
烦恼于极其微小的波动也会输出,导致监控窗口上一大列“0.00 V”,所 ...
very good ! 哈哈哈, 新手测试成功
hick
发表于 2013-8-18 18:23:00
实验是成功了,不过整体感觉几个实验下来,原理性的东西收获不是很多哈。有几个疑问:
1. 为啥不推荐锂电池等? 貌似很多锂电池电压不高哈? 是因为有些电压稍微高于 5V 还是什么别的原因?
2. 以我高中学的知识理解,象是个并流电路,1k欧的线路和板子的线路并联? 这时候板子的电阻多大哦?有嗲理解不上去了,板子本身也接入了电源了,这种双电源供电似的... 没学过。
这里倒不涉及电压电流电阻公式来换算。 以我的理解是不是可以再串联几个 1K 欧姆的电阻,然后就可以根据公式换算,以便测量更高的电压了?
hick
发表于 2013-8-18 18:23:42
hick 发表于 2013-8-18 18:23 static/image/common/back.gif
实验是成功了,不过整体感觉几个实验下来,原理性的东西收获不是很多哈。有几个疑问:
1. 为啥不推荐锂电 ...
现在不把握,没人指导的话等我玩差不多了再冒险实验,黑恶hi
will_lion
发表于 2013-9-25 15:02:01
弘毅 发表于 2012-10-31 07:57 static/image/common/back.gif
每个人的底子不同,水平不同。
开源、分享本身就是朝着分享更多、收获更多的目标走,玩Arduino的人本身 ...
小白来了。。。 就这句不明白。。
if (vol == temp)
{
temp = vol;
}
temp不是空的吗?怎么比较?
zhaopengxslc
发表于 2013-10-13 20:27:19
实验成功感谢楼主教程
桐人
发表于 2013-10-15 16:30:54
为什么不使用PinMode(A0,INPUT);是它默认为输入吗?还有arduino默认是高电平,还是低电平?