1.Arduino的概念

arduino是一款便捷灵活方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE),

是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O 介面版,具有类似Java 、C的Processing/Wiring开发环境。
 
2.Arduino获取

获取Arduino IDE开发工具

下载地址 :http://arduino.cc/en/Main/Software

Arduino的开发性,支持源码下载

支持的平台有 Windows、MAC OS X、Linux

Windows 平台上面 Arduino IDE下载后为zip包,直接解压就可以使用。

3.说明一下Arduino的驱动安装

首先把Arduino UNO R3 通过数据线和电脑连接。

(1)  在设备管理器中找到未识别的设备,然后选择更新驱动程序软件...

(2)  选择浏览查找驱动程序软件

(3)  浏览计算机上的驱动文件 ,方法是找到Arduino IDE中的drivers文件夹

点击下一步即可实现安装。

(4)  驱动安装完成

4.开发环境编写程序
 

 

5.实现简单的程序 Hello World 

有两个条件要设置

条件一

(1)确定驱动的串口,图中为 COM4

(2)打开Arduino,选择 Tools->Serial Port->COM4

条件二

选择开发板 Tools->Board->Arduino Uno (我的开发版为Arduino Uno)

通过上面的设置,就可以正确连接Arduino开发板

先看一段代码

 void setup()//系统初始化
{
Serial.begin(); //设置串口波特率
} void loop()//程序运行
{
Serial.println("Hello Arduino"); //打印Hello Arduino
delay(); //延时1000ms
}

运行效果,显示串口打印信息

注意事项:

每次配置完整个preferences之后,选择完硬件版本之后,要重启IDE

Arduino编程相关:

数据类型

Arduino数据类型转换函数

char() :  将任意类型的值转换成char类型;

byte():   将任意类型的值转换成byte类型;

int():     将任意类型的值转换成int类型;

long():    将任意类型的值转换成long类型;

float():    将任意类型的值转换成float类型;

结构

setup() 初始化一些变量
void setup()
{
Serial.begin(); //设置波特率
pinMode(,OUTPUT); //设置某个引脚是输出还是输入
}
loop()    //每个arduino程序中必须包含的连续执行函数,setup()初始化后的执行函数,相当于C语言中的main()
void loop()
{
if(digitalRead(buttonPin)==HIGH)
serialWrite('H');
else
serialWrite('L'); delay();
}

常量

HIGH、LOW        表示读写数字IO脚的值
INPUT、OUTPUT      表示数字IO脚的方向
true、false

数字IO
pinMode()
pinMode(pin,mode);    pin:0-13       mode:INPUT / OUTPUT  
返回None

digitalWrite()
digitalWrite(pin,Value);    Value:HIGH / LOW
返回None

digitalRead()
digitalRead(pin,Value);    Value:HIGH / LOW
eg:

 int ledPin=;
int inPin=;
int val=; void setup()
{
pinMode(ledPin,OUTPUT);
pinMode(inPin,INPUT);
}
void loop()
{
val=digitalRead(inPin);
digitalWrite(ledPin,val);
}

串口收发函数
Serial.begin(speed) 一般取值300,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200
void setup()
{
    Serial.begin(9600);
}
Serial.end()
禁止串口传输函数。此时串口传输的pin脚可以作为数字IO脚使用
Serial.end();

Serial.available()
判断串口接收缓冲器的状态函数,读取串口接收缓冲器的值,以判断数据送达到串口

 int incomingByte=;
void setup()
{
Serial.begin();
}
void loop()
{
if(Serial.available()>)
{
incomingByte=Serial.read();
Serial.print("I received: ");
Serial.println(incomingByte,DEC);
}
}

Serial.peek()
串口读取函数,返回的是串口数据中下一字节的内容
如果没有返回-1

Serial.flush()
清除串口缓冲器内容函数

Serial.print()
串口输出数据函数
Serial.print(val);    //打印的值,任意数据类型
Serial.print(val,format);    //format:输出的数据格式,包括整数类型和浮点型数据的小数点位数

Serial.print(78,BIN);    得到“1001110”
Serial.print(78,OCT);   得到“116”
Serial.print(78,DEC);   得到“78”

Serial.point(1.23456,0);  得到“1”
Serial.point(1.23456,3);  得到“1.234”
Serial.print("Hello World!");   得到“Hello World!”

Serial.println() 串口输出数据函数,与Serial.print()不同的是输出数据带回车符

Serial.write()    串口输出数据函数,写二进制数据到串口
Serial.write(buf,len);       返回值是字节

Serial.serialEvent()  串口数据准备好调用该函数

Serial.serialEvent
{
//statements //任何有效的语句
}

模拟IO口
1.AnalogReference()      配置模拟输入口的参考电压值函数
    analogReference(type)    
    type:    DEFAULT  \默认的参考电压5V或者3.3V
                INTERNAL  \内置参考电压1.1V (Atmeg168 or Atmeg328)或者 2.56V(Atmeg8)
                INTERNAL1V1  \内置参考电压1.1V(Arduino Mega)
                INTERNAL2V56  \内置参考电压2.56V(Arduino Mega)
                EXTERNAL    \   AREF脚为参考电压值

2.AnalogRead()     模拟IO口读函数,Arduino中ADC单元是10位分辨率
    analogRead(pin)
    pin:不同的核心电路板不同的模拟输入口数量,一般是0-5,如Arduino Uno; 0-7 Arduino Mini and Arduino Nano;0-15 Arduino Mega2560

3.AnalogWrite()        数字IO口PWM输出函数
    analogWrite(pin,Value)    pin:3,5,6,9,10 ;在Arduino Mega2560中PWM口编号为2-13
    Value: 设置输出的信号占空比,范围0-255
    返回:None
 eg:

  int ledPin=;
int analogPin=;
int val=;
void setup()
{
pinMode(ledPin,OUTPUT);
}
void loop()
{
val=analogRead(analogPin);
analogWrite(ledPin,val/);
}

必杀技: 

VS+Arduino+VMICRO插件实现Arduino编译和代码跟踪查看

Arduino使用注意问题及编程相关的更多相关文章

  1. Linux环境编程相关的文章

    Linux环境编程相关的文章 好几年没有接触Linux环境下编程了,好多东西都有点生疏了.趁着现在有空打算把相关的一些技能重拾一下,顺手写一些相关的文章加深印象. 因为不是写书,也受到许多外部因素限制 ...

  2. 跨平台编程相关技术资料及笔记.md

    目录 跨平台编程技术选型 ## 需求 最终选定的技术方案:uni-app 混合或跨平台编程相关资料 ## uni-app 官网 相关资料 个人笔记 个人经验 ## taro 官网 相关资料 ## Ch ...

  3. Python网络编程相关的库与爬虫基础

    PythonWeb编程 ①相关的库:urlib.urlib2.requests python中自带urlib和urlib2,他们主要使用函数如下: urllib: urlib.urlopen() ur ...

  4. Arduino对智能机器人进行简单编程

    Arduino对智能机器人进行简单编程 #include "ESP8266.h" #define TRIG_PIN 5 #define ECHO_PIN A5 #define BE ...

  5. Python之路【第六篇】:面向对象编程相关

    判断类与对象关系 isinstance(obj, cls)  判断对象obj是否是由cls类创建的 #!/usr/bin/env python #-*- coding:utf-8 -*- class ...

  6. IME 编程相关

    以下内容摘自http://msdn.microsoft.com/zh-cn/goglobal/bb688135.aspx 在 Win32 中处理输入语言的方法 Microsoft Developer ...

  7. python 类编程相关内容(更新)

    python作为面向对象的编程语言,类和对象相关的编程当然是少不了的! python类: class 类名 : 变量名 [ = 初始值 ] …… def 函数名 ( self [ , 其余参数列表 ] ...

  8. php多进程编程相关资料(以备参考)

    进程与线程的区别 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都 ...

  9. Spring AOP 面向切面编程相关注解

    Aspect Oriented Programming 面向切面编程   在Spring中使用这些面向切面相关的注解可以结合使用aspectJ,aspectJ是专门搞动态代理技术的,所以比较专业.   ...

随机推荐

  1. C语言之分支结构 if(一)

    一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...

  2. Oracle 数据备份、恢复以及导入时表空间不存在的解决方案

    一.数据备份(导出) 1.exp命令导出dmp文件(exp -help查看帮助信息) 命令:exp username/userpasswd@192.168.99.199/orcl file=C:\jd ...

  3. 0116MySql主从复制监控

    如何自动化监控mysql主从服务-- 第一步创建目录mkdir -p /tmp/mysql/masterslave #日志存放目录在/root下面创建sh目录 #存放执行的SHELL脚本 -- 第二步 ...

  4. 有关css3的一些问题

    CSS3新特性(阴影.动画.渐变.变形.伪元素等) CSS3与页面布局学习总结--CSS3新特性(阴影.动画.渐变.变形.伪元素等)     目录 一.阴影 1.1.文字阴影 1.2.盒子阴影 二.背 ...

  5. (二)Python是一门什么样的语言?

    在学习python是一门什么样的语言之前首先需要知道什么是编译和解释? 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而 ...

  6. GOPS2017全球运维大会深圳站 出席嘉宾盘点!

    去年,GOPS全球运维大会在深圳出发,当时门票提前几周收盘,2017年,承载着运维人的期望,GOPS全球运维大会再次来到了深圳.第六届GOPS2017全球运维大会深圳站(本次)将于2017年4月21日 ...

  7. CentOS6.5自带Python2.6.6升级至Python2.7

    CentOS6.5中Python2.6升级到Python2.7 由于Python开发团队已不再支持2.6版本,且该版本对一些软件不支持,因此将2.6升级到2.7. 1.安装Python2.7: 下载源 ...

  8. webpack + vue最佳实践

    webpack + vue最佳实践 我的原文地址:http://www.xiaoniuzai.cn/2016/10/04/webpack%20+%20vue%E6%9C%80%E4%BD%B3%E5% ...

  9. java操作mongodb——更新数据

    Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...

  10. CodeForces 712D Memory and Scores

    $dp$,前缀和. 记$dp[i][j]$表示$i$轮结束之后,两人差值为$j$的方案数. 转移很容易想到,但是转移的复杂度是$O(2*k)$的,需要优化,观察一下可以发现可以用过前缀和来优化. 我把 ...