цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе



Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Автор: Mike(admin) от 5-07-2023, 03:55

Данный проект предлагает создание автоматически поднимаемой мишени при попадании в нее пули или другого снаряда при практике стрельбы из пневматического пистолета, лука или прочего подобного средства.


Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Для начала необходимо взять коробку, в которую бы поместилась электронная часть. На краю коробки следует смонтировать мишень.


Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Данную мишень будет поднимать после выстрела серводвигатель, а точнее планка, прикрепленная к его валу.


Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Определение того, что мишень упала, осуществляется путем считывания состояния концевого выключателя, на который должна падать мишень.


Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Схема подключения Arduino к серводвигателю и концевику (в данном случае кнопке) представлена далее.


Автоматически восстанавливаемая мишень на основе Arduino для тренировок по спортивной стрельбе

Код программы для Arduino следующий.



#include <VarSpeedServo.h>

const int BUTTON_PIN = 7;
const int SERVO_PIN  = 9;

VarSpeedServo servo;

int angle = 0;
int lastButtonState;
int currentButtonState;
int Speed = 160;
void setup() {
  Serial.begin(9600);               
  pinMode(BUTTON_PIN, INPUT_PULLUP); 
  servo.attach(SERVO_PIN);         

  servo.write(angle);
  currentButtonState = digitalRead(BUTTON_PIN);
}

void loop() {
  lastButtonState    = currentButtonState;     
  currentButtonState = digitalRead(BUTTON_PIN); 

  if(lastButtonState == HIGH && currentButtonState == LOW) {
    Serial.println("The button is pressed");

    if(angle == 0)
      angle = 90;


    servo.write(angle,Speed/2);  
    delay(100);  
    servo.wait();    
    servo.wait();    
    servo.wait();    
    servo.wait();
  }  
  if(lastButtonState == LOW && currentButtonState == HIGH) {
    delay(100); 
    
    Serial.println("The button is released");

    if(angle == 90)
      angle = 0;

    servo.write(angle,Speed);
  }

}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий