Arduino 基础语法

本文是一篇Arduino初学者教程,涵盖了如何初始化并控制LED灯,实现上下位机间的串行通信,包括下位机向PC发送数据和上位机向Arduino发送数据。此外,还介绍了模拟IO操作——使用PWM技术调节LED亮度,以及时间函数的使用,如`delay()`和`millis()`。
摘要由CSDN通过智能技术生成

点亮LED灯 basic01

// 初始化函数
void setup() {
  //将LED灯引脚(引脚值为13,被封装为了LED_BUTLIN)设置为输出模式
  pinMode(LED_BUILTIN, OUTPUT);
}

// 循环执行函数
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // 打开LED灯
  delay(1000);                       // 休眠1000毫秒
  digitalWrite(LED_BUILTIN, LOW);    // 关闭LED灯
  delay(1000);                       // 休眠1000毫秒
}

通信

上下通信

在这里插入图片描述

引脚操作

处理器在引脚写数据是输出output
处理器从引脚读数据是输入input
在这里插入图片描述

时间函数

在这里插入图片描述

串行通信

下位机到上位机 basic02

下位机向上位机发送数据的话,TX引脚会闪烁

/*
 * 需求: 向 arduino 向PC 发送数据: hello world
 * 实现: 
 *  1. 设置波特率
 *  2. Serial.print()或println()发送数据
 * 
 */
void setup() {
  Serial.begin(57600);
}

void loop() {
  delay(3000);
  Serial.print("hello  ");
  Serial.println("world");
}

上位机到下位机 basic03

上位机向下位机发送数据的话,RX引脚会闪烁

/*
 * 需求: 由上位机向 arduino 发送数据
 * 实现:
 *  1. 设置波特率
 *  2. 在 loop 中读数据
 * 
 */
void setup() {
  Serial.begin(57600);
}

void loop() {
  if(Serial.available() > 0){
    char num = Serial.read();
    // 输出到上位机
    Serial.print("I accept: ");
    Serial.println(num);
  }
}

数字IO操作(已演示)

模拟IO操作 basic04

控制LED灯亮度
PWM:脉冲宽度调制技术,设置占空比为LED间歇性供电,PWM的取值范围是[0,255]
0——low,255——high
假设是PWM = 50,high比例是 50/255 约等于1/5,low比例约是4/5
假设是PWM = 100,high比例是 100/255 约等于2/5,low比例约是3/5
亮度多少就是通过设置的数字与255相除,然后计算出来百分比

/*
 * 需求: 控制LED亮度
 * 使用的知识点: PWM + analogWrite
 * 
 *  1. 封装变量: led 引脚,不同亮度级别
 *  2. 设置LED操作模式 OUTPUT
 *  3. loop 中隔某个时间设置不同的PWM值
 * 
 */

int led = 13;
int l1 = 255;
int l2 = 127;// 半亮
int l3 = 0;
void setup() {
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);
}

void loop() {
  delay(2000);
  analogWrite(led,l1);
  delay(2000);
  analogWrite(led,l2);
  delay(2000);
  analogWrite(led,l3);
}

时间函数 basic05

/*
 * 演示时间函数: millis()与delay()
 * 需求: 每休眠 2000 ms, 调用一次 millis() 获取时刻,并打印
 * 
 */
void setup() {
  // put your setup code here, to run once:
  // 需要打印到PC端,需要设置波特率
  Serial.begin(57600);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(2000);
  unsigned long t = millis();
  Serial.print("time = ");
  Serial.println(t);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NqqGOGO

你的鼓励是我学习的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值