《Arduino开发实战指南:LabVIEW卷》——2.3 Arduino C语言开发示例

2.3 Arduino C语言开发示例

2.3.1 数字输出
如图2-15所示,这是Arduino一个最基本的“hello world”程序,将LED连接到数字引脚13,让LED每秒钟闪一次。Arduino有内置的电阻,所以220Ω的电阻不用在外部连接。

代码清单2-18:digital output应用示例

/********************************************
 digital output应用示例

 This example code is in the public domain.
*********************************************/
int ledPin = 13;
/**********************************************
          初始化部分——setup函数
**********************************************/
void setup()
{
      pinMode(ledPin,OUTPUT);
}
/**********************************************
          执行部分——loop函数
**********************************************/
void loop()
{
      digitalWrite(ledPin,HIGH);
      delay(1000);
      digitalWrite(ledPin,LOW);
      delay(1000);
}

2.3.2 数字输入
如图2-16所示,这是一个最简单的数字输入例子,在例子中将一个开关或者按键连接至数字引脚2,当开关闭合或者按键按下的时候,点亮LED。

代码清单2-19:digital input应用示例
/*********************************************
 digital input应用示例

 This example code is in the public domain.
*********************************************/
int ledPin = 13;
int inPin =2;
/**********************************************
         初始化部分——setup函数
**********************************************/
void setup()
{
      pinMode(ledPin,OUTPUT);
      pinMode(inPin,INPUT);
}
/**********************************************
         执行部分——loop函数
**********************************************/
void loop()
{
      if(digitalRead(inPin) == HIGH)
          {
                 ?digitalWrite(ledPin,HIGH);
              delay(1000);
                 ?digitalWrite(ledPin,LOW);
              delay(1000);
            }
}

2.3.3 大电流输出
如图2-17所示,有时候需要使用Arduino控制超过40mA电流的设备。这个时候需要使用一个MOSFET或者晶体管来开关大电流负载。代码清单2-20中,Arduino每秒快速地开关MOSFET 5次。

代码清单2-20:high current output应用示例

/********************************************
 high current output应用示例

 This example code is in the public domain.
*********************************************/
int outPin = 5;
/**********************************************
          初始化部分——setup函数
**********************************************/
void setup()
{
      pinMode(outPin,OUTPUT);
}
/**********************************************
          执行部分——loop函数
**********************************************/
void loop()
{
      for(int i=0;i<=5;i++)
      {
           digitalWrite(outPin,HIGH);
             delay(250);
             ?digitalWrite(outPin,LOW);
             delay(250);
      }
      delay(1000);
}

2.3.4 PWM输出
PWM(Pulse Width Modulation)可以产生类似于模拟输出的效果,可以用PWM控制LED逐渐由暗变亮,也可以由PWM控制伺服电机。代码清单2-21是使用for循环语句让LED逐渐由暗变亮,再由亮变暗。电路示例如图2-18所示。

代码清单2-21:pwm output应用示例

/********************************************
 pwm output应用示例

 This example code is in the public domain.
*********************************************/
int ledPin = 9;
/**********************************************
          初始化部分——setup函数
**********************************************/
void setup(){}
/**********************************************
          执行部分——loop函数
**********************************************/
void loop()
{
      for(int i=0;i<=255;i++)
      {
           analoglWrite(ledPin,i);
             delay(100);
      }
      for(int i=255;i>=0;i--)
      {
           analoglWrite(ledPin,i);
             delay(100);
      }
}

2.3.5 电位器模拟输入
如图2-19所示,使用一个电位计以及Arduino的一个模拟输入端口可以读取0~1024范围的模拟值。代码清单2-22中使用一个电位计来控制LED的闪烁频率。

代码清单2-22:potentiometer input应用示例

/********************************************
 potentiometer input应用示例

 This example code is in the public domain.
*********************************************/
int potPin = 0;
int ledPin = 13;
/**********************************************
          初始化部分——setup函数
**********************************************/
void setup()
{
      pinMode(ledPin,OUTPUT);
}
/**********************************************
          执行部分——loop函数
**********************************************/
void loop()
{
       digitalWrite(ledPin,HIGH);
       delay(analogRead(potPin));
           digitalWrite(ledPin,LOW);
        delay(analogRead(potPin));
}

2.3.6 可变电阻输入
很多种传感器都使用可变电阻,代码清单2-23中使用一个函数读取模拟输入端口,并使用函数返回值控制LED的渐变过程。示例电路如图2-20所示。

代码清单2-23:variable resistor input应用示例

/********************************************
 variable resistor input应用示例

 This example code is in the public domain.
*********************************************/
int ledPin = 9;
int analogPin = 0;
/**********************************************
            初始化部分——setup函数
**********************************************/
void setup(){}
/**********************************************
            执行部分——loop函数
**********************************************/
void loop()
{
     for(int i=0;i<=255;i++)
     {
           analoglWrite(ledPin,i);
             delay(delayVal());
     }
     for(int i=255;i>=0;i--)
     {
           analoglWrite(ledPin,i);
             delay(delayVal());
     }
}
int delayVal()
{
      int v;
      v = analogRead(analogPin);
      v /= 8;
    return v;
}```  

**2.3.7 伺服输出**
 Hobby Servo是一种可以独立工作的电机,只要每隔20ms给它一个脉冲,就可以让它在0~180°范围内进行旋转。示例电路如图2-21所示。代码清单2-24中使用一个servoPulse()函数让电机从10°转到170°,然后再返回0°。

![image](https://yqfile.alicdn.com/f58560204a151315783de7393d22c822b60f8ccb.png)

代码清单2-24:servo output应用示例

/**
servo output应用示例

This example code is in the public domain.
*/
int servoPin = 2;
int myAngle;
int pulseWidth;
/**

       初始化部分——setup函数

**/
void setup()
{

 pinMode(servoPin,OUTPUT);

}
/**

       执行部分——loop函数

**/
void servoPulse(int servoPin, int myAngle)
{

 pulseWidth = (myAngle * 10) + 600;
 digitalWrite(servoPin,HIGH);
 delayMicroseconds(pulseWidth);
 digitalWrite(servoPin,LOW);    

}
void loop()
{

      for(myAngle =10;myAngle<=170;myAngle++)
      {
           servoPulse(servoPin,myAngle);
           delay(20);
      }
      for(myAngle =170;myAngle>=10;myAngle--)
      {
           servoPulse(servoPin,myAngle);
           delay(20);
      }

}

时间: 2024-09-20 05:40:15

《Arduino开发实战指南:LabVIEW卷》——2.3 Arduino C语言开发示例的相关文章

《STM32库开发实战指南:基于STM32F4》----3.2 STM32能做什么

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第3章,第3.2节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 3.2 STM32能做什么 STM32属于一个微控制器,自带了各种常用通信接口,比如USART.I2C.SPI等,可连接非常多的传感器,可以控制很多的设备.现实生活中,我们接触到的很多电器产品中都有STM32的身影,比如智能手环.微型四轴飞行器.平衡车.移动POST机.智能电饭锅.3D打印机等.下面我们以最近

《STM32库开发实战指南:基于STM32F4》----1.4 安装STM32芯片包

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第1章,第1.4节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 1.4 安装STM32芯片包 KEIL5不像KEIL4那样自带了很多厂商的MCU型号,而是需要自己安装.把图1-7中弹出的对话框关掉,直接去KEIL的官网http://www.keil.com/dd2/pack/ 下载,或者直接用已下载好的包. 在官网上找到STM32F1.STM32F4和STM32F7这3个

《STM32库开发实战指南:基于STM32F4》----3.3 STM32选型

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第3章,第3.3节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 3.3 STM32选型 3.3.1 STM32分类 STM32有很多系列,可以满足市场的各种需求.从内核上分,有Cortex-M0.M3.M4和M7,每个内核又可分为主流.高性能和低功耗等,具体见表3-2. 单纯从学习的角度出发,可以选择F1和F4系列.F1代表了基础型,基于Cortex-M3内核,主频为72

《STM32库开发实战指南:基于STM32F4》----1.2 获取KEIL5安装包

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第1章,第1.2节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 1.2 获取KEIL5安装包 要想获得KEIL5的安装包,在互联网上搜索"KEIL5下载"即可找到很多网友提供的下载文件,或者到KEIL的官网https://www.keil.com/download/product/下载.本书使用的KEIL5的版本是MDK 5.15,若有新版本,读者可使

《STM32库开发实战指南:基于STM32F4》----第1章 如何安装KEIL5 1.1 温馨提示

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第1章,第1.1节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 第1章 如何安装KEIL5 1.1 温馨提示 1)安装路径名中不能带中文,必须是英文路径名. 2)安装目录不能跟51单片机的KEIL或者KEIL4冲突,三者目录必须分开. 3)KEIL5的安装比KEIL4多一个步骤,必须添加MCU库,不然没法使用. 4)如果使用的时候出现莫名其妙的错误,可先上相关网站查找解决

《STM32库开发实战指南:基于STM32F4》----2.3 仿真器配置

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第2章,第2.3节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 2.3 仿真器配置 在将仿真器与电脑和开发板连接好且开发板供电正常的情况下,打开编译软件KEIL,在魔术棒选项卡里面选择仿真器的型号,然后进行以下配置. 1)Debug选项配置,见图2-3. 2)Utilities选项配置,见图2-4. 3)Debug Settings选项配置,见图2-5.

《STM32库开发实战指南:基于STM32F4》----2.4 选择目标板

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第2章,第2.4节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 2.4 选择目标板 选择目标板时,具体选择多大的Flash要根据板子上的芯片型号决定.秉火STM32开发板的配置是:F1选512KB,F4选1MB.这里面有个小技巧就是把"Reset and Run"选项也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位.要擦除的Flash大小选择

《STM32库开发实战指南:基于STM32F4》----第2章 如何用DAP仿真器下载程序 2.1 仿真器简介

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第2章,第2.1节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 第2章 如何用DAP仿真器下载程序 2.1 仿真器简介 本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex内核的单片机,常见的M3.M4和M7都可以完美支持,其外观见图2-1. Fire-Debugger支持下载和在线仿真程序,支持Windows X

《STM32库开发实战指南:基于STM32F4》----2.2 硬件连接

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第2章,第2.2节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 2.2 硬件连接 把仿真器用USB连接到电脑,如果仿真器的灯亮,则表示正常,可以使用.然后把仿真器的另外一端连接到开发板,给开发板上电,接着就可以通过软件KEIL或者IAR给开发板下载程序.仿真器与电脑和开发板的连接方式示意图如图2-2所示.

《STM32库开发实战指南:基于STM32F4》----2.5 下载程序

本节书摘来自华章出版社<STM32库开发实战指南:基于STM32F4>一书中的第2章,第2.5节,作者刘火良,杨森编著,更多章节内容可以访问"华章计算机"公众号查看. 2.5 下载程序 如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行.下载程序不需要其他额外的软件,直接单击KEIL中的LOAD按钮即可,见图2-7. 程序下载后,Build Output选项卡上如果打印出"Application running-",则表示程序下载成功,见