1

Тема: Запуск цикла по событию

Всем привет!
Решил собрать простенький автомат, управление фотокамерой для съёмки панорам.
Шаговый двигатель поворачивает камеру на заданный угол и автоматически включает спуск.
Поворот в одну сторону и в другую, до исх. позиции.
За основу взял скрипт из одной статьи на сайте iXBT.
Никак не получается сделать запуск так, чтобы после включения питания, цикл не запускался, а только после
Пытаюсь приспособить для начала цикла поворотов ножку 9. Не работает,
Начинает цикл, сразу после включения питания.

Что не так? Заранее СПАСИБО!

==========
// Съемка сферической панорамы
#include <AFMotor.h>
AF_Stepper motor1(200, 1); // Число шагов на один оборот мотора для 1-го двигателя
int ledPin = 10; // Ножка кнопки спуска затвора
int wzat = 100; // Время нажатия кнопки затвора — 0.1 с
int wp = 800; // Пауза перед спуском затвора — 0.8 с
int buttonPin = 9; // Ножка перемычки. Если замкнута, то начать съёмку
int buttonState = HIGH; // Состояние перемычки при старте HIGH закоротить LOW
void setup() {
    buttonState = digitalRead(buttonPin);// Чтение состояния перемычки
    pinMode(buttonPin, INPUT); // Включаем ножку на прием сигналов

    pinMode(ledPin, OUTPUT); // Включаем ножку на вывод сигналов - спуск камеры
    motor1.setSpeed(3); // Скорость вращения — 3 оборотов в минуту
    motor1.release(); // Отключаем питание двигателя
     if (buttonState == LOW){
   
    for (int i=0; i <= 7; i++) {
        delay(wp);
        digitalWrite(ledPin, HIGH); // Нажимаем спусковую кнопку
        delay(wzat); // Ждем
        digitalWrite(ledPin, LOW); // Отпускаем спусковую кнопку
        motor1.step(30, FORWARD, DOUBLE);
        }
    for (int i=0; i <= 7; i++) {
        delay(wp);
        digitalWrite(ledPin, HIGH); // Нажимаем спусковую кнопку
        delay(wzat); // Ждем
        digitalWrite(ledPin, LOW); // Отпускаем спусковую кнопку
        motor1.step(30, BACKWARD, DOUBLE);
        } } }
void loop() { motor1.release(); }

2 (2011-10-11 17:10:37 отредактировано airpano)

Re: Запуск цикла по событию

Вопрос решён. С помощью автора вот этой статьи:
Владимир Родионов http://www.rwpbb.ru/test/avtopansonynex5.html

Цикл работы двигателя, начинается по условию, ножка 9 закорачивается.
включил питаие, ничего не происходит, режим ожидания. нажал кнопку - отрабатывает цикл съёмки.

=================
#include <AFMotor.h>
AF_Stepper motor1(200, 1); // Число шагов на один оборот мотора для 1-го двигателя
int ledPin = 10; // Ножка кнопки спуска затвора
int wzat = 100; // Время нажатия кнопки затвора — 0.1 с
int wp = 800; // Пауза перед спуском затвора — 0.8 с
int buttonPin = 9; // Ножка перемычки. Если замкнута, то выполняется цикл
int buttonState = HIGH; // Состояние перемычки



void setup() {

   digitalWrite(buttonPin, HIGH); //включаем подтягивающие резисторы на 5В
   pinMode(buttonPin, INPUT); // Включаем ножку на прием сигналов
   buttonState = digitalRead(buttonPin);// Чтение состояния перемычки


     pinMode(ledPin, OUTPUT); // Включаем ножку на вывод сигналов
     motor1.setSpeed(3); // Скорость вращения — 3 оборотов в минуту
     motor1.release(); // Отключаем питание двигателя


     }
void loop() {

buttonState = digitalRead(buttonPin);// Чтение состояния перемычки

if (buttonState == LOW){

     for (int i=0; i<= 7; i++) {
         delay(wp);
         digitalWrite(ledPin, HIGH); // Нажимаем спусковую кнопку
         delay(wzat); // Ждем
         digitalWrite(ledPin, LOW); // Отпускаем спусковую кнопку
         motor1.step(30, FORWARD, DOUBLE);
         }
     for (int i=0; i<= 7; i++) {
         delay(wp);
         digitalWrite(ledPin, HIGH); // Нажимаем спусковую кнопку
         delay(wzat); // Ждем
         digitalWrite(ledPin, LOW); // Отпускаем спусковую кнопку
         motor1.step(30, BACKWARD, DOUBLE);
         }
  motor1.release(); // Отключаем питание двигателя

}

  }