Давненько не заходил в эту ветку форума .
Занимался темой **DAVID 3 ** в 2014 году. Собрал вполне рабочую конструкцию .
Не давно установил **DAVID 4 ** и очень мне понравилась функция поворотного стола .Стол у меня был сделан уже давно но управляется кнопкой .
Стол может быть зафиксирован в любом положении в 3 осях , спокойно поворачивать вес до 3 кг .
Очень хотелось бы автоматизировать весь процесс .Полазил по инету нашел вот такой вариант .
https://sites.google.com/site/janbeck/3 ... for-david4 Пишет что все работает .Но автор полез на шину i2C .Он управляет шаговым мотором .В моём варианте стоит концевик на поворотном столе на 12 секторов .Концевик запараллелен с кнопкой .
- Код: Выделить всё • Развернуть
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Connect a stepper motor with 400 steps per revolution (0.9 degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(400, 2);
void setup() {
Serial.begin(9600); // open serial port
AFMS.begin(); // create with the default frequency 1.6KHz
myMotor->setSpeed(1); // 1 rpm
myMotor->step(1, FORWARD, MICROSTEP); // take a step to initialize position
delay(250); // settle mechanics for 250 ms
myMotor->release(); // turn off current
}
void loop() {
static int counter = 0;
if(Serial.available()>0) // is there any unread serial data?
{
char ch = Serial.read(); // read a character from the serial port
Serial.print("echo");Serial.println(ch); // echo back so that it is displayed in DAVID debug console
if (ch == '2') // is it the character for the number 2?
{
counter = counter + 1; // increment the scan count
myMotor->step(10, FORWARD, MICROSTEP); // take a step
delay(250); // settle mechanics for 250 ms
myMotor->release(); // turn off current
if (counter == 40) // we have performed a full rotation
{
counter = 0; // reset for next scan
}
else
{
Serial.println("S"); // Tell DAVID to do another Scan
}
}
} // end Serial.available
}
Может кто посмотрит из знающих и отзывчивых .Как бы его переделать под такой алгоритм работы .
1 .При нажатии (сканировать )*стол неподвижен .
2 .По окончание сканирования ( примерно 30 сек )
*должна пройти команда на включение реле (для наглядности пин 13)
примерно 7 секунд и отключится .(концевик должен замкнуться )
3 .Через 20 сек.( время для поворота на сектор )*должна пройти команда ( S ) сканировать .
4 .Далее по циклу 12 раз .(стол разбит на 12 секторов ) Каждое включение поворачивает стол на 30 градусов .
Опыта в программирование нет .Только в готовых скетчах что нибудь подправить под свои нужды .
Если можно помогите пожалуйста .