迷你强 发表于 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默认是高电平,还是低电平?
页: 1 2 [3] 4 5 6 7
查看完整版本: Arduino入门教程--第九课--用Arduino做0-5V量程的电压表