Reading the command as 2D array

void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available()) {
char a =(int)Serial.read();
Serial.print(a[0][1]);
}
}

I want to give a command to Arduino Uno from my pc. Command will come from an array in visual studio. For example, it will give {66,90}. Arduino must identify the command in the array also. Because I need to pull these 2 numbers for my next codes.

1. Use code tags (</>) to put codes inline with the post page; your codes would appear like this:

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  if (Serial.available()) 
  {
    char a = (int)Serial.read();
    Serial.print(a[0][1]);
  }
}

2. Be literate in programming style so that opening brace ({) and closing brace (}) are vertically aligned as I have done in Step-1 for you.

3. Fix your sketch of Step-1 with respect to the following issues:
(1) The variable a is an 8-bit (char) location; why are you trying to store 16-bit value (int) returned by Serial.read();? It is enough to keep the lower 8-bit value which is the character coming form the Serial Monitor.

(2) The variable a is not an array structure; but, a[0][1] is an array element; fix this incompatibility/mismatch.

4. State clearly what you want to achieve. Do want to enter this: {66,90} from the InputBox (Fig-1) of Serial Monitor and then catch it by the UNO and then do what?


Figure-1:

It will send it to Uno via Bluetooth from my pc and it will understand make blue light 66 and red light 90. I coded all the thinks in the 2D array includes visual studio. Me to change all variables in my program will take several times. All I need is Uno to read the 2d array numbers inside. For example in it is;

analogWrite(ledb, a[0][0]);
analogWrite(ledc, a[0][1]);

The computer sends the values as {66,90}.

you may be interested in the following which I use for debugging programs. it demonstrates reading numeric values and the use of single character alpha commands.

// pcRead - debugging using serial monitor

const char version [] = "PcRead 200416a";

int debug = 0;

// ---------------------------------------------------------
// toggle output bit
void
pinToggle (
    int pin)
{
    static int  bits = 0;
    int     bit = 1 << pin;

    if (debug)  {
        Serial.print ("pinToggle: ");
        Serial.println (pin);
    }

    if (bits & bit)  {
        digitalWrite (pin, LOW);
        bits &= ~bit;
    }
    else {
        digitalWrite (pin, HIGH);
        bits |= bit;
    }
}

// ---------------------------------------------------------
// toggle output bit
int
readString (
    char *s,
    int   maxChar )
{
    int  n = 0;

    Serial.print ("> ");
    do {
        if (Serial.available()) {
            int c    = Serial.read ();

            if ('\n' == c)
                break;

            s [n++] = c;
            if (maxChar == n)
                break;
        }
    } while (true);

    return n;
}

// -----------------------------------------------------------------------------
// process single character commands from the PC
#define MAX_CHAR  10
char s [MAX_CHAR] = {};

int  analogPin = 0;

void
pcRead (void)
{

    static int  val = 13;

    if (Serial.available()) {
        int c = Serial.read ();

        switch (c)  {
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
            val = c - '0' + (10 * val);
            break;

        case 'A':
            analogPin = val;
            Serial.print   ("analogPin = ");
            Serial.println (val);
            val = 0;
            break;

        case 'D':
            debug ^= 1;
            break;

        case 'I':
            pinMode (val, INPUT);
            Serial.print   ("pinMode ");
            Serial.print   (val);
            Serial.println (" INPUT");
            val = 0;
            break;

        case 'O':
            pinMode (val, OUTPUT);
            Serial.print   ("pinMode ");
            Serial.print   (val);
            Serial.println (" OUTPUT");
            val = 0;
            break;

        case 'P':
            pinMode (val, INPUT_PULLUP);
            Serial.print   ("pinMode ");
            Serial.print   (val);
            Serial.println (" INPUT_PULLUP");
            val = 0;
            break;


        case 'a':
            Serial.print   ("analogRead: ");
            Serial.println (analogRead (val));
            val = 0;
            break;

        case 'c':
            digitalWrite (val, LOW);
            Serial.print   ("digitalWrite: LOW  ");
            Serial.println (val);
            val = 0;
            break;

        case 'p':
#if !defined(ARDUINO_ARCH_ESP32)
            analogWrite (analogPin, val);
            Serial.print   ("analogWrite: pin ");
            Serial.print   (analogPin);
            Serial.print   (", ");
            Serial.println (val);
            val = 0;
#endif
            break;

        case 'r':
            Serial.print   ("digitalRead: pin ");
            Serial.print   (val);
            Serial.print   (", ");
            Serial.println (digitalRead (val));
            val = 0;
            break;

        case 's':
            digitalWrite (val, HIGH);
            Serial.print   ("digitalWrite: HIGH ");
            Serial.println (val);
            val = 0;
            break;

        case 't':
            Serial.print   ("pinToggle ");
            Serial.println (val);
            pinToggle (val);
            val = 0;
            break;

        case 'v':
            Serial.print ("\nversion: ");
            Serial.println (version);
            break;

        case '\n':          // ignore
            break;

        case '"':
            while ('\n' != Serial.read ())     // discard linefeed
                ;

            readString (s, MAX_CHAR-1);
            Serial.println (s);
            break;

        case '?':
            Serial.println ("\npcRead:\n");
            Serial.println ("    [0-9] append to #");
            Serial.println ("    A # - set analog pin #");
            Serial.println ("    D # - set debug to #");
            Serial.println ("    I # - set pin # to INPUT");
            Serial.println ("    O # - set pin # to OUTPUT");
            Serial.println ("    P # - set pin # to INPUT_PULLUP");
            Serial.println ("    a # - analogRead (pin #)");
            Serial.println ("    c # - digitalWrite (pin #, LOW)");
            Serial.println ("    p # -- analogWrite (analogPin, #)");
            Serial.println ("    r # - digitalRead (pin #)");
            Serial.println ("    s   - digitalWrite (pin #, HIGH)");
            Serial.println ("    t   -- toggle pin # output");
            Serial.println ("    v   - print version");
            Serial.println ("    \"   - read string");
            Serial.println ("    ?   - list of commands");
            break;

        default:
            Serial.print ("unknown char ");
            Serial.println (c,HEX);
            break;
        }
    }
}

// -----------------------------------------------------------------------------
void
loop (void)
{
    pcRead ();
}

// -----------------------------------------------------------------------------
void
setup (void)
{
    Serial.begin(115200);

    Serial.println (version);
#if defined(ARDUINO_ARCH_ESP32)
    Serial.println ("esp32");
#endif
}
void loop()
{
  int a[1][2];


  if (Serial.available())
  {
    a[0][0] = Serial.parseInt();
    a[0][1] = Serial.parseInt();
    while (Serial.available()) Serial.read(); // Clear out any characters at the end of the line
    Serial.println(a[0][1]);  // Show second number of the pair
  }
}

This displays the value 90 in Serial Monitor when I type in {66,90}.

johnwasser:

void loop()

{
  int a[1][2];

if (Serial.available())
  {
    a[0][0] = Serial.parseInt();
    a[0][1] = Serial.parseInt();
    while (Serial.available()) Serial.read(); // Clear out any characters at the end of the line
    Serial.println(a[0][1]);  // Show second number of the pair
  }
}





This displays the value 90 in Serial Monitor when I type in {66,90}.

Thank you, it solved my problem. I didn't know parseInt command.