Arudio项目实战——001 Flash Light(闪烁灯)

此代码示例展示了如何使用Arduino控制RGBLED灯进行闪烁,并通过MeDCMotor类管理电机的运动。在setup函数中,RGBLED以绿色每秒闪烁一次。loop函数则保持这一循环。文章还提及了光敏电阻和蜂鸣器的定义,但未在代码中实际使用。
摘要由CSDN通过智能技术生成

Arudio项目实战——001 Flash Light(闪烁灯)

实现灯的交替闪烁

Cblock源码

在这里插入图片描述

Cblock转Arduino源代码

//核心库
#include <Arduino.h>
//通信库
#include <Wire.h>
#include <SoftwareSerial.h>
//Me-motor模块库(蜂鸣器)
#include <MeMCore.h>

//定义电机9号和10号
MeDCMotor motor_9(9);
MeDCMotor motor_10(10);
//移动函数,方向和速度为参数
void move(int direction, int speed)
{
      int leftSpeed = 0;
      int rightSpeed = 0;
      //根据方向参数设置左右电机速度
      if(direction == 1){//前进
          leftSpeed = speed;
          rightSpeed = speed;
      }else if(direction == 2){//后退
          leftSpeed = -speed;
          rightSpeed = -speed;
      }else if(direction == 3){//左转
          leftSpeed = -speed;
          rightSpeed = speed;
      }else if(direction == 4){//右转
          leftSpeed = speed;
          rightSpeed = -speed;
      }
      //让电机转动,M1为左电机,M2为右电机
      motor_9.run((9)==M1?-(leftSpeed):(leftSpeed));//当电机9号为M1时,速度取反,否则不变
      motor_10.run((10)==M1?-(rightSpeed):(rightSpeed));//当电机10号为M1时,速度取反,否则不变
}
//
double angle_rad = PI/180.0;//角度转弧度,PI为圆周率
double angle_deg = 180.0/PI;//弧度转角度,PI为圆周率
//定义光敏电阻6号
MeLightSensor lightsensor_6(6);//光敏电阻
MeBuzzer buzzer;//定义蜂鸣器
MeRGBLed rgbled_7(7, 7==7?2:4);//RGB LED类型



void setup(){
    for(int __i__=0;__i__<10;++__i__)//闪烁10次
    {
        rgbled_7.setColor(0,100,0,0);//(红色,绿色,蓝色,亮度)
        rgbled_7.show();
        _delay(1);
        rgbled_7.setColor(0,0,0,0);
        rgbled_7.show();
        _delay(1);
    }
    
}

void loop(){
    
    
    _loop();
}

void _delay(float seconds){
    long endTime = millis() + seconds * 1000;//结束时间=当前时间+延时时间*1000
    while(millis() < endTime)_loop();//如果当前时间小于结束时间,则执行_loop()函数
}

void _loop(){
}

代码解释

这段代码主要实现控制电机和 RGB LED 的类的使用。

  1. 包含了 常用库的头文件,Arduino.h 为核心库,Wire.h 和 SoftwareSerial.h 为通信库,MeMCore.h 是 Me-motor 模块的库。
  2. MeDCMotor 类来控制电机9号和电机10号,并定义了一个 move 函数用来移动机器人。 定义了角度和弧度之间的转换公式,
    angle_rad 是角度转弧度的公式, angle_deg 是弧度转角度的公式。 定义了 RGB LED 灯7号,使用
  3. MeRGBLed 类来控制 RGB LED 灯。 在setup中,控制RGB灯每间隔1s闪烁一次。在setup中,通过rgbled_7.setColor(0,100,0,0)来设置颜色。
  4. _loop() 函数没有实际作用,可能是作者的编码习惯
    最后还有_loop()和_delay()两个函数,_loop()函数没有任何操作,它可能是留给用户自定义操作的。_delay()函数接收一个float类型的参数seconds,
    这个函数会在millis()+ seconds * 1000 毫秒后结束,并在循环内部调用_loop()函数,
    这段函数可能用于实现类似于普通的 delay()函数的功能。

代码优化

#include <Arduino.h>//核心库
//通信库
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeMCore.h>//模块库

MeRGBLed rgbled_7(7, 7==7?2:4);
void setup(){
}
void loop(){//重复执行
  rgbled_7.setColor(0,100,0,0);//绿色
  rgbled_7.show();//执行
  delay(1000);//持续1s 
  rgbled_7.setColor(0,0,0,0);//黑色
  rgbled_7.show();
  delay(1000);
}


优化解释

这段代码通过利用类 MeRGBLed,实现了 RGB LED 绿灯闪烁的效果。

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <MeMCore.h>

这几行是包含了常用库的头文件,Arduino.h 为核心库,Wire.h 和 SoftwareSerial.h 为通信库,MeMCore.h 是 Me-motor 模块的库。

MeRGBLed rgbled_7(7, 7==7?2:4);

这行代码通过定义 MeRGBLed 类的对象 rgbled_7 ,来控制编号为 7 的 RGB LED 灯,第二个参数 (7==7?2:4) 是 RGB LED 的类型,这里使用了三目运算符 ?: ,如果 7 == 7 为 true,则类型为 2,否则为 4。

void setup(){
}

这部分是 setup 函数,在程序开始时执行一次。这里并没有任何代码,所以该函数没有执行任何操作。

void loop(){
  rgbled_7.setColor(0,100,0,0);
  rgbled_7.show();
  delay(1000);
  rgbled_7.setColor(0,0,0,0);
  rgbled_7.show();
  delay(1000);
}

这部分是 loop 函数,它在程序开始后会不断重复执行。这里的代码中调用了 rgbled_7.setColor(0,100,0,0) 和 rgbled_7.show() 设置颜色为绿色并将其点亮,然后调用 delay(1000) 持续 1s。之后调用 rgbled_7.setColor(0,0,0,0) 和 rgbled_7.show() 设置颜色为黑色并熄灭 LED 灯,再调用 delay(1000) 持续 1s,这样循环执行,就实现了 RGB LED 灯闪烁的效果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值