Изобретаю велосипед на матричной клавиатуре 4х4.

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем 1590kazak1590, 28 июл 2015.

  1. 1590kazak1590

    1590kazak1590 Нерд

    Собственно сам концепт был такой:
    Нажимаем кнопку, определяем положение, записываем в переменную нужную цифру.
    Чтобы составлять числа использовал обычное сложение и умножение на степень десятки.

    Но что-то не получилось...

    Пожалуйста, помогите найти ошибку.

    Код (Text):
    #define  Svitch_123A  P1  //директива назначить контакт на ряд 1 в матричной клавиатуре 4х4
    #define  Svitch_456B  P2  //директива назначить контакт на ряд 2 в матричной клавиатуре 4х4
    #define  Svitch_789C  P3  //директива назначить контакт на ряд 3 в матричной клавиатуре 4х4
    #define  Svitch_0D  P4  //директива назначить контакт на ряд 4 в матричной клавиатуре 4х4

    #define  Svitch_147  P5  //директива назначить контакт на столбец 1 в матричной клавиатуре 4х4
    #define  Svitch_2580  P6  //директива назначить контакт на столбец 2 в матричной клавиатуре 4х4
    #define  Svitch_369  P7  //директива назначить контакт на столбец 3 в матричной клавиатуре 4х4
    #define  Svitch_ABCD  P8  //директива назначить контакт на столбец 4 в матричной клавиатуре 4х4

    int exponent = 0;
    int number = 0;
    long password = 0;
    void setup()
    {
      pinMode(Svitch_123A,OUTPUT);
      pinMode(Svitch_456B,OUTPUT);
      pinMode(Svitch_789C,OUTPUT);
      pinMode(Svitch_0D,OUTPUT);
      pinMode(Svitch_147,INPUT);
      pinMode(Svitch_2580,INPUT);
      pinMode(Svitch_369,INPUT);
      pinMode(Svitch_ABCD,INPUT);
     
    Serial.begin(9600);
    }

    void loop()
    {
      digitalWrite(Svitch_123A,1); delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 1 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_2580)==1);
                  {number = 2 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 3 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_123A,0);
      delay(10);
      digitalWrite(Svitch_456B,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 4 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number;}
                  if (digitalRead(Svitch_2580)==1);
                  {number = 5 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 6 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_456B,0);
      delay(10);
      digitalWrite(Svitch_789C,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 7 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_2580)==1);
                  {number = 8 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 9 * pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_789C,0);
      delay(10);
      digitalWrite(Svitch_0D,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {password = 0;}
                  if (digitalRead(Svitch_2580)==1);
                  {number = pow(10, exponent);
                  delay(100);
                  exponent ++;
                  password = password + number; }
              //    if (digitalRead(Svitch_369)==1);
              //    {number = 9 * pow(10, exponent);
              //    delay(100);
              //    exponent ++; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_0D,0);
      delay(10);
      Serial.println(password);
     
    }
     
  2. 1590kazak1590

    1590kazak1590 Нерд

    Одну ошибку нашёл, из меня фиговый математик :)

    Код (Text):
    #include "Wire.h"      //библиотеки
    #include "Strela.h"    //библиотеки

    #define  Svitch_123A  P1  //директива назначить контакт на ряд 1 в матричной клавиатуре 4х4
    #define  Svitch_456B  P2  //директива назначить контакт на ряд 2 в матричной клавиатуре 4х4
    #define  Svitch_789C  P3  //директива назначить контакт на ряд 3 в матричной клавиатуре 4х4
    #define  Svitch_0D  P4  //директива назначить контакт на ряд 4 в матричной клавиатуре 4х4

    #define  Svitch_147  P5  //директива назначить контакт на столбец 1 в матричной клавиатуре 4х4
    #define  Svitch_2580  P6  //директива назначить контакт на столбец 2 в матричной клавиатуре 4х4
    #define  Svitch_369  P7  //директива назначить контакт на столбец 3 в матричной клавиатуре 4х4
    #define  Svitch_ABCD  P8  //директива назначить контакт на столбец 4 в матричной клавиатуре 4х4

    int exponent = 0;
    int number = 0;
    long password = 0;
    void setup()
    {
      pinMode(Svitch_123A,OUTPUT);
      pinMode(Svitch_456B,OUTPUT);
      pinMode(Svitch_789C,OUTPUT);
      pinMode(Svitch_0D,OUTPUT);
      pinMode(Svitch_147,INPUT);
      pinMode(Svitch_2580,INPUT);
      pinMode(Svitch_369,INPUT);
      pinMode(Svitch_ABCD,INPUT);
     
    Serial.begin(9600);
    }

    void loop()
    {
      digitalWrite(Svitch_123A,1); delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 1;
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_2580)==1);
                  {number = 2 ;
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 3;
                  delay(100);
                  exponent ++;
                  password = password * pow(10, exponent) + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_123A,0);
      delay(10);
      digitalWrite(Svitch_456B,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 4;
                  delay(100);
                  exponent ++;
                  password = password + number;}
                  if (digitalRead(Svitch_2580)==1);
                  {number = 5;
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 6;
                  delay(100);
                  exponent ++;
                  password = password * pow(10, exponent) + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_456B,0);
      delay(10);
      digitalWrite(Svitch_789C,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {number = 7;
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_2580)==1);
                  {number = 8;
                  delay(100);
                  exponent ++;
                  password = password + number; }
                  if (digitalRead(Svitch_369)==1);
                  {number = 9;
                  delay(100);
                  exponent ++;
                  password = password * pow(10, exponent) + number; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_789C,0);
      delay(10);
      digitalWrite(Svitch_0D,1);delay (10);
                  if (digitalRead(Svitch_147)==1);
                  {password = 0;}
                  if (digitalRead(Svitch_2580)==1);
                  {number = 0;
                  delay(100);
                  exponent ++;
                  password = password * pow(10, exponent) + number; }
              //    if (digitalRead(Svitch_369)==1);
              //    {number = 9 * pow(10, exponent);
              //    delay(100);
              //    exponent ++; }
                // if (digitalRead(Svitch_ABCD)==1);
                // {);
                // exponent ++; }
      digitalWrite(Svitch_0D,0);
      delay(10);
      Serial.println(password);
     
    }