Управление сервоприводом, помогите

filosof88
Offline
Зарегистрирован: 20.12.2019

Ребят, имел неосторожность пообещать помочь добрым людям на благородных началах.
Бился с кодом сам(умение кодить немного ниже нуля) две недели, но ничего не получается(удивительно). 

Задача: 
сервопривод (SG90) 1шт

Ардуино nano 3 (ATmega 168) 1шт

Кнопка(сухие контакты) 2шт

При нажатии кнопки №1 (без разницы краткое нажатие или длинное нажатие), сервопривод прокрутится в одну сторону и останется в этом положении. 

При нажатии кнопки №2 (без разницы кратко или зажать) сервопривод прокрутится в другую сторону и остановится. 

До нажатия на другую кнопку состояние серво не меняется (то-есть нажимаю кнопку №1 один раз, серво прокрутился, нажимаю второй, третий, зажимаю/отпускаю, ничего не меняется. Нажимаю кнопку №2, сервик крутится в другую сторону.)

Угол смогу потом подобрать сам.

У меня же получается, если я нажимаю на кнопку более секунды, после отпускания почему то сервопривод крутится обратно, проявляется это время от времени, ошибка плавающая почему то. И если можно, добавьте пожалуйста в код экономию батарейки.

Очень надеюсь на Вашу помощь.

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Серва, экономия батарейки, неизвестные добрые люди... Вы из какого мира к нам пришли?

filosof88
Offline
Зарегистрирован: 20.12.2019

А из какого мог ? :) Серво для щеколды, это замок в столе должен быть, к столу постоянного питания подвести невозможно, так бы электромагнит обычный поставил бы на ббп 12в. Люди добрые, очень. Поверьте :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ну, раз обещал, придётся выкручиваться. 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А результаты усилий в плане программы увидеть можно? А то запросы типа "напишите программу" - это в платный раздел форума.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

filosof88 пишет:

имел неосторожность пообещать

Пообещал - делай! Не можешь сам - заказывай в платном разделе, но всё равно делай. Мужик ты? Или мимо проходил?

filosof88
Offline
Зарегистрирован: 20.12.2019
 


#define servoMin 50
#define servoMax 150
#define close_button 0
#else
#define close_button 1
#endif
#include <Servo.h>
#define servo_pin A3
Servo servo;
#include <EEPROMex.h>
void setup() {
  Serial.begin(9600); 
  if (vol_calibration) calibration(); 
  my_vcc_const = EEPROM.readFloat(1000);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(set_pass_btn, INPUT_PULLUP);
  pinMode(tail_pin, INPUT_PULLUP);
  attachInterrupt(0, inside_btn, FALLING);
   attachInterrupt(1, outside_btn, FALLING);
}

    servo.attach(servo_pin);          
    servo.write(servoMin);              
    delay(500);                       
    servo.detach();                      
#endif
    Serial.println("Open door");
    if (!close_button) {
      door_state = 0; 


    servo.attach(servo_pin);        
    servo.write(servoMax);        
    delay(500);                   
    servo.detach();             

    Serial.println("Close door");
    door_state = 0;
    delay(500);
}

Вот такая фигня получилась. 

Если есть кто помочь может, помогите пожалуйста, или закрыть тему и идти нафиг?

 
 
b707
Offline
Зарегистрирован: 26.05.2017

filosof88 пишет:

Вот такая фигня получилась.

это еще очень мягко сказано....

Цитата:
Если есть кто помочь может, помогите пожалуйста, или закрыть тему и идти нафиг?

думаю лучше закрыть

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Интересно, это откуда было сдёрнуто?

а вообще для ящечга обычного гвоздя и магнитика всегда хватало

sadman41
Offline
Зарегистрирован: 19.10.2016

За што же добрых людей таким кодом по кумполу...

kalapanga
Offline
Зарегистрирован: 23.10.2016

Как-то не стыкуется вот этот текст

filosof88 пишет:

У меня же получается, если я нажимаю на кнопку более секунды, после отпускания почему то сервопривод крутится обратно, проявляется это время от времени, ошибка плавающая почему то.

и представленный набор строк, который даже не компилируется.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Сдёрнул откуда-то какую-то херню, которая не будет компилироваться, бьёт себя пяткой в грудь, что "я пыталься!", приплетает каких-то выдуманных знакомых - в этом вся суть ленивого современного студиозуса.

Имхо, конечно.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Уважаемый, а нахрена Вам прерывания в этой высокоинтелектуальной программе? Может по простому - кнопочку нажал - действие выполнилось?