Как заставить серву добавлять или убирать 5-10 градусов по нажатию двух кнопок.
- Войдите на сайт для отправки комментариев
Втр, 06/06/2017 - 17:39
История такая: обьект двигается, при достижении цели запускается серво и поворачивается на 45 градусов.
После чего оператор должен иметь возможность изменить этот угол в + или -.
шаг 5 градусов и есть ограничение в максимальном значении 30 градусов и 65.
Никак не могу понять как это сделать (((
ардурино только осваиваю...
Только недавно понял как вообще заставить программу "подождать" до нажатия на кнопку что бы по кругу все не крутилось)) сделал это с помощью while.
Кстати как еще можно затормозить исполнение ?
#include <Servo.h>
//моторы
const int en1 = 11;//Двигатель
const int in2 = 7;
const int in6 = 6;
int button2 = 2; //КНОПКА2
int buttom4= 4; //КНОПКА4
int i;
int b;
//серво
Servo myservo;
Servo myservo2;
void setup()
{
digitalWrite (in2,LOW);
digitalWrite (in6,HIGH);
analogWrite (en1, 255);
myservo.attach(9);
myservo2.attach(10);
Serial.begin (9600);
pinMode (buttom4, OUTPUT);
pinMode (button2, OUTPUT);
}
void loop()
{
int RESULT;
myservo.write (45);//серва которая поворачивает
while (digitalRead(button2) != HIGH)//цикл который не дает программе завериться и в нем планировалось дать возможность оператору менять угол.
{
delay (250);
i= myservo.read();
if (digitalRead (buttom4) == HIGH)//наращиваем угол
{
++i;
myservo.write (i);
Serial.print(i);
Serial.println();
if (i>55) //вроде как ограничение угла
{
i=56;
}
}
}
}
А у меня это гранаты не той системы. Блин оговорился код не такой.
Я только пару недель как осваиваю arduino и с программированием только знакомлюсь. Спасибо за ответ, пока для меня ваш код не четабелен :) пойду книжки почитаю.
Кстати если написать банальный код аля:
Он имеет право на жизнь?:)
Попробуй поймешь. Пронраммирование это наука практическая. Не важно, что вам могут наговорить, зальете код и вам станет ясно. И да , маленькое замечание. Легкая планка входа в Ардуину ведет в никуда, топтание на месте. Так что если хотите пользы от Ардуины, берите серьезные книги, а не лабуду от Джереми Блюма и прочих.
Спасибо за ценный совет! Я почти сразу заподозрил неладное, вы мои сомнения подтвердили.
Если не сложно посоветуйте книгу для начинающих.
Не считайте это за издевку. Но начинайте с этого. http://cpp.com.ru/ И да ссылку кидайте в закладки. Потому что это справочный материал, а не прочитал и выкинул. Сам регулярно откровения там нахожу.
Сразу изучайте указатели всех видов.
ПС:
Спасибо!
Спустя месяц понял что такое функции, классы и массивы.
Стал лучше вчитываться в код.
Вас спасибо большое за совет учить с++ а не "простой код на ардуино"! :)
Но вот ваш код пока прочитать все равно не могу...
void
(* Do)();
// указатель на обработчик
void
(* Do1)(), (* Do2)();
я так понимаю пустая функция получает данные от указателей на класс ?
А по какой причине два разных указателя могут иметь один адрес в оперативной памяти.
Сегодня пытался вытащить несколько значений из функции с помощью указателя и почему то они имеют один адрес в оперативке соответственно и значение одно.
Так и не понял в чем дело((
А по какой причине два разных указателя могут иметь один адрес в оперативной памяти.
Вот пример кнопка 1 но первое нажатие сделать это 2 это и 3 это.
Если вам сложен этот код скачайте и запустите эту папку https://yadi.sk/d/OhKUoDQ93FuSL3
Головной файл выкладываю
Спасибо буду тестить :)
Кстати если вдруг нужно что-нибудь для ардуино, у меня свое рекламное произвоство и есть лазер.
Могу вырезать что-нибудь бесплатно )
Я вот для себя наделал разные полочки и подставки для работы с ардуинкой.