Arduino 第二课学习笔记(超详细版,适合小学生)

一、课前准备

我们要用到 Arduino 软件(像一个神奇的代码画板)和 Arduino 开发板(硬件小助手),通过写代码让开发板完成有趣的任务!

二、认识核心函数

1. setup() 函数

  • 作用:就像给 Arduino 做 “初始化准备”,程序运行时它只执行一次 ,用来设置引脚模式、初始化串口这些基础工作。
  • 例子
void setup() {
  // 设置 2 号引脚为输出模式,这样引脚就能向外输出电信号啦,比如控制小灯亮灭
  pinMode(2, OUTPUT); 
  // 初始化串口,波特率 9600,这样电脑和 Arduino 就能通过串口聊天啦
  Serial.begin(9600); 
}

2. loop() 函数

  • 作用:程序的 “循环小马达”,里面的代码会不停地重复执行,让 Arduino 持续干活 。
  • 例子
void loop() {
  // 让 2 号引脚输出高电平(可以理解成给引脚通高电压)
  digitalWrite(2, HIGH); 
  // 等待 1000 毫秒(1 秒),让效果保持一下
  delay(1000); 
  // 让 2 号引脚输出低电平(切断高电压)
  digitalWrite(2, LOW); 
  // 再等 1000 毫秒,循环往复
  delay(1000); 
}

三、代码实操 - 让引脚 “眨眼睛”(控制电平变化)

完整代码

// setup 函数:初始化配置,只执行一次
void setup() {
  // pinMode(引脚号, 模式):设置引脚 2 为输出模式,准备向外发信号
  pinMode(2, OUTPUT); 
}

// loop 函数:循环执行,一直干活
void loop() {
  // digitalWrite(引脚号, 电平值):让 2 号引脚输出高电平(HIGH 也可以用 1 表示)
  digitalWrite(2, HIGH); 
  // delay(毫秒数):暂停 1000 毫秒(1 秒),此时接在 2 号引脚的小灯就会亮 1 秒
  delay(1000); 
  // 让 2 号引脚输出低电平(LOW 也可以用 0 表示),小灯熄灭
  digitalWrite(2, LOW); 
  // 再暂停 1000 毫秒,小灯灭 1 秒,然后又会重复亮灭啦
  delay(1000); 
}

代码解释

  • pinMode(2, OUTPUT) :告诉 Arduino ,2 号引脚要当 “输出员”,负责向外发送电信号,比如控制小灯亮或者灭。
  • digitalWrite(2, HIGH) :命令 2 号引脚输出高电平,就像给小灯通上电,小灯(如果接了的话)就会亮起来。
  • delay(1000) :让程序停一停,停 1000 毫秒也就是 1 秒,这样我们能清楚看到小灯亮的状态。
  • digitalWrite(2, LOW) :让 2 号引脚输出低电平,把小灯的电断掉,小灯就熄灭啦。

四、代码实操 - 和电脑 “聊天”(串口输出)

完整代码

void setup() {
  // 初始化串口,设置波特率 9600,这样电脑和 Arduino 能稳定传消息
  Serial.begin(9600); 
}

void loop() {
  // Serial.println(内容):往串口发一行文字,发完自动换行,这里发 “你好,世界!”
  Serial.println("你好,世界!"); 
  // 等 1000 毫秒,每秒发一次消息
  delay(1000); 
}

代码解释

  • Serial.begin(9600) :给串口 “搭好桥”,设置传输速度(波特率)是 9600 ,这样 Arduino 就能和电脑通过串口监视器交流啦。
  • Serial.println("你好,世界!") :让 Arduino 通过串口给电脑发消息,内容是 “你好,世界!” ,而且发完会自动换行,方便我们在串口监视器里看。
  • delay(1000) :控制发消息的频率,每隔 1 秒发一次,这样串口监视器里就会每隔 1 秒显示一行 “你好,世界!” 。

五、代码实操 - 按键控制(输入输出结合)

完整代码

void setup() {
  // 设置 4 号引脚为输入模式,用来接收外部信号(比如按键按下的信号)
  pinMode(4, INPUT); 
  // 设置 2 号引脚为输出模式,用来控制设备(比如小灯)
  pinMode(2, OUTPUT); 
  // 初始化串口,波特率 9600,方便看按键状态消息
  Serial.begin(9600); 
}

void loop() {
  // digitalRead(引脚号):读取 4 号引脚的电平值,1 是高电平(按键按下),0 是低电平(按键松开)
  int buttonState = digitalRead(4); 
  
  // 如果按键按下(电平为 1)
  if (buttonState == 1) { 
    // 串口发消息 “hello”,告诉我们按键按下啦
    Serial.println("hello"); 
    // 让 2 号引脚输出高电平,比如点亮小灯
    digitalWrite(2, HIGH); 
  } 
  // 如果按键松开(电平为 0)
  else { 
    // 串口发消息 “hi”,表示按键松开了
    Serial.println("hi"); 
    // 让 2 号引脚输出低电平,比如熄灭小灯
    digitalWrite(2, LOW); 
  }
  
  // 稍等 50 毫秒,让检测更稳定,避免误判
  delay(50); 
}

