Arduino 小程序?

Arduino 小程序?,第1张

int sensorPin1 = A0 // 传感器A

int sensorPin2 = A1 // 传感器B

int ledPin = 13 // LED

int MPin1 = 9 // 电机1

int MPin2 = 10 // 电机2

int sensorValue1 = 0 //

int sensorValue2 = 0; //

void setup() {

pinMode(sensorPin1, INPUT)

pinMode(sensorPin2, INPUT)

pinMode(ledPin, OUTPUT)

pinMode(MPin1, OUTPUT)

pinMode(MPin2, OUTPUT)

}

void loop() {

sensorValue1 = analogRead(sensorPin1)

sensorValue2 = analogRead(sensorPin2)

if (sensorValue1 == sensorValue2) {

digitalWrite(ledPin, HIGH)

digitalWrite(MPin1, LOW)

digitalWrite(MPin2, LOW)

}

if (sensorValue1 <sensorValue2) {

digitalWrite(ledPin, LOW)

digitalWrite(MPin1, LOW)

digitalWrite(MPin2, HIGH)

}

if (sensorValue1 >sensorValue2) {

digitalWrite(ledPin, LOW)

digitalWrite(MPin1, HIGH)

digitalWrite(MPin2, LOW)

}

}

1. 实验材料

Uno R3开发板

配套USB数据线

面包板及配套连接线

共阴极数码管

1个220Ω限流电阻

2. 实验步骤

1. 根据原理图搭建电路。

数码管的A,B,C,D,E,F,G,DP引脚分别接入开发板的数字管脚7,6,5,10,11,8,9,4。数码管公共端接限流电阻,电阻另一端接GND。

实验原理图如下图所示:

实验原理图

实物连接图如下图所示:

实物连接图

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/*

  Random

  通过Random随机显示0到9的数字

*///设置控制各段的数字IO脚,具体几号引脚对应哪一段,来源为数码管官方引脚图。int pin_a = 7int pin_b = 6int pin_c = 5int pin_d = 10int pin_e = 11int pin_f = 8int pin_g = 9int pin_p = 4int num//根据共阴极数码管段码表定义0~9显示的各段开关状态int numTable[10][8] = {  //1为点亮,0为关闭

 //a  b  c  d  e  f  g  dp

 {1, 1, 1, 1, 1, 1, 0, 0},     //0

 {0, 1, 1, 0, 0, 0, 0, 0},     //1

 {1, 1, 0, 1, 1, 0, 1, 0},     //2

 {1, 1, 1, 1, 0, 0, 1, 0},     //3

 {0, 1, 1, 0, 0, 1, 1, 0},     //4

 {1, 0, 1, 1, 0, 1, 1, 0},     //5

 {1, 0, 1, 1, 1, 1, 1, 0},     //6

 {1, 1, 1, 0, 0, 0, 0, 0},     //7

 {1, 1, 1, 1, 1, 1, 1, 0},     //8

 {1, 1, 1, 1, 0, 1, 1, 0},     //9}void setup(){  for (int i = 4i <= 11i++)

 {

   pinMode(i, OUTPUT)//设置4~11引脚为输出模式

 }

 randomSeed(analogRead(0))

}//根据索引显示数字void showNum(int index){

 digitalWrite(pin_a, numTable[index][0])//设置a 引脚的电平

 digitalWrite(pin_b, numTable[index][1])//设置b 引脚的电平

 digitalWrite(pin_c, numTable[index][2])//设置c 引脚的电平

 digitalWrite(pin_d, numTable[index][3])//设置d 引脚的电平

 digitalWrite(pin_e, numTable[index][4])//设置e 引脚的电平

 digitalWrite(pin_f, numTable[index][5])//设置f 引脚的电平

 digitalWrite(pin_g, numTable[index][6])//设置g 引脚的电平

 digitalWrite(pin_p, numTable[index][7])//设置dp引脚的电平}void loop(){

 num = random(10)//产生随机数

 showNum(num)//显示随机数

 delay(500)

}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

arduino编程语言入门:

1. 关键字

语法符号:

是一条语句结束的标志,供编译器识别,必须得有。

{}

{}将多条语句合成一个复合语句,能划分语句的作用域,增强整体整体的可读性。

//

//行注释,该行//后的所有语句,文字将不被编译器所编译、执行。相似的,还有,在中的所有语句,文字将不被编译器所编译、执行。

