分享
分销 收藏 举报 申诉 / 62
播放页_导航下方通栏广告

类型Arduino语法手册函数部分.doc

  • 上传人:天****
  • 文档编号:3552245
  • 上传时间:2024-07-09
  • 格式:DOC
  • 页数:62
  • 大小:149.04KB
  • 下载积分:14 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Arduino 语法 手册 函数 部分
    资源描述:
    Arduino 语法手册函数部分 摘自::arduino_language_reference 函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) 参数 pin:要设立模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 // LED连接到数字脚13   void setup() { pinMode(ledPin,OUTPUT); //设立数字脚为输出 }   void loop() { digitalWrite(ledPin,HIGH); //点亮LED delay(1000); // 等待一秒 digitalWrite(ledPin, LOW); // 灭掉LED 延迟(1000); //等待第二个 } 注意 模拟输入脚也能当做数字脚使用,参与A0,A1,等 digitalWrite() 描述 给一个数字引脚写入HIGH或者LOW。 假如一个引脚已经使用pinMode()配置为OUTPUT模式,其电压将被设立为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。 假如引脚配置为INPUT模式,使用digitalWrite()写入HIGH值,将使内部20K上拉电阻(详见数字引脚教程)。写入LOW将会禁用上拉。上拉电阻可以点亮一个LED让其微微亮,假如LED工作,但是亮度很低,也许是由于这个因素引起的。补救的办法是 使用pinMode()函数设立为输出引脚。 注意:数字13号引脚难以作为数字输入使用,由于大部分的控制板上使用了一颗LED与一个电阻连接到他。假如启动了内部的20K上拉电阻,他的电压将在1.7V左右,而不是正常的5V,由于板载LED串联的电阻把他使他降了下来,这意味着他返回的值总是LOW。假如必须使用数字13号引脚的输入模式,需要使用外部上拉下拉电阻。 语法 digitalWrite(pin, value) 参数 pin: 引脚编号(如1,5,10,A0,A3) value: HIGH or LOW 返回 无 例子 int ledPin = 13; // LED连接到数字13号端口   void setup() { pinMode(ledPin, OUTPUT); // 设立数字端口为输入模式 }   void loop() { digitalWrite(ledPin, HIGH); // 使LED亮 delay(1000); // 延迟一秒 digitalWrite(ledPin, LOW); // 使LED灭 delay(1000); // 延迟一秒 } 13号端口设立为高电平,延迟一秒,然后设立为低电平。 注释 模拟引脚也可以当做数字引脚使用,使用方法是输入端口A0,A1,A2等。 digitalRead() 描述 读取指定引脚的值,HIGH或LOW。 语法 digitalRead(PIN) 参数 pin:你想读取的引脚号(int) 返回 HIGH 或 LOW 例子 ledPin = 13 // LED连接到13脚 int inPin = 7; // 按钮连接到数字引脚7 int val = 0; //定义变量以存储读值   void setup() { pinMode(ledPin, OUTPUT); // 将13脚设立为输出 pinMode(inPin, INPUT); // 将7脚设立为输入 }   void loop() { val = digitalRead(inPin); // 读取输入脚 digitalWrite(ledPin, val); //将LED值设立为按钮的值 } 将13脚设立为输入脚7脚的值。 注意 假如引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。 模拟输入脚能当做数字脚使用,参见A0,A1等。 模拟 I/O 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)。 返回 无 注意事项 改变基准电压后,之前从anal​​ogRead()读取的数据也许不准确。 警告 不要在AREF引脚上使用使用任何小于0V或超过5V的外部电压。假如你使用AREF引脚上的电压作为基准电压,你在调用analogRead()前必须设立参考类型为EXTERNAL。否则,你将会削短有效的基准电压(内部产生)和AREF引脚,这也许会损坏您Arduino板上的单片机。 此外,您可以在外部基准电压和AREF引脚之间连接一个5K电阻,使你可以在外部和内部基准电压之间切换。请注意,总阻值将会发生改变,由于AREF引脚内部有一个32K电阻。这两个电阻都有分压作用。所以,例如,假如输入2.5V的电压,最终在在AREF引脚上的电压将为2.5 * 32 /(32 + 5)= 2.2V。 analogRead() 描述 从指定的模拟引脚读取数据值。 Arduino板包含一个6通道(Mini和Nano有8个通道,Mega有16个通道),10位模拟数字转换器。这意味着它将0至5伏特之间的输入电压映射到0至1023之间的整数值。这将产生读数之间的关系:5伏特/ 1024单位,或0.0049伏特(4.9 mV)每单位。输入范围和精度可以使用analogReference()改变。它需要大约100微秒(0.0001)来读取模拟输入,所以最大的阅读速度是每秒10000次。 语法 analogRead(PIN) 数值的读取 引脚:从输入引脚(大部分板子从0到5,Mini和Nano从0到7,Mega从0到15)读取数值 返回 从0到1023的整数值 注意事项 假如模拟输入引脚没有连入电路,由analogRead()返回的值将根据多项因素(例如其他模拟输入引脚,你的手靠近板子等)产生波动。例子 int analogPin = 3; //电位器(中间的引脚)连接到模拟输入引脚3 //此外两个引脚分别接地和+5 V int val = 0; //定义变量来存储读取的数值   void setup()   { serial.begin(9600); //设立波特率(9600) }   void loop() { val = analogRead(analogPin); //从输入引脚读取数值 serial.println(val); //显示读取的数值 } 返回主菜单 analogWrite() - PWM 描述 从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。 在大多数arduino板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能。在aduino Mega上,引脚2到13可以实现该功能。老的Arduino板(ATmega8)的只有引脚9、10、11可以使用analogWrite()。在使用analogWrite()前,你不需要调用pinMode()来设立引脚为输出引脚。 analogWrite函数与模拟引脚、analogRead函数没有直接关系。 语法 analogWrite(pin,value) 参数 pin:用于输入数值的引脚。 value:占空比:0(完全关闭)到255(完全打开)之间。 返回 无 说明和已知问题 引脚5和6的PWM输出将高于预期的占空比(输出的数值偏高)。这是由于millis()和delay()功能,和PWM输出共享相同的内部定期器。这将导致大多时候处在低占空比状态(如:0 - 10),并也许导致在数值为0时,没有完全关闭引脚5和6。 例子 通过读取电位器的阻值控制LED的亮度 int ledPin = 9; // LED连接到数字引脚9 int analogPin = 3; //电位器连接到模拟引脚3 int val = 0; //定义变量存以储读值   void setup()   { pinMode(ledPin,OUTPUT); //设立引脚为输出引脚 }   void loop() { val = analogRead(analogPin); //从输入引脚读取数值 analogWrite(ledPin,val / 4); // 以val / 4的数值点亮LED(由于analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255) } 高级 I/O tone() tone() 描述 在一个引脚上产生一个特定频率的方波(50%占空比)。连续时间可以设定,否则波形会一直产生直到调用noTone()函数。该引脚可以连接压电蜂鸣器或其他喇叭播放声音。 在同一时刻只能产生一个声音。假如一个引脚已经在播放音乐,那调用tone()将不会有任何效果。假如音乐在同一个引脚上播放,它会自动调整频率。 使用tone()函数会与3脚和11脚的PWM产生干扰(Mega板除外)。 注意:假如你要在多个引脚上产生不同的音调,你要在对下一个引脚使用tone()函数前对此引脚调用noTone()函数。 语法 tone(pin, frequency) tone(pin, frequency, duration) 参数 pin:要产生声音的引脚 frequency: 产生声音的频率,单位Hz,类型unsigned int duration:声音连续的时间,单位毫秒(可选),类型unsigned long 返回 无 noTone() 描述 停止由tone()产生的方波。假如没有使用tone()将不会有效果。 注意:假如你想在多个引脚上产生不同的声音,你要在对下个引脚使用tone()前对刚才的引脚调用noTone(). 语法 noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:假如你所连接的设备时钟类型为上升沿,你要拟定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 读取一个引脚的脉冲(HIGH或LOW)。例如,假如value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。假如在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时也许会犯错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数 pin:你要进行脉冲计时的引脚号(int)。 value:要读取的脉冲类型,HIGH或LOW(int)。 timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long) 返回 脉冲长度(微秒),假如等待超时返回0(unsigned long) 例子 int pin = 7; unsigned long duration;   void setup() { pinMode(pin, INPUT); }   void loop() { duration = pulseIn(pin, HIGH);; } 时间 millis() 描述 返回Arduino开发板从运营当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。 参数 无 返回 返回从运营当前程序开始的毫秒数(无符号长整数)。 例子 unsigned long time;   void setup(){ Serial.begin(9600); } void loop(){ serial.print("Time:"); time = millis(); //打印从程序开始到现在的时间 serial.println(time); //等待一秒钟,以免发送大量的数据 delay(1000); } 提醒 注意,参数 millis 是一个无符号长整数,试图和其他数据类型(如整型数)做数学运算也许会产生错误。 当中断函数发生时,millis()的数值将不会继续变化。 micros() micros() 描述 返回 Arduino 开发板从运营当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 Arduino 开发板上(比如 Duemilanove 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 Arduino 开发板上(比如 LilyPad),这个函数的分辨率为八微秒。 注意 :每毫秒是1,000微秒,每秒是1,000,000微秒。 参数 无 返回 返回从运营当前程序开始的微秒数(无符号长整数)。 例子 unsigned long time;   void setup(){ Serial.begin(9600); } void loop(){ Serial.print(“Time:”); time = micros(); //打印从程序开始的时间 Serial.println(time); //等待一秒钟,以免发送大量的数据 delay(1000); } delay() 描述 使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒) 语法 delay(ms) 参数 ms:暂停的毫秒数(unsigned long) 返回 无 例子 ledPin = 13 / / LED连接到数字13脚   void setup() { pinMode(ledPin, OUTPUT); // 设立引脚为输出 }   void loop() { digitalWrite(ledPin, HIGH); // 点亮LED delay(1000); // 等待1秒 digitalWrite(ledPin, LOW); // 灭掉LED delay(1000); // 等待一秒 } 警告 虽然创建一个使用delay()的闪烁LED很简朴,并且许多例子将很短的delay用于消除开关抖动,delay()的确拥有很多显著的缺陷。在delay函数使用的过程中,读取传感器值、计算、引脚操作均无法执行,因此,它所带来的后果就是使其他大多数活动暂停。其他操作定期的方法请参与millis()函数和它下面的例子。大多数纯熟的程序员通常避免超过10毫秒的delay(),除非arduino程序非常简朴。 但某些操作在delay()执行时任然可以运营,由于delay函数不会使中断失效。通信端口RX接受到得数据会被记录,PWM(analogWrite)值和引脚状态会保持,中断也会按设定的执行。 delayMicroseconds() 描述 使程序暂停指定的一段时间(单位:微秒)。一秒等于1000000微秒。目前,可以产生的最大的延时准确值是16383。这也许会在未来的Arduino版本中改变。对于超过几千微秒的延迟,你应当使用delay()代替。 语法 delayMicroseconds(us) 参数 us:暂停的时间,单位微秒(unsigned int) 返回 无 例子 int outPin = 8; // digital pin 8   void setup() { pinMode(outPin,OUTPUT); //设立为输出的数字管脚 }   void loop() { digitalWrite(outPin,HIGH); //设立引脚高电平 delayMicroseconds(50); // 暂停50微秒 digitalWrite(outPin, LOW); // 设立引脚低电平 delayMicroseconds(50); // 暂停50微秒 } 将8号引脚配置为输出脚。它会发出一系列周期100微秒的方波。 警告和已知问题 此函数在3微秒以上工作的非常准确。我们不能保证,delayMicroseconds在更小的时间内延时准确。 Arduino0018版本后,delayMicroseconds()不再会使中断失效。 数学运算 min() min(x, y) 描述 计算两个数字中的最小值。 参数 X:第一个数字,任何数据类型 Y:第二个数字,任何数据类型 返回 两个数字中的较小者。 举例 sensVal = min(sensVal,100); //将 sensVal 或 100 中较小者赋值给 sensVal //保证它永远不会大于 100。 注释 直观的比较,max() 方法常被用来约束变量的下限,而 min() 常被用来约束变量的上限。 警告 由于 min() 函数的实现方式,应避免在括号内出现其他函数,这将导致不对的的结果。 min(a++, 100); //避免这种情况 - 会产生不对的的结果 a++; min(a, 100); //使用这种形式替代 - 将其他数学运算放在函数之外 max() max(x,y) 描述 计算两个数的最大值。 参数 X:第一个数字,任何数据类型 Y:第二个数字,任何数据类型 返回 两个参数中较大的一个。 例子 sensVal = max(senVal, 20); // 将20或更大值赋给sensVal //(有效保障它的值至少为20) 注意 和直观相反,max()通常用来约束变量最小值,而min()通常用来约束变量的最大值。 警告 由于max()函数的实现方法,要避免在括号内嵌套其他函数,这也许会导致不对的的结果。 max(a--, 0); //避免此用法,这会导致不对的结果   a--; // 用此方法代替 max(a, 0); // 将其他计算放在函数外 abs() 描述 计算一个数的绝对值。 参数 X:一个数 返回 假如x大于或等于0,则返回它自身。假如x小于0,则返回它的相反数。 警告 由于实现ABS()函数的方法,避免在括号内使用任何函数(括号内只能是数字),否则将导致不对的的结果。 ABS(a+ +); //避免这种情况,否则它将产生不对的的结果 a + +; //使用这段代码代替上述的错误代码 ABS(a); //保证其他函数放在括号的外部 constrain() 描述 将一个数约束在一个范围内 参数 x:要被约束的数字,所有的数据类型合用。 a:该范围的最小值,所有的数据类型合用。 b:该范围的最大值,所有的数据类型合用。 返回值 x:假如 x是介于 a 和 b之间 a:假如 x小于a b:假如 x大于b 例子 sensVal = constrain(sensVal, 10, 150); //传感器返回值的范围限制在10到150之间 map() 描述 将一个数从一个范围映射到此外一个范围。也就是说,会将 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:目的范围值的上限 返回 被映射的值。 例子 /*映射一个模拟值到8位(0到255)*/ void setup(){}   void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); } 附录 关于数学的实现,这里是完整函数 long map(long x, long in_min, long in_max, long out_min, long out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } pow() 描述 计算一个数的幂次方。Pow()可以用来计算一个数的分数幂。这用来产生指数幂的数或曲线非常方便。 参数 base:底数(float) exponent:幂(float) 返回 一个数的幂次方值(double) 例子 详情见 库代码中的fscale函数。 sqrt() 描述 计算一个数的平方根。 参数 x:被开方数,任何类型 返回 此数的平方根,类型double ceil()– exp()– fabs()– floor()– fma()– fmax()– fmin()– fmod()– ldexp()– log()– log10()– round()– signbit()– sq()– square()– trunc()– 三角函数 sin() 描述 计算角度的正弦(弧度)。其结果在-1和1之间。 参数 rad: 弧度制的角度(float) 返回 角度的正弦值(double) cos() 描述 计算一个角度的余弦值(用弧度表达)。返回值在 -1 和 1 之间。 参数 rad:用弧度表达的角度 (浮点数) 返回 角度的余弦值 (双精度浮点数) tan() 描述 计算角度的正切(弧度)。结果在负无穷大和无穷大之间。 参数 rad:弧度制的角度(float) 返回 角度的正切值 acos()– asin()– atan()– atan2()– cosh()– degrees()– hypot()– radians()– sinh()– tanh()– 随机数 randomSeed() 描述 使用randomSeed()初始化伪随机数生成器,使生成器在随机序列中的任意点开始。这个序列,虽然很长,并且是随机的,但始终是同一序列。 如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。 反之,有些时候伪随机数的精确反复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完毕。 参数 long,int - 通过数字生成种子。 返回 没有返回值 例子 long randNumber;   void setup(){ Serial.begin(9600); randomSeed(analogRead(0)); }   void loop(){ randNumber = random(300); Serial.println(randNumber);   delay(50); } random() 描述 使用random()函数将生成伪随机数。 语法 random(max) random(min, max) 参数 min - 随机数的最小值,随机数将包含此值。 (此参数可选) max - 随机数的最大值,随机数不包含此值。 返回 min和max-1之间的随机数( 数据类型为long ) 注意 如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。 反之,有些时候伪随机数的精确反复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完毕。 例子 long randNumber;   void setup(){ Serial.begin(9600);   //假如模拟输入引脚0为断开,随机的模拟噪声 //将会调用randomSeed()函数在每次代码运营时生成 //不同的种子数值。 //randomSeed()将随机打乱random函数。 randomSeed(analogRead(0)); }   void loop() { //打印一个0到299之间的随机数 randNumber = random(300); Serial.println(randNumber);   //打印一个10到19之间的随机数 randNumber = random(10, 20); Serial.println(randNumber);   delay(50); } 位操作 lowByte() 描述 语法 参数 返回 lowByte() 描述 提取一个变量(例如一个字)的低位(最右边)字节。 语法 lowByte(x) 参数 x:任何类型的值 返回 字节 highByte() 描述 提取一个字节的高位(最左边的),或一个更长的字节的第二低位。 语法 highByte(x) 参数 x:任何类型的值 返回 byte bitRead() 描述 读取一个数的位。 语法 bitRead(x, n) 参数 X:想要被读取的数 N:被读取的位,0是最低有效位(最右边) 返回 该位的值(0或1)。 bitWrite() 描述 在位上写入数字变量。 语法 bitWrite(x, n, b) 参数 X:要写入的数值变量 N:要写入的数值变量的位,从0开始是最低(最右边)的位 B:写入位的数值(0或1) 返回 无 bitSet() 描述 为一个数字变量设立一个位。 语句 bitSet(x, n) 语法 X:想要设立的数字变量 N:想要设立的位,0是最重要(最右边)的位 返回 无 bitClear() 描述 清除一个数值型数值的指定位(将此位设立成 0) 语法 bitClear(x, n) 参数 X:指定要清除位的数值 N:指定要清除位的位置,从0开始,0 表达最右端位 返回值 无 bit() 描述 计算指定位的值(0位是1,1位是2,2位4,以此类推)。 语法 bit(n) 参数 n:需要计算的位 返回值 位值 设立中断函数 attachInterrupt() attachInterrupt(interrupt, function, mode) description 当发生外部中断时,调用一个指定函数。当中断发生时,该函数会取代正在执行的程序。大多数的Arduino板有两个外部中断:0(数字引脚2)和1(数字引脚3)。 arduino Mege有四个外部中断:数字2(引脚21),3(20针),4(引脚19),5(引脚18)。 语法 interrupt:中断引脚数 function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。 mode:定义何时发生中断以下四个contstants预定有效值: LOW 当引脚为低电平时,触发中断 CHANGE 当引脚电平发生改变时,触发中断 RISING 当引脚由低电平变为高电平时,触发中断 FALLING 当引脚由高电平变为低电平时,触发中断. 返回 无 注意事项 当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据也许会丢失。你应当声明一个变量来在未发生中断时储存变量。 使用中断 在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。一个使用中断的任务也许会读一个旋转编码器,监视用户的输入。 假如你想以保证程序始终抓住一个旋转编码器的脉冲,历来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手,由于该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。在所有这些情况下,使用一个中断可以释放的微控制器来完毕其他一些工作。 程序示例 int pin = 13; volatile int state = LOW;   void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); }   void loop() { digitalWrite(pin, state); }   void blink() { state = !state; } detachInterrupt() detachInterrupt(interrupt) 描述 关闭给定的中断。 参数 interrupt: 中断禁用的数(0或者1). 开关中断 interrupts() interrupts()(中断) 描述 重新启用中断(使用noInterrupts()命令后将被禁用)。中断允许一些重要任务在后台运营,默认状态是启用的。禁用中断后一些函数也许无法工作,并传入信息也许会被忽略。中断会稍微打乱代码的时间,但是在关键部分可以禁用中断。 参数 无 返回 无 例子 void setup() { }   void loop() { noInterrupts(); //重要、时间敏感的代码 interrupts(); //其他代码写在这里 } noInterrupts() noInterrupts() 描述 严禁中断(重新使能中断interrupts())。中断允许在后台运营一些重要任务,默认使能中断。严禁中断时部分函数会无法工作,通信中接受到的信息也也许会丢失。 中断会稍影响计时代码,在某些特定的代码中也会失效。 参数 无。 返回 无。 例子 void setup()   void loop() { noInterrupts(); //关键的、时间敏感的代码放在这 interrupts(); //其他代码放在这 } 通讯 Serial 用于Arduino控制板和一台计算机或其他设备之间的通信。所有的Arduino控制板有至少一个串口(又称作为UART或USART)。它通过0(RX)和1(TX)数字引脚通过串口转换芯片连接计算机USB端口与计算机进行通信。因此,假如你使用这些功能的同时你不能使用引脚0和1作为输入或输出。 您可以使用Arduino IDE内置的串口监视器与Arduin
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:Arduino语法手册函数部分.doc
    链接地址:https://www.zixin.com.cn/doc/3552245.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork