将int变量放入数组中

Putting int variable into Array

本文关键字:数组 int 变量      更新时间:2023-10-16

所以我在圣诞节买了一个Arduino,做了一个简单的3 LED电路,并为它制作了2个动画。

我想让代码更干净,并增加动画与任何LED一起工作的可能性,而无需向动画功能添加更多代码。

我想到的一种方法(我从未使用过C++/C#)是使用一个存储LED变量的数组/字典,并通过循环遍历数组/字典来点亮LED。我该怎么做?这可能吗?

我现在有这个:

std::map<std::char, std::int> x = {{led, 9}, {led2, 6}, {led3, 5}};

CCD_ 1是用于LED的跳线插入的位置。

很抱歉,如果这一切都是愚蠢和丑陋的,就像我说的,我从未使用过C#/C++,我只使用过RBX、Lua和Python。

首先,祝贺Arduino-它非常适合学习。

我现在有这个:

std::map<std::char, std::int> x = {{led, 9}, {led2, 6}, {led3, 5}};

你不需要所有这些来为Arduino上的一些LED设置动画。您只需使用字节数组或矢量来存储连接LED的引脚号,并根据这些值启动动画。或者,如果您想引用它们,例如Green_led1、Blue_led1。。您可以使用枚举,其中的值表示向量/数组中的位置。但最好不要使用字符串(或char)。

由于空间在Arduino上是有限的,因此最好习惯使用尽可能小的数据结构(在这种情况下,每个LED有1个字节,枚举不会占用空间)。

但为了更多的乐趣,你甚至可以做得更好:

根据您拥有的Arduino类型,您可以直接使用8-bit PORT。这样,该字节中的每个位将表示相应LED的开/关状态。但更有趣的是一次将整个字节写入PORT的能力。要设置动画,可以使用位偏移。请注意,Arduino引脚编号与AVR芯片上的引脚编号不同

std::map<std::string, std::int> x = {{"led", 9}, {"led2", 6}, {"led3", 5}};  

或者使用LED的枚举或仅使用数字

您可以按照以下方式进行编码:

#include <stdio.h>
#include <map>
int main()
{
    enum LedType {
      LedInvalid = 0,
      LedOne = 9,
      LedTwo = 6,
      LedThree = 5,
    };
    std::map<LedType, int> x = { { LedOne, 9 }, { LedTwo, 6 }, { LedThree, 5 } };
    printf("%d %d %dn", x[LedOne], x[LedTwo], x[LedThree]);
}