在 arduino 中将小阵列分解为更大的阵列以进行盲文应用

问题描述

我不太倾向于使用 arduino,但这次我卡在了这部分。

我正在尝试为我有残疾和视力障碍的朋友提供盲文翻译器。这个数组的每一列遇到1

时都会有一个穿孔
int arr[][50] = {
  { 0,0 },{ 0,0 }
};

这是我的数组,它将存储所有的点,这意味着 1 是一个点,0 是一个空格。我不知道的预期结果String str_in="A B C" 应该

int arr[][50] = {
  { 1,1,0 }
};

每两个字符应该是一个字母。

但我只能在数组中添加一个字母来替换内容,并且总是以字母“ C ”结尾,例如,我知道这可能是语法错误。但是我尝试了很多方法都没有成功。

我有这个方法可以将翻译后的字母复制到代码的循环体中到我的主数组中。

void copiar(int jj[][2])
{
  for (int letra = 0; letra < 50;) {
    for (int i = 0; i < 3; i++)
      for (int j = 0; j < 2; j++)
        arr[i][letra] = jj[i][j];
    letra = letra + 2;
  }
}

为了翻译每个盲文字符,我使用这种方法来翻译字符串中的每个字母,并给出字母的大小写。

void MatrixB(char a)
{
    switch (a) {
        case 'a': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'b': {
                int k[][2] = { { 1,{ 1,0 } };
                copiar(k);
            } break;
            
        case 'c': {
                int k[][2] = { { 1,1 },0 } };
                copiar(k);
            } break;
            
        case 'd': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'e': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'f': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'g': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'h': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'i': {
                int k[][2] = { { 0,0 } };
                copiar(k);
            } break;
            
        case 'j': {
                int k[][2] = { { 0,0 } };
                copiar(k);
            } break;
            
        case 'k': {
                int k[][2] = { { 0,0 } };
                copiar(k);
            } break;
            
        case 'l': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'm': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'n': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'o': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'p': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'q': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'r': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 's': {
                int k[][2] = { { 0,0 } };
                copiar(k);
            } break;
            
        case 't': {
                int k[][2] = { { 0,0 } };
                copiar(k);
            } break;
            
        case 'u': {
                int k[][2] = { { 1,1 } };
                copiar(k);
            } break;
            
        case 'v': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'w': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'x': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'y': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
            
        case 'z': {
                int k[][2] = { { 1,0 } };
                copiar(k);
            } break;
    }
}

我的循环体声明了这个 MatrixB 函数,所以每次遇到一个字母时,它都会将它添加到我的主数组中 arr 使用 copiar() 方法

我的循环体看起来像这样:

void loop() {
    for (int i = 0; i <= in_str.length() - 1; i++) {
        if (String(in_str.charat(i)) != " ") {
            
            MatrixB(toLowerCase(in_str.charat(i)));
            printA(arr);
            delay(200);
        }
        else if (String(in_str.charat(i)) == " ") {
            Serial.println("Aqui va un espacio");
        }
    }
    //printA(arr);
    delay(500);
}

这张纸有 50 个字符的限制,这就是为什么我要做这么大的数组。也因为我不知道是否还有其他方法

我不是 arduino 代码或 C++ 的专家,所以任何类型的指导和帮助都会有所帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)