1

Тема: помогите чайнику

frttduino был приобретен для одной простой задачи, а изучать азы программировения терпения пока нет.
прошу  если кому не лень! ) помощи в написании одного простого скетча или тыкните в пример, сам таких примеров не нашел.
приобретено: Freeduino v1.16 и Motor Shield v2.0
задача: управление всего одним шаговым двигателем
нажатие кнопки 1 - сдвиг двигателя на один оборот
нажатие кнопки 2 - сдвиг двигателя на три оборота
нажатие кнопки 3 - вращение двигателя в обратном направлении пока нажата кнопка
и если возможно: выполнение одного оборота один раз в сутки, хотя так понимаю для этого еще нужно суточный таймер приобрести?
я понимаю что это глупо, ну не врубаюсь я пока, ну совсем не из этой сферы я ))

2

Re: помогите чайнику

http://freeduino.ru/arduino/mshield.html

3

Re: помогите чайнику

Чайнику от чайника :))) так что учти опыта нету :)))
пару дней назад впервые сделал нечто подобное только на серво моторе.

Вот скетч упрощенный.
#include <Servo.h>
        Servo servol;
unsigned long previousMillis = 0;

void setup(){
  servol.attach(9); // на 9 пине серво мотор
  pinMode(13, OUTPUT);
  servol.write(94);  // команда успокоить серву (серва постоянного вращения)
}

void loop(){
  while ((millis() / 60000 < analogRead(0) / 17) || (millis() / 60000 < previousMillis + analogRead(0) / 17)) { // собственно таймер от 0мин до 60мин, если чуток подумать и
      // делить не на 60000 а эээээ-ээ..... сейчас millis() / 60000 это 1мин 2 мин 3мин ... вобщем раз в минуту появляется значение....можно сделать и реже 1час 2 час итд.
      // здесь делай опрос кнопок и действие шаговика нное количество раз если надо
digitalWrite(13,HIGH); // включается светодиод для контроля
  }
  previousMillis = millis() / 60000;
  // здесь команду на работу шаговика или сервы. раз в сутки (ну или как получится)
  servol.write(180); // это моя серва крутится против часовой 5,5 секунд (где-то 5,5оборотов)
    delay(5500);
  servol.write(94); // серва стоп
     

  while (millis() / 60000 < previousMillis + analogRead(1) / 17){ // еще один интервал 0-60мин
      //  здесь делай опрос кнопок и действие нное количество раз если надо (или ставь одну мин и не делай ничего)
      digitalWrite(13,LOW); //гасится светодиод для контроля
  }
// здесь команду на работу шаговика или сервы. раз в сутки или типа того (так для примера)

previousMillis = millis() / 60000;
  servol.write(0); // серва крутится по часовой 6,5сек
    delay(6500);
  servol.write(94); // стоп серва
}

ну и на последок analogRead(1) это переменный резистор 50ком на 1-м аналоговом пине (задает интервал)
analogRead(1 или 0) / 17  можно заменить целым числом и таймер будет фиксированным.

Вообщем разбирайся потихоньку... дело это хлопотное блин...

А по шаговикам, мне блин и самому интересно как их запускать то :))))

4

Re: помогите чайнику

ЗДравствуйте. Где-то про программирование МК читал, что задержки можно задавать в микросекундах, а то и в тактах процессора. В freeduino нельзя так, или я чего-то не понял?
Спасибо

5 (2011-10-13 17:41:09 отредактировано gerich)

Re: помогите чайнику

Можно ещё более глупый вопрос?
Есть шаговый двигатель (например от hdd, подойдёт или требуется какой-то определённый?).
Требуется сделать управление (алгоритм такой - кнопку нажал, двигатель сделал 5 оборотов и отключился).

Какова должна быть физическая схема? т.е. какие элементы мне надо приобрести чтобы реализовать управление двигателем?

Вчём заключаются ыункции freeduino, mshield?