《Arduino从基础到实践》之对向跑马LED,从两侧向中间相撞,后各自返回。

自己也在学习相关的Arduino程序,因为对c++知之甚少,再加上新入硬件领域,很多方面十分笨拙。在练习由Michael McRoberts所著的《Arduino从基础到实践》二版时,对其中的跑马灯项目十分困惑,再练习其推荐的“使LED灯带两端变量,并向对方向LED运动”一题中无从下手,持续两到三天的尝试中我完成这一个项目。给接下来的萌新一点帮助!

byte ledPin[]={3,4,5,6,7,8,9,10,11,12};/*与书中内容一样,把10个LED看做为一个主体*/
int ledDelay(100);
int direction1=-1;/*这里是对LED开始亮的方向定义,本次为从右到左,即从定义针脚12~5开始亮灯*/
int currrentLED1=9;/*此处9为其12号针脚所对为其最右面,原书有提到从0~9即为针脚3~12所对LED*/
int direction2=1;/*这里是从左到右,同上皆为定义方向*/
int currrentLED2=0;/*此处为3号针脚所对应,为最左*/
unsigned long changeTime;

void setup(){
  for (int x=0;x<10;x++){
    pinMode(ledPin[x],OUTPUT);}
  changeTime=millis();
  }
void loop(){
 
  if ((millis()-changeTime)>ledDelay){
    changeLED();
    changeTime=millis();
  }
}
void changeLED(){
  for (int x=0;x<10;x++){
    digitalWrite(ledPin[x],LOW);
    
  }
//上部分不再阐述,与原版书籍一致;下列程序只复制重复了一部分,此处参照书籍
//本题本人主要是把10个LED分为两组,分别重新定义各自运行。
digitalWrite(ledPin[currrentLED1],HIGH);
currrentLED1+=direction1;
if (currrentLED1==9)  {direction1=-1;}
if(currrentLED1==5)  {direction1=1;}
digitalWrite(ledPin[currrentLED2],HIGH);
currrentLED2+=direction2;
if (currrentLED2==4)  {direction2=-1;}
if(currrentLED2==0)  {direction2=1;}


}

上述为本人对对向碰撞LED的尝试方式,程序结构较为简陋,设计方式十分粗暴,但也不失一种方案,以此纪念自己第一小步,希望与大家共勉。谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Arduino LED两端变中间碰撞的效果,可以使用LabVIEW程序来控制Arduino Uno控制板。首先,通过设置的串口号与Arduino Uno控制板建立连接。然后,将数字管脚D13设置为输出模式。接下来,在一个While循环结构中实现LED熄灭→延时→LED→延时的循环。最后,断开与Arduino Uno控制板的连接。这样就可以实现LED两端变中间碰撞的效果。 需要注意的是,上述方法描述的程序结构相对简陋,设计方式较为粗暴。但这是一种可行的方案,可以作为初次尝试的纪念。希望能够对您有所帮助。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [LabVIEW控制Arduino LED闪烁](https://download.csdn.net/download/m0_38106923/85430615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [《Arduino基础实践》之对向跑马LED,从两侧中间相撞,后各自返回。](https://blog.csdn.net/LoveHDays/article/details/99558986)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值