菜鸟,求大神赐教-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3565|回复: 7

[已解决] 菜鸟,求大神赐教

[复制链接]
发表于 2014-3-7 14:13 | 显示全部楼层 |阅读模式
完成->9顆LED排成 3 x 3正方形,使用 a s d w 來控制亮起的LED燈。程式一開始只有左下角的燈(#1)亮起。按下 d 會讓右邊的 LED (#2)亮起,原本的#1則熄滅。如下圖: QQ截图20140307141147.png 其它按鍵請依此類推,如果到了邊緣,請自行選擇以下兩種效果
1. 卡在邊緣(例如已經在3號位置時,再按d或s 還是會在3號)
2. 從另一邊跑出來(例如已經在3號位置時,按d 會跑到#1,按s 會跑到9號





发表于 2014-3-7 17:51 | 显示全部楼层
本帖最后由 薛定谔 于 2014-3-10 09:49 编辑

[mw_shl_code=cpp,true]int NUM[3][3] = {
{8,9,10},
{5,6,7},
{2,3,4}
};
int r,c=0;
int value=0;

void setup(){
  Serial.begin(9600);
for(int i=1;i<10;i++)
pinMode(i,OUTPUT);
}
void loop(){
    while(Serial.available()>0)
    {
     value=Serial.read();
     delay(2);
     switch(value)
    {
      case 'c':Serial.println("Ok");break;//pc端发送字符c,若返回Ok,说明连接正常
      case 'w':upgo();break;
      case 's':downgo();break;
      case 'a':leftgo();break;
          case 'd':rightgo();break;
      case ' ':;break;
     }
     
   
        for(int i=1;i<11;i++)
        digitalWrite(i,LOW);
        delay(10);
    digitalWrite(NUM[r][c],HIGH);
        delay(10);
     }
}
void upgo(){
        if (r>0)
        r=r-1;
        else
        r=2;
}
void downgo(){
        if (r<2)
        r=r+1;
        else
        r=0;
}
void leftgo(){
        if (c>0)
        c=c-1;
        else
        c=2;
}
void rightgo(){
        if (c<2)
        c=c+1;
        else
        c=0;
}[/mw_shl_code]
请叫我雷锋
 楼主| 发表于 2014-3-9 12:41 | 显示全部楼层
在arduino上怎么连线呢http://123d.circuits.io/能不能用这个排线给我看下啊,大神
 楼主| 发表于 2014-3-9 12:41 | 显示全部楼层
薛定谔 发表于 2014-3-7 17:51
[mw_shl_code=cpp,true]int NUM[3][3] = {
{7,8,9},
{4,5,6},

在arduino上怎么连线呢http://123d.circuits.io/能不能用这个排线给我看下啊,大神
发表于 2014-3-10 09:52 | 显示全部楼层
int NUM[3][3] = {
{8,9,10},
{5,6,7},
{2,3,4}
};程序改成这样,然后这些对应数字编号的引脚接LED,再串个电阻接地。LED按这些数字的排法排列。
 楼主| 发表于 2014-3-10 10:14 | 显示全部楼层
薛定谔 发表于 2014-3-10 09:52
int NUM[3][3] = {
{8,9,10},
{5,6,7},

依旧不行啊,它没有程序一开始左下角灯亮的效果
 楼主| 发表于 2014-3-10 10:18 | 显示全部楼层
薛定谔 发表于 2014-3-10 09:52
int NUM[3][3] = {
{8,9,10},
{5,6,7},

还有就是有个疑问只要引脚接led,led间要串联吗,还是怎么说,不好意思哈,刚开学研究arduino
发表于 2014-3-10 13:05 | 显示全部楼层
本帖最后由 薛定谔 于 2014-3-10 13:06 编辑

[mw_shl_code=cpp,true]int NUM[3][3] = {
{8,9,10},
{5,6,7},
{2,3,4}
};
int r,c=0;
int value=0;

void setup(){
  Serial.begin(9600);
for(int i=1;i<10;i++)
pinMode(i,OUTPUT);
}
digitalWrite(NUM[2][0],HIGH);
        delay(10);
void loop(){
    while(Serial.available()>0)
    {
     value=Serial.read();
     delay(2);
     switch(value)
    {
      case 'c':Serial.println("Ok");break;//pc端发送字符c,若返回Ok,说明连接正常
      case 'w':upgo();break;
      case 's':downgo();break;
      case 'a':leftgo();break;
          case 'd':rightgo();break;
      case ' ':;break;
     }
      
     
        for(int i=1;i<11;i++)
        digitalWrite(i,LOW);
        delay(10);
    digitalWrite(NUM[r][c],HIGH);
        delay(10);
     }
}
void upgo(){
        if (r>0)
        r=r-1;
        else
        r=2;
}
void downgo(){
        if (r<2)
        r=r+1;
        else
        r=0;
}
void leftgo(){
        if (c>0)
        c=c-1;
        else
        c=2;
}
void rightgo(){
        if (c<2)
        c=c+1;
        else
        c=0;
}[/mw_shl_code]
每个引脚单独接个LED,再传个1K左右电阻,然后接地 QQ图片20140310130344.jpg ,最后按照这样的顺序排列,如果是点阵屏的话就不能这样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 18:03 , Processed in 0.077786 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表