【问题标题】:Challenge - Arduino returning multiple arrays挑战 - Arduino 返回多个数组
【发布时间】:2015-08-15 00:53:39
【问题描述】:

好的,在过去的几个小时里,我试图用 arduino 做一个锁

-有4个按钮,每个都有数字(1,2,3,4) - 你有 8 个代码空间

所以我开始使用可以更改密码的功能。 (b1s .... 是按钮状态)

问题是,有没有比将数组的每个部分都转换为 int 更容易的方法?感谢您有一个愉快的一天!

  int passwordCreate() {
    int x1[9];
    int x2[9];
    int x3[9];
    int x4[9];
    int a=9;
    int c=0;
    int space[a];
    while(c < a) {
      if(b1s==HIGH) {
        x1[c]==c+1;
        x2[c]==0;
        x3[c]==0;
        x4[c]==0;
        c++;
      }
      else if(b2s==HIGH) {
        x1[c]==0;
        x2[c]==c+1;
        x3[c]==0;
        x4[c]==0;
        c++;
      }
      else if(b3s==HIGH) {
        x1[c]==0;
        x2[c]==0;
        x3[c]==c+1;
        x4[c]==0;
        c++;
      }
      else if(b4s==HIGH) {
        x1[c]==0;
        x2[c]==0;
        x3[c]==0;
        x4[c]==c+1;
        c++;
      }
    }

【问题讨论】:

  • 用户是否最初输入了所需的锁组合并且此信息以字符形式接收?
  • 同理,当你使用设置新密码的功能时(它的按钮4,你登录后),你可以将这4个按钮任意组合,最多8次,也就是说你可以设置 b1 b2 b1 b3 b2 b4 b3 等
  • 为什么不使用单个数组来存储密码?那会更容易。 [ 1, 2, 1, 3, 2, 4 ,3, 1 ]数组本身存储了序列的顺序和按钮。您可以将它们存储为uint8_t,因为这是所需的最小长度。如果您愿意,我可以为此写下答案,以及您在按下按钮时必须考虑的其他事项。

标签: c++ c arrays arduino


【解决方案1】:

更优雅的代码是:

int main() {
    int x[4][9];
    //...
    passwordCreate(x);
    //...
    return(0);
}

void passwordCreate(int x[4][9]) {
    int i;
    int a=9;
    int c=0;
    int space[a];
    while(c < a) {
        for (i=0; i<4; i++)x[i][c]= 0;
        if     (b1s==HIGH) x[0][c]= ++c;
        else if(b2s==HIGH) x[1][c]= ++c;
        else if(b3s==HIGH) x[2][c]= ++c;
        else if(b4s==HIGH) x[3][c]= ++c;
    }
}

(并使用= 进行分配,而不是==。)

(编辑:展示了如何调用和返回数组。)

注意:如果所有 bIs 都为低,则存在无限循环。

注意:任何时候只有一个 bI 可能是高的(任何下一个高的 bI 都将被忽略)

【讨论】:

  • =++c 替换=c+1; 似乎更好。即使所有bXs 都是LOW
  • int passwordCreate(int x[4][9]),所以在调用中传递数组。
  • 所以我可以像 int newPassword = passwordCreate();在函数中我可以写 return(x[4][9]); ???
  • Michael,请参阅我的编辑版本,了解如何“返回”数组(也就是说,您不必在调用中传递它)。
  • 好的。所以现在,如果我想在 main 中使用该数组,我该如何调用它?就像返回数组的名称是什么? X[#][#]?我对吗?还有一个问题,我可以比较整个数组吗?就像它们都一样?
猜你喜欢
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多