Menu

Problem with Matrix of 8x12

Anonymous
2019-03-12
2019-03-15
  • Anonymous

    Anonymous - 2019-03-12

    Hello,
    I'am not so good in programming and want to connect a Bulls Matrix with 8x12. What characters are allowed for the var char? Only 8bit ASCII? Then I have a problem with the number of possible characters...
    Thank you for answer.
    Mike

     
  • Mike Nagel

    Mike Nagel - 2019-03-13

    Hello,
    now I'am on sourceforge ;). After I spend a bit of time I will response myself to help some others.
    To define the keymap I used the decimal value, this is much easier when you haven't the right keys on keyboard.

    const byte numRows = 9;
    const byte numCols = 12;
    const int debounceTime = 100;
    
    char keymap[numRows][numCols] = {
      {33,34,35,36,37,38,39,40,41,42,43,44},
      {45,46,47,48,49,50,51,52,53,54,55,56},
      {57,58,59,60,61,62,63,64,65,66,67,68},
      {69,70,71,72,73,74,75,76,77,78,79,80},
      {81,82,83,84,85,86,87,88,89,90,91,92},
      {93,94,95,96,97,98,99,100,101,102,103,104},
      {105,106,107,108,109,110,111,112,113,114,115,116},
      {117,118,119,120,121,122,123,124,125,126,128,129},
      {130,131,132,133,134,135,136,137,138,139,140,141}
    };
    
    byte rowPins[numRows] = {A0, A1, A2, A3, A4, A5, A6, A7, A8}; //connect to the row pinouts of the keypad
    byte colPins[numCols] = {22, 24, 26, 28, 30, 32, 34, 36, 23, 25, 27, 29};
    
    void setup()
    {
      Serial.begin(9600);
      for (int row = 0; row < numRows; row++)
      {
        pinMode(rowPins[row],INPUT);       // Set row pins as input
        digitalWrite(rowPins[row],HIGH);   // turn on Pull-ups
      }
      for (int column = 0; column < numCols; column++)
      {
        pinMode(colPins[column],OUTPUT);     // Set column pins as outputs 
                                             // for writing
        digitalWrite(colPins[column],HIGH);  // Make all columns inactive
      }
    }
    
    void loop()
    {
      char key = getKey();
      if( key != 0) {       // if the character is not 0 then 
                            // it's a valid key press
        /*Serial.print("Got key ");*/
        Serial.print(key);
      }
    }
    
    char getKey()
    {
      char key = 0;
      for(int column = 0; column < numCols; column++)
      {
        digitalWrite(colPins[column],LOW);         // Activate the current column.
        for(int row = 0; row < numRows; row++)     // Scan all rows for 
                                                   // a key press.
        {
          if(digitalRead(rowPins[row]) == LOW)     // Is a key pressed?
          {
            delay(debounceTime);                   // debounce
            while(digitalRead(rowPins[row]) == LOW)
                ;                                  // wait for key to be released
            key = keymap[row][column];             // Remember which key 
                                                   // was pressed.
          }
        }
        digitalWrite(colPins[column],HIGH);     // De-activate the current column.
      }
      return key;  // returns the key pressed or 0 if none
    }
    

    The ninth Row is for future use of Buttons.

     
    • poilou

      poilou - 2019-03-13

      Great Job Mike :)

      Make use of decimal values rocks and had never been done before !

      Cheers :)

      On 13/03/2019 16:25, Mike Nagel wrote:

      Hello,
      now I'am on sourceforge ;). After I spend a bit of time I will response myself to help some others.
      To define the keymap I used the decimal value, this is much easier when you haven't the right keys on keyboard.
      ~~~
      const byte numRows = 9;
      const byte numCols = 12;
      const int debounceTime = 100;

      char keymap[numRows][numCols] = {
      {33,34,35,36,37,38,39,40,41,42,43,44},
      {45,46,47,48,49,50,51,52,53,54,55,56},
      {57,58,59,60,61,62,63,64,65,66,67,68},
      {69,70,71,72,73,74,75,76,77,78,79,80},
      {81,82,83,84,85,86,87,88,89,90,91,92},
      {93,94,95,96,97,98,99,100,101,102,103,104},
      {105,106,107,108,109,110,111,112,113,114,115,116},
      {117,118,119,120,121,122,123,124,125,126,128,129},
      {130,131,132,133,134,135,136,137,138,139,140,141}
      };

      byte rowPins[numRows] = {A0, A1, A2, A3, A4, A5, A6, A7, A8}; //connect to the row pinouts of the keypad
      byte colPins[numCols] = {22, 24, 26, 28, 30, 32, 34, 36, 23, 25, 27, 29};

      void setup()
      {
      Serial.begin(9600);
      for (int row = 0; row < numRows; row++)
      {
      pinMode(rowPins[row],INPUT); // Set row pins as input
      digitalWrite(rowPins[row],HIGH); // turn on Pull-ups
      }
      for (int column = 0; column < numCols; column++)
      {
      pinMode(colPins[column],OUTPUT); // Set column pins as outputs
      // for writing
      digitalWrite(colPins[column],HIGH); // Make all columns inactive
      }
      }

      void loop()
      {
      char key = getKey();
      if( key != 0) { // if the character is not 0 then
      // it's a valid key press
      /Serial.print("Got key ");/
      Serial.print(key);
      }
      }

      char getKey()
      {
      char key = 0;
      for(int column = 0; column < numCols; column++)
      {
      digitalWrite(colPins[column],LOW); // Activate the current column.
      for(int row = 0; row < numRows; row++) // Scan all rows for
      // a key press.
      {
      if(digitalRead(rowPins[row]) == LOW) // Is a key pressed?
      {
      delay(debounceTime); // debounce
      while(digitalRead(rowPins[row]) == LOW)
      ; // wait for key to be released
      key = keymap[row][column]; // Remember which key
      // was pressed.
      }
      }
      digitalWrite(colPins[column],HIGH); // De-activate the current column.
      }
      return key; // returns the key pressed or 0 if none
      }

      ~~~
      The ninth Row is for future use of Buttons.


      Problem with Matrix of 8x12


      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/pydarts/discussion/general/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       
    • diego

      diego - 2019-03-15

      hi,
      what is your arduino board?

       

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.