Arduino开发板移植问题

charlesc
发布于 2020-11-19 16:18
1.0w浏览
1收藏

一直听到许多做物联网、智能家居的控制器使用的是Arduino,从师兄那里拿到了一块Arduino开发板,进行了一下午的学习,感觉这个适合小孩子们玩:)

废话少说,总结一下,便于以后可能会用得到。我主要参考了百度文库的一个60+页的《arduino从零开始学》和一些技术论坛。

由于之前学习过若干块开发板,这里主要探究他们的异同,移植问题。

个人总结为三部分:

 

一、arduino IDE环境的搭建

 

     由于无法进入官网下载,这里选择了1.6.11免安装版,并且是中文环境,非常方便

 

     (2)驱动的安装

    这种老版本的CH340一般在电脑上无法识别,通过设备管理器里选择手动安装,选中arduino 安装路径里的drivers文件夹即可

  (3)如何编译

     由于开发板主要通过串口进行程序的下载,所以需要选择开发板型号以及串口端口

Arduino开发板移植问题-鸿蒙开发者社区

之后,点击编译按钮、上传按钮实现程序的检错和下载。

 

二、基本语法的学习

 

   (1)我们会发现arduino 主体程序包括两部分: setup()和 loop()

       setup()只能初始化一次, 主要放置一些初始化函数如端口配置等

        loop()里所以的语句会被反复执行需要小心。

 

    (2)变量类型,全局/局部变量,数学运算符,关系运算符,逻辑运算符,位操作

    三大控制结构,数组,函数的学习

 

     (3)一些 arduino 内置函数的学习

    比如串口配置打印显示,端口输入输出及赋值,pwm值的修改等

   关于这部分,自己将学习的函数写成一个个小程序, 每个小程序设计不同知识点的学习,大家可以从中学习。附在后面。

 

三、以ardunio为核心控制器,完成一系列扩充功能。

 

     由于笔者手上只有一块开发板,没有多余的面包板等配件,故该部分无法一一验证,不过总结一遍吧。

 

     (1)首先要根据原理图观测开发板引脚的功能。

      例如,在0-13引脚中:13引脚与LED相连,0/1引脚分别实现RX/TX功能,3/5/6/9/10/11/12/13端口输出电压值可变,即可实现pwm功能。

               在A0-A5中,实现AD模拟输入的功能,能够将0-5v电压分成0-1023份,利用逐次逼近实现采样

               数字电源,模拟电源等。

               固定按键,或者那些端口可实现输入功能,进而扩展为上拉电阻式的按键设计电路

 

     (2)功能的设计

         显示类:数码管数字显示,LCD1602显示,OLED显示,8*8点阵显示...

         按键类:外接独立按键,矩阵按键等

         声控类:蜂鸣器,红外侦测等

         定时中断类:时钟计数,脉冲计数,中断进行侦测,AD采样等

         输出控制类:步进电机,舵机控制;LED亮度变化,直流电机等

         通信类:SPI通信,uart通信,红外通信,外接网络端口通信

         数据存储类:编码器译码器模块,SD模块等

   ....

附代码:

/*******************
*功能:显示串口打印信息
*作者:王茂春
*知识点:了解,入门,使用串口波特率设置函数、串口打印函数
*********************/
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("wanghello");
  delay(1000);
}


/*******************
*功能:13引脚闪烁灯,时间间隔1000ms
*作者:王茂春
*知识点:引脚输出配置,高低电平配置
*********************/
void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);  //将13引脚设置为输出
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13,HIGH); // //将13引脚高电平
  delay(1000);
  digitalWrite(13,LOW); // //将13引脚低电平
  delay(1000);
}

/*******************
*功能:13引脚闪烁灯,时间间隔变化:1000-5000ms
*作者:王茂春
*知识点:引脚输出配置,高低电平配置
*         全局变量使用,if-else语句使用,操作符+=、++等的使用
*********************/
int ledPin = 13; //使用全局变量表明引脚为13
int delayTime = 1000; //延时100ms
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin,OUTPUT);  //将13引脚设置为输出
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(ledPin,HIGH); // //将13引脚高电平
  delay(delayTime);
  digitalWrite(ledPin,LOW); // //将13引脚低电平
  delay(delayTime);
  
  delayTime+=100;
  if(delayTime ==5000)
   {
       delayTime = 1000; //恢复基准
   }
}

/*******************
*功能:全局数组数值打印
*作者:王茂春
*知识点:全局数组的初始化学习
*         while循环的使用
*********************/
int arr[10]={1,2,3,4,5,6,7,8,9}; //全局数组声明并初始化
int count=0;       //定义计数器变量并初始化为0 
void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(count < 10)
  {
    Serial.println(arr[count]);
    count++;
  }
}



/*******************
*功能:全局数组数值打印
*作者:王茂春
*知识点:全局数组的初始化学习
*         for循环的使用.注意该程序有一个错误:
*        由于将计数器count初始化放置在for循环中,外加loop的影响导致该程序一直循环,容易死机
*********************/
int arr[10]={1,2,3,4,5,6,7,8,9}; //全局数组声明并初始化
void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int count=0;count < 10;count++ )
  {
    Serial.println(arr[count]);
  }
}


/*******************
*功能:max函数的调用
*作者:王茂春
*知识点:自定义函数的使用(无需声明)
*         考虑形参一致问题,考虑到本次实验无需循环,代码放在setup里
*********************/

void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
   int a=10,b=20; 
   int value=maxValue(a,b);
   Serial.println(value);
}

void loop() {
  // put your main code here, to run repeatedly:
 
}

int maxValue(int x,int y)
{
  return x > y ? x:y;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.

 

 

分类
已于2020-11-19 16:18:54修改
收藏 1
回复
举报
1


回复
    相关推荐