代码解释

  • pinMode(4, INPUT) :把 4 号引脚设为 “输入员”,专门接收外面的信号,像按键按下去产生的电信号。
  • int buttonState = digitalRead(4) :读取 4 号引脚的电平状态,存到 buttonState 变量里,1 代表按键按下,0 代表松开。
  • if (buttonState == 1) :判断按键是不是按下了,如果是,就执行大括号里让串口发 “hello”、2 号引脚输出高电平的操作。
  • else :要是按键没按下(松开状态),就执行让串口发 “hi”、2 号引脚输出低电平的操作。
  • delay(50) :短暂停顿一下,让 Arduino 检测按键状态更准确,不然可能会误判按键是按了还是没按。

六、总结

这节课我们学会了:

  1. setup() 做初始化,loop() 循环执行代码 。
  2. pinMode 设置引脚模式(输入 / 输出) 。
  3. digitalWrite 控制引脚输出电平(让小灯亮灭) 。
  4. Serial.beginSerial.println 跟电脑串口聊天 。
  5. digitalRead 读取引脚输入信号(按键状态),结合 if 判断做不同反应 。

这些知识就像积木,往后我们可以用它们搭出更有趣的 Arduino 作品,比如做个自动感应小夜灯、按键控制的流水灯 ,下节课继续探索呀!

2 条评论

  • @ 2025-7-3 22:37:09
    void setup() {
      Serial.begin(9600);
      pinMode(4,INPUT);
      pinMode(2,OUTPUT);
    }
    void loop() {
      if(digitalRead(4) == 1){      // 单分支结构
        Serial.println("hello");
        digitalWrite(2,1);
      }
      
      if(digitalRead(4) == 0){      // 单分支结构
        Serial.println("hi");
        digitalWrite(2,0);
      }
      delay(20);
    }
    
    • @ 2025-7-3 22:36:58

      以下是添加了详细注释的代码,使用简单易懂的语言解释每个步骤的功能,适合小学生理解:

      // 初始化设置:只运行一次,配置硬件连接和通信
      void setup() {
        // 开启串口通信,设置传输速度为9600波特(每秒传输9600位数据)
        // 这样我们就能在电脑上看到Arduino的输出信息啦
        Serial.begin(9600);
        
        // 将4号引脚设为输入模式(INPUT)
        // 就像给Arduino安装了一个"耳朵",用来接收外部信号(比如按钮按下)
        pinMode(4, INPUT);
        
        // 将2号引脚设为输出模式(OUTPUT)
        // 就像给Arduino安装了一个"小手",可以控制外部设备(比如点亮LED灯)
        pinMode(2, OUTPUT);
      }
      
      // 主循环:setup运行完后,这里的代码会不断重复执行
      void loop() {
        // 检测4号引脚的状态(按下按钮会连接到高电平,值为1)
        if(digitalRead(4) == 1) {      // 如果检测到按钮被按下
          Serial.println("hello");    // 通过串口发送"hello"到电脑
          digitalWrite(2, 1);         // 让2号引脚输出高电平(点亮LED)
        }
        
        // 检测4号引脚的状态(松开按钮会连接到低电平,值为0)
        if(digitalRead(4) == 0) {      // 如果检测到按钮被松开
          Serial.println("hi");       // 通过串口发送"hi"到电脑
          digitalWrite(2, 0);         // 让2号引脚输出低电平(熄灭LED)
        }
        
        // 延时20毫秒(1秒=1000毫秒)
        // 给Arduino一点"休息时间",避免检测过于频繁
        delay(20);
      }
      

      代码功能说明(用生活比喻)

      想象Arduino是一个"小机器人":

      1. setup() 函数

        • 打开"对讲机"(串口通信),准备和电脑聊天
        • 安装一个"耳朵"(4号引脚)来听按钮有没有被按下
        • 安装一个"小手"(2号引脚)来控制LED灯的亮灭
      2. loop() 函数

        • 小机器人会不停地检查"耳朵"(4号引脚)
        • 如果听到"按钮按下"(值为1),就喊"hello"(串口输出),并举起"小手"(点亮LED)
        • 如果听到"按钮松开"(值为0),就喊"hi"(串口输出),并放下"小手"(熄灭LED)
        • 每检查完一次,小机器人会休息20毫秒,再继续下一次检查

      为什么需要 delay(20)?

      • 想象你在玩"木头人"游戏,如果小机器人检查得太快(没有delay),它可能会因为太敏感而误判按钮的状态
      • 加了20毫秒的延时后,小机器人会更"冷静"地判断按钮状态,避免出现抖动或误触发
      • 这个延时时间可以根据需要调整,但不要太长,否则反应会变慢哦!
      • 1