if(表达式)

{

语句A

}

if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

...

else if(表达式n)

{

语句n;

}

else

{

语句n+1;

}

for(初始表达式;条件表达式;循环变量表达式)

{

循环体语句;

}

switch(表达式)

{

case 表达式常量1:语句序列1;

case 表达式常量2:语句序列2;

...

case 表达式常量i:语句序列i;

case 表达式常量n:语句序列n;

default:语句序列n+1;

}

while(条件表达式)

{

循环语句;

循环变量表达式;

}

do

{

循环体语句;

}while(条件表达式)

break

continue;

return x

goto 语句标号;

2. 数据类型:

3. 常量

HIGH | LOW 表示数字IO口的高低电平。HIGH 表示高电(1),LOW 表示低电平(0)。

INPUT | OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR单片机能提供5V电压 40mA电流)。

true | false true 表示真(1),false表示假(0)。

4. 程序结构

声明变量及接口名称(例如:int iint ledPin=13)。

void setup() 函数在程序开始时使用,初始化变量,管脚模式,调用库函数等(例如:pinMode(ledPin,OUTUPT))。

void loop() 在void setup()函数之后,即初始化之后,loop() 让你的程序循环地被执行。使用它来运转Arduino。

5. 数字 I/O

以下型号为UNO

pinMode(pin, mode)

数字IO口输入输出模式定义函数,pin表示为0~13, mode表示INPUT或OUTPUT。

digitalWrite(pin, value)

数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。

必须先定义为输入或输出模式digitalWrite才能生效。

int digitalRead(pin)

数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数

字传感器。

6. 模拟IO

int analogRead(pin)

模拟IO口读函数,pin表示为0~5(ArduinoDiecimila为0~5,Arduino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。

analogWrite(pin, value) - PWM

数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数通常在引脚的旁边标注~,pin表示3, 5, 6, 9,10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。

7. 扩展 I/O

shiftOut(dataPin, clockPin, bitOrder,value);

SPI外部IO扩展函数,通常使用带SPI接口的74HC595做8个IO扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要传送的数据(0~255),另外还需要一个IO口做74HC595的使能控制。

unsigned long pulseIn(pin, value);脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。

8. 时间函数

unsigned long millis();返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。

delay(ms);延时函数(单位ms)。

delayMicroseconds(us);延时函数(单位us)。

9. 数学函数

min(x, y) 求最小值。

max(x, y) 求最大值。

abs(x) 计算绝对值。

constrain(x, a, b) 约束函数,下限a,上限b,x必须在ab之间才能返回。

map(value, fromLow, fromHigh, toLow,toHigh)约束函数,value必须在fromLow与toLow之间和fromHigh与toHigh之间。

pow(base, exponent)开方函数,base的exponent次方。

sq(x)平方。

sqrt(x)开根号。

三角函数:

sin(rad)

cos(rad)

tan(rad)

10. 随机数函数

randomSeed(seed);随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。

long random(max);随机数函数,返回数据大于等于0,小于max。

long random(min, max);随机数函数,返回数据大于等于min,小于max。

11. 外部中断函数

attachInterrupt(interrupt, , mode;外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。

detachInterrupt(interrupt);中断开关,interrupt=1 开,interrupt=0 关。

interrupts();中断使能函数,用于使能中断。

noInterrupts();中断禁止函数,禁止中断。

12. 串口收发函数

Serial.begin(speed);串口定义波特率函数,speed表示波特率(串行每秒传输数据位数的速率),如9600,19200等。

int Serial.available() 判断缓冲器状态。

int Serial.read();读串口并返回收到参数。

Serial.flush();清空缓冲器。

Serial.print(data);串口输出数据。Serial.print(数据,数据的进制) 默认为十进制(DEC)

Serial.println(data);串口输出数据并带回车符。

13. 重要

以上列举了一些较常用的函数,事实上,在Arduino的安装目录下的libraries还有众多函数可以根据需要进行调用和学习。

也可以自己编写函数然后按照libraries目录下其他函数的格式打包好。放置在libraries目录下,然后自己就可以在IDE环境下调用自己编写的函数了。

通过以上介绍,其实大家可以看到arduino编程语言入门并不难,以上内容分享出来给大家作为参考,想要了解更多更专业的arduino编程语言教程可以去DF创客社区Arduino教程专栏学习。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11446055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存