Помощь в создании проекта

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
Название темы должно отражать содержимое
Всем привет. Очень нужна ваша помощь.
Суть такова, хочу сделать макет Плазменного резака из Dead Space. Нашел довольно подробный мануал как его сделать из простых материалов, но у автора это просто макет с подвижным курком.
Суть идеи в том, чтобы сделать подвижную переднюю часть (посадив на сервопривод) и вмонтировать три лазера.
Лазеры должны включаться от спускового крючка, а серва по нажатию отдельного регулятора.
В моделизме опыт есть, но вот с ардуинками еще не работал, может кто подсказать с какими сложностями я могу столкнуться и если есть свободное время, то помочь советом?
 

microsystems

✩✩✩✩✩✩✩
2 Ноя 2019
17
2
г.Барнаул, РФ
Вы можете нарисовать блок-схему вашего устройства, в произвольном виде изобразив модули ардуино с набором необходимых входящих и выходящих сигналов, не вдаваясь в суть работы модулей, но изложив общий алгоритм работы устройства. Думаю, в таком случае, найдутся желающие Вам помочь. Но Вы должны сами проявить инициативу - поставить задачу.
 

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
Вы можете нарисовать блок-схему вашего устройства, в произвольном виде изобразив модули ардуино с набором необходимых входящих и выходящих сигналов, не вдаваясь в суть работы модулей, но изложив общий алгоритм работы устройства. Думаю, в таком случае, найдутся желающие Вам помочь. Но Вы должны сами проявить инициативу - поставить задачу.
Да, спасибо большое за направление меня в нужное русло. Обязательно все нарисую в ближайшее время.
 

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
Вот примерная схема даже с почти точным расположением элементов
Схема.jpg
 
Последнее редактирование:

SashaPetrov

✩✩✩✩✩✩✩
22 Май 2019
31
4
Кнопка на привод как кнопка или как выключатель?
Движение сервы единичное или постоянное?
 

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
Кнопка на привод как кнопка или как выключатель?
Движение сервы единичное или постоянное?
Кнопка должна переключать привод в состояние 0 - 90 - 0
Движение единичное. То есть 0 исходное положение, по нажатию кнопки поворот на 90 градусов. по следующему нажатию возврат на 0.

Ну или движение осуществляется пока кнопка нажата, мне не принципиально, просто если какой-то из этих вариантов быдет проще реалиховать - нужно выбрать его))
 
  • Лойс +1
Реакции: SashaPetrov

SashaPetrov

✩✩✩✩✩✩✩
22 Май 2019
31
4
как-то так :

#define btn_led_pin 2 //пин подключения кнопки для светодиода
#define btn_ser_pin 3 //пин подключения кнопки для сервы
#define ser_pin 4 //пин подключения сервы
#define led_pin 13 //пин подключения светодиода
#define led_blink 800 //длина импульса мирцания светодиода
#define btn_blink 100 //антидребезг на кнопку

#include <Servo.h>
Servo ser;

bool ser_btn_flag;
bool led_btn_flag;

bool led_flag;

long timer_led,
timer_btn;

void setup() {
ser.attach(ser_pin);
}

void loop() {
if(millis - timer_btn >= btn_blink){
bool led = digitalRead(btn_led_pin);
bool serv = digitalRead(btn_ser_pin);
if(led == 1 || led_btn_flag == 0){
timer_led = millis();
led_btn_flag == 1;
}else if(led == 0 || led_btn_flag == 1){
timer_led = 0;
led_btn_flag == 0;
digitalWrite(led_pin, 0);
}

if(serv == 1 || ser_btn_flag == 0){
ser.write(90);
ser_btn_flag = 1;
}else if(serv == 0 || ser_btn_flag == 1){
ser.write(0);
ser_btn_flag = 0;
}
}
if(timer_led != 0 || millis() - timer_led >= led_blink){
if(led_flag){
digitalWrite(led_pin, 1);
}else{
digitalWrite(led_pin, 0);
}
}
}
 
  • Лойс +1
Реакции: Shaman_NN

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
как-то так :

#define btn_led_pin 2 //пин подключения кнопки для светодиода
#define btn_ser_pin 3 //пин подключения кнопки для сервы
#define ser_pin 4 //пин подключения сервы
#define led_pin 13 //пин подключения светодиода
#define led_blink 800 //длина импульса мирцания светодиода
#define btn_blink 100 //антидребезг на кнопку

#include <Servo.h>
Servo ser;

bool ser_btn_flag;
bool led_btn_flag;

bool led_flag;

long timer_led,
timer_btn;

void setup() {
ser.attach(ser_pin);
}

void loop() {
if(millis - timer_btn >= btn_blink){
bool led = digitalRead(btn_led_pin);
bool serv = digitalRead(btn_ser_pin);
if(led == 1 || led_btn_flag == 0){
timer_led = millis();
led_btn_flag == 1;
}else if(led == 0 || led_btn_flag == 1){
timer_led = 0;
led_btn_flag == 0;
digitalWrite(led_pin, 0);
}

if(serv == 1 || ser_btn_flag == 0){
ser.write(90);
ser_btn_flag = 1;
}else if(serv == 0 || ser_btn_flag == 1){
ser.write(0);
ser_btn_flag = 0;
}
}
if(timer_led != 0 || millis() - timer_led >= led_blink){
if(led_flag){
digitalWrite(led_pin, 1);
}else{
digitalWrite(led_pin, 0);
}
}
}
Огромное спасибо, дожидаюсь всех компонентов и обязательно запилю))
 

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
как-то так :

#define btn_led_pin 2 //пин подключения кнопки для светодиода
#define btn_ser_pin 3 //пин подключения кнопки для сервы
#define ser_pin 4 //пин подключения сервы
#define led_pin 13 //пин подключения светодиода
#define led_blink 800 //длина импульса мирцания светодиода
#define btn_blink 100 //антидребезг на кнопку

#include <Servo.h>
Servo ser;

bool ser_btn_flag;
bool led_btn_flag;

bool led_flag;

long timer_led,
timer_btn;

void setup() {
ser.attach(ser_pin);
}

void loop() {
if(millis - timer_btn >= btn_blink){
bool led = digitalRead(btn_led_pin);
bool serv = digitalRead(btn_ser_pin);
if(led == 1 || led_btn_flag == 0){
timer_led = millis();
led_btn_flag == 1;
}else if(led == 0 || led_btn_flag == 1){
timer_led = 0;
led_btn_flag == 0;
digitalWrite(led_pin, 0);
}

if(serv == 1 || ser_btn_flag == 0){
ser.write(90);
ser_btn_flag = 1;
}else if(serv == 0 || ser_btn_flag == 1){
ser.write(0);
ser_btn_flag = 0;
}
}
if(timer_led != 0 || millis() - timer_led >= led_blink){
if(led_flag){
digitalWrite(led_pin, 1);
}else{
digitalWrite(led_pin, 0);
}
}
}

посмотрел и решил попроще все сделать по гайдам от Алекса


#include <Servo.h>

Servo servo1;

int led_pin=3; // пин подключения
int button_pin = 4; // пин кнопки
void setup() {
servo1.attach(9); // attaches the servo on pin 5 to the servo object
pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода.
pinMode(button_pin, INPUT); // Инициализируем цифровой вход/выход в режиме входа.
}
void loop() {
int potent = analogRead(5);
potent = map(potent, 0, 1023, 0, 90);
servo1.write(potent);
delay(2);
if (digitalRead(button_pin) == HIGH) { // Если кнопка нажата
digitalWrite(led_pin, HIGH);// зажигаем светодиод

}
else { //Иначе
digitalWrite(led_pin, LOW);// выключаем светодиод
}

}

Еще раз спасибо за помощь))
 
Последнее редактирование:

SashaPetrov

✩✩✩✩✩✩✩
22 Май 2019
31
4
посмотрел и решил попроще все сделать по гайдам от Алекса
if (digitalRead(button_pin) == HIGH) { // Если кнопка нажата
digitalWrite(led_pin, HIGH);// зажигаем светодиод

}
else { //Иначе
digitalWrite(led_pin, LOW);// выключаем светодиод
}
Тут ардуинка будит лишней, подключай на прямую.
 

Shaman_NN

✩✩✩✩✩✩✩
25 Ноя 2019
8
2
Ага, такое тоже в голову приходило, но я все же попробую сделать сначала концепт попроще, а в процессе буду усложнять и навешивать дополнительные плюшки. Еще раз спасибо за помощь))
 
  • Лойс +1
Реакции: SashaPetrov