资讯详情

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)未设置将一直运行。

(注意蜂鸣器的正负极)

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。

/*测距的原理是让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) 想要被读取的数 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:需要计算的位 位值

标签: arduino单片机电阻正负极

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

锐单商城 - 一站式电子元器件采购平台