锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Arduino笔记(二)

时间:2022-09-10 16:30:00 arduino单片机电阻正负极

## 16.1 analogReference()
配置模拟输入的基准电压(即输入范围的最大值)。选项包括:
DEFAULT:默认5V(Arduino板为5V)或3.3伏特(Arduino板为3.3V)为基准电压。
INTERNAL:在ATmega168和ATmega328上以1.1V以及在基准电压ATmega8上以2.56V为基准电压(Arduino Mega无此选项)
INTERNAL1V1:以1.1V为基准电压(此选项仅针对)Arduino Mega)
INTERNAL2V56:以2.56V为基准电压(此选项仅针对)Arduino Mega)
EXTERNAL:以AREF引脚(0至5V)电压为基准电压。
参数
type:使用哪种参考类型(DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, 或者 EXTERNAL)。
返回

注意事项
改变基准电压后,从analogRead()读取的数据可能不准确。
警告
不要在AREF使用任何不小于0的引脚V或超过5V的外部电压。如果你使用AREF您正在调用引脚上的电压作为基准电压analogRead()参考类型必须考类型EXTERNAL。否则,您将削短有效的基准电压(内部生成)和AREF这可能会损害你Arduino板上的单片机。
此外,您还可以使用外部基准电压和AREF引脚之间连接一个5K在外部和内部基准电压之间切换电阻。请注意,由于总阻值会发生变化,AREF引脚内有32个K电阻。这两个电阻都有分压作用。例如,如果输入2.5V最后,电压在AREF引脚上的电压为2.5 * 32 /(32 5)= 2.2V。

17.1 tone()

描述:

在引脚上产生一个特定频率的方波(占空比50%)。可以设续时间,否则波形会产生直到调用noTone()函数。引脚可连接压电蜂鸣器或其他喇叭播放声音。UNO以及大多数其他常用板,最小频率为31Hz,最大频率为65535Hz,人耳正常听力频率在20-2万赫兹之间。

只能在同一时刻产生一个声音。如果一个引脚已经在播放音乐,请调用它tone()不会有效果。如果音乐在同一个引脚上播放,频率会自动调整。

tone(pin,frequency)
tone(pin,frequency,duration)

可使用两到三个参数
pin为引脚编号,frequency无符号整形表示赫兹(Hz)、duration是单音的持续时间(单位:ms)未设置将一直运行。

实例代码:蜂鸣器20000HZ频率间歇性响起
(注意蜂鸣器的正负极)

void setup() { 
           pinMode(11,OUTPUT); } void loop() { 
           tone(11,2000,1000);   delay(2000); }  

17.2 noTone()

描述:

在引脚上产生特定频率的方波(占空比50%)。tone()方波。如果不使用tone()不会有效果。

17.3 shiftOut()

17.4 shiftIn() 这两个还没看懂再看。

在这里插入图片描述

17.5 pulseIn()

读取引脚脉冲(HIGH或LOW)。假如后面的参数是HIGH,则从HIGH开始计时LOW停止计时可返回引脚HIGH变为LOW的时间。

语法:
pulseIn(pin, value)
pulseIn(pin, value, timeout)
timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒超出这个时间则返回0。
用pulseIn()结合超声波可以达到测距的目的。
实例代码:(1)简单实现超声波测距,输出物体距离,保留两位数。

/*测距的原理是让TrigPin在电平LOW HIGH LOW中循环使组件不断发出超声波, * 超声波反射后被反射EchoPin接收,超声波让EchoPin的电平在HIGH和LOW中变化 * pulseIn会检测EchoPin电平发生变化的时间,结合超声波在空气中传播的速度,利用cm = pulseIn(EchoPin, HIGH) / 58.0; * 该公式计算距离并赋值cm。 */ const int TrigPin = 2; //发出超声波 const int EchoPin = 3; ///收到反射的超声波 float cm; ///测得的距离 void setup(
       
        ) 
        { 
          Serial
        .
        begin
        (
        9600
        )
        ; 
        //设置波特率 
        pinMode
        (TrigPin
        , OUTPUT
        )
        ; 
        pinMode
        (EchoPin
        , INPUT
        )
        ; 
        } 
        void 
        loop
        (
        ) 
        { 
          
        digitalWrite
        (TrigPin
        , LOW
        )
        ; 
        //低高低电平发一个短时间脉冲去TrigPin  
        delayMicroseconds
        (
        2
        )
        ; 
        // delayMicroseconds是微秒延时在更小的时间内延时准确 
        digitalWrite
        (TrigPin
        , HIGH
        )
        ; 
        delayMicroseconds
        (
        10
        )
        ; 
        digitalWrite
        (TrigPin
        , LOW
        )
        ; 
        //通过这里控制超声波的发射 cm 
        = 
        pulseIn
        (EchoPin
        , HIGH
        ) 
        / 
        58.0
        ; 
        //将回波时间换算成cm  cm 
        = 
        (
        int
        (cm 
        * 
        100.0
        )
        ) 
        / 
        100.0
        ; 
        //保留两位小数 这里是100 三位小数则是1000 Serial
        .
        print
        (
        "Distance:"
        )
        ; Serial
        .
        print
        (cm
        )
        ; Serial
        .
        print
        (
        "cm"
        )
        ; Serial
        .
        println
        (
        )
        ; 
        delay
        (
        1000
        )
        ; 
        } 
       

18.1 millis()

描述
返回Arduino
开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。
实例:

unsigned long time;
void setup(){ 
        
 Serial.begin(9600)}
void loop(){ 
        
  serial.print(“Time:);
  time = millis();//打印从程序开始到现在的时间
  serial.println(time);//等待一秒钟,以免发送大量的数据
  delay(1000);
}

18.2 micros()

描述:
返回 从运行当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 Arduino 开发板上(比如 Duemilanove 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 Arduino 开发板上(比如 LilyPad),这个函数的分辨率为八微秒。
注意 :每毫秒是1,000微秒,每秒是1,000,000微秒。

18.4 delayMicroseconds()

描述:
使程序暂停指定的一段时间(单位:微秒)。一秒等于1000000微秒。 目前,能够产生的最大的延时准确值是16383。这可能会在未来的Arduino版本中改变。对于超过几千微秒的延迟,你应该使用delay()代替。

19.1 min()

描述
min(x, y) 计算两个数字中的最小值

19.2 max()

19.3 abs()

描述
计算一个数的绝对值。

19.4 constrain()

描述:
将一个数约束在一个范围内 x=constrain(x, a, b);
参数
x:要被约束的数字,所有的数据类型适用。
a:该范围的最小值,所有的数据类型适用。
b:该范围的最大值,所有的数据类型适用。
(将x的值限制在a b之间)
返回值
x:如果 x是介于 a 和 b之间
a:如果 x小于a
b:如果 x大于b

19.5 map()

map(value, fromLow, fromHigh, toLow, toHigh)
描述
将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。
不限制值的范围,因为范围外的值有时是刻意的和有用的。如果需要限制的范围, constrain() 函数可以用于此函数之前或之后。
注意,两个范围中的“下限”可以比“上限”更大或者更小,因此 map() 函数可以用来翻转数值的范围,例如:
y = map(x, 1, 50, 50, 1);
这个函数同样可以处理负数,请看下面这个例子:
y = map(x, 1, 50, 50, -100);
是有效的并且可以很好的运行。
map() 函数使用整型数进行运算因此不会产生分数,这时运算应该表明它需要这样做。小数的余数部分会被舍去,不会四舍五入或者平均。
参数
value:需要映射的值
fromLow:当前范围值的下限
fromHigh:当前范围值的上限
toLow:目标范围值的下限
toHigh:目标范围值的上限
返回值
被映射的值。

三角函数部分还没看

21.1 randomSeed()

randomSeed(seed)
描述
使用randomSeed()初始化伪随机数生成器。seed可以是固定值,此时产生的随机数是伪随机数,也可以是绝对随机的一个数,此时产生的随机数才是真正的随机数。
参数
long,int - 这个是填在括号里面的数字根据这个数字来产出随机数。

21.2 random()

描述
使用random()函数将生成 伪随机数。
实例:

long randNumber;
void setup(){ 
        
  Serial.begin(9600);
  randomSeed(analogRead(0));
}
void loop(){ 
        
  randNumber = random(100,300);
  Serial.println(randNumber);
  delay(50);
}

语法
random(max)
random(min, max)
参数
min - 随机数的最小值,随机数将包含此值。此参数可选
max - 随机数的最大值,随机数不包含此值.
返回
min和max-1之间的随机数( 数据类型为long )

这下面的还没试验过

22.1 lowByte()

描述 提取一个变量(例如一个字)的低位(最右边)字节。
语法 lowByte(x)
参数 x:任何类型的值
返回 字节

22.2 highByte()

描述提取一个字节的高位(最左边的),或一个更长的字节的第二低位。
语法 highByte(x)
参数 x:任何类型的值
返回 byte

22.3 bitRead()

描述 读取一个数的位。
语法 bitRead(x, n)
参数X: 想要被读取的数 N:被读取的位,0是最低有效位(最右边)
返回 该位的值(0或1)。

22.4 bitWrite()

描述在位上写入数字变量。
语法 bitWrite(x, n, b)
参数
X:要写入的数值变量
N:要写入的数值变量的位,从0开始是最低(最右边)的位
B:写入位的数值(0或1)
返回

22.5 bitSet()

描述 为一个数字变量设置一个位。
语句 bitSet(x, n)
语法
X:想要设置的数字变量
N:想要设置的位,0是最重要(最右边)的位
返回

22.6 bitClear()

描述 清除一个数值型数值的指定位(将此位设置成 0)
语法 bitClear(x, n)
参数
X:指定要清除位的数值 N:指定要清除位的位置,从0开始,0 表示最右端位
返回值

22.7 bit()

描述计算指定位的值(0位是1,1位是2,2位4,以此类推)。
语法 bit(n)
参数 n:需要计算的位
返回值 位值

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章