Ви не увійшли.
Сторінки 1
Власне у мене не виходить об'єднати два робочі скетчі в один. По задумці має бути фотостіл з поворотом на певну кількість кроків з заданою швидкістю і прискоренням, затримка, активація затвору фотоапарату через ІК передавач і повтор циклу.
Мій об'єднаний скетч. Мотор відпрацьовує поворот, але без прискорення, без врахування заданої швидкості і затвор не спрацьовує.
#include <AccelStepper.h>
#include <MultiStepper.h>
#include <IRremote.h>
#include <IRremoteInt.h>
AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
int dir = 1; //используется для смены направления
int RECEIVE_PIN = 3;// Объявляем новую переменную
IRrecv irrecv(RECEIVE_PIN);
decode_results results;
IRsend irsend;
void setup() {
Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(1000); //устанавливаем ускорение (шагов/секунду^2)
//Serial.begin(9600);// Активируем Serial-соединение
//irrecv.enableIRIn();
}
void loop() {if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение
Stepper1.move(133*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)
dir = dir*(1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении
delay(5000); //задержка на 5 секунду
}
{Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя
}
//{
// if (irrecv.decode(&results)) // Если данные пришли
// {
// Serial.println(results.value, HEX); // Отправляем полученную данную в консоль
// irrecv.resume(); // Принимаем следующую команду
// }
{
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xB4B8F, 20);
delay(40);
}
}
}
Сторінки 1