замок на ардуино

Тема в разделе "Arduino & Shields", создана пользователем Nikita, 28 сен 2013.

  1. Nikita

    Nikita Гик

    Хочу сделать мини сейф. Суть в следующем надо использовать 2 кнопки 2 светодиода ну и сам запирающий
    механизм. Одна на кнопка используется как датчик открытия/закрытия и после закрытие с задержкой 2 секунды доложен срабатывать замок. Вторая служит для открытия. Ну и светодиоды должны показывать состояние открытия/закрытия. Проблема в следующем не знаю как записать 2 кнопки в loope как их записать?
     
  2. Unixon

    Unixon Оракул Модератор

    ОК, а здесь вы уже всё прочитали? Если да, то в чем именно затруднение?
     
  3. Nikita

    Nikita Гик

    Я написал такой простой код который будит в моём сейфе показывать открыта или закрыта, но мне надо добавить ещё одну кнопку для открытия сейфа, но как это сделать не знаю
     
  4. Nikita

    Nikita Гик

    int led = 13;
    int led1 = 11;
    const int sensorbutton = A0;
    const int openbutton = A2;
    int buttonState = 0;

    // the setup routine runs once when you press reset:
    void setup() {
    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    pinMode(led1, OUTPUT);
    pinMode(sensorbutton, INPUT);
    pinMode(openbutton, INPUT);


    for(int i = 0; i < 8; i++)
    {
    digitalWrite(led, (i & 0x1) != 0x1);
    delay(100);
    }
    }

    // the loop routine runs over and over again forever:
    void loop() {
    buttonState = digitalRead(sensorbutton);

    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {
    delay(2000);
    digitalWrite(led1, HIGH);
    }
    else {
    // turn LED off:
    digitalWrite(led, HIGH);
    digitalWrite(led1, LOW);

    digitalWrite(led, HIGH);
    delay(1000);
    digitalWrite(led, LOW);
    delay(1000);
    }
    }
     
  5. Unixon

    Unixon Оракул Модератор

    Код (C):

    #define PIN_LED_OPENED 13
    #define PIN_LED_CLOSED 11
    #define PIN_BTN_SENSE_LOCK A0
    #define PIN_BTN_OPEN_LOCK A2

    bool lock_state = false;

    void setup()
    {
     pinMode(PIN_LED_OPENED, OUTPUT);
     pinMode(PIN_LED_CLOSED, OUTPUT);
     pinMode(PIN_BTN_SENSE_LOCK, INPUT);
     pinMode(PIN_BTN_TOGGLE_LOCK, INPUT);
     
     for(byte i = 0; i < 8; i++)
     {
      digitalWrite(PIN_LED_OPENED, (i & 0x1));
      digitalWrite(PIN_LED_CLOSED, !(i & 0x1));
      delay(100);
     }
    }

    void loop()
    {
     digitalWrite(PIN_LED_OPENED, !lock_state);
     digitalWrite(PIN_LED_CLOSED, lock_state);

     if (digitalRead(PIN_BTN_SENSE_LOCK))
     {
      delay(2000);
      lock_state = true;
     }
     if (digitalRead(PIN_BTN_OPEN_LOCK)
     {
      lock_state = false;
     }
     delay(100);
     // run locking/unlocking mechanics
     //
    }
     
     
  6. Nikita

    Nikita Гик

    а можно вот на этом примере?
     
  7. Nikita

    Nikita Гик

    Код (C):
    int ledPin1 = 13; // сетодиод1
    int ledPin2 = 12; // сетодиод2
    int btnPin1 = 11; // кнопка1
    int btnPin2 = 10; // кнопка2

    val,val2=0;

    void setup()
    {
    pinMode(ledPin1, OUTPUT); // это выход - светодиод1
    pinMode(ledPin2, OUTPUT); // это выход - светодиод2
    pinMode(btnPin1, INPUT); // а это вход - кнопка1
    pinMode(btnPin2, INPUT); // а это вход - кнопка2

    }

    void loop()
    {
    val = digitalRead(btnPin1); // узнаём состояние кнопки1
    val2 = digitalRead(btnPin2); // узнаём состояние кнопки2

    if(val==HIGH) // кнопка1 нажата
    {
    digitalWrite(ledPin1, HIGH); // зажигаем светодиод
    }
    else // кнопка1 не нажата
    {
    digitalWrite(ledPin1, LOW); // гасим светодиод1
    }

    if(val2==HIGH) // кнопка2 нажата
    {
    digitalWrite(ledPin2, HIGH); // зажигаем светодиод
    }
    else // кнопка2 не нажата
    {
    digitalWrite(ledPin2, LOW); // гасим светодиод1
    }

    delay(100);
    }
     
  8. Unixon

    Unixon Оракул Модератор

    В вашем примере ничего не сказано о том, что означают "кнопка1", "кнопка2", "светодиод1" и "светодиод2", поэтому переложить на них логику работы сейфа из первого поста невозможно.