roboforum.ruТехнический форум по робототехнике. |
|
|
// Будем управлять двигателем используя цифровой порт 9 (pin 9).
// Это должен быть любой ШИМ порт Arduino
const int motorPin = 9;
void setup()
{
// Установим порт мотора как выходной:
pinMode(motorPin, OUTPUT);
// Активируем «Монитор порта»:
Serial.begin(9600);
}
void loop()
{
// Здесь мы использовали комментарии для отключения некоторых
// примеров. Чтобы испробовать другой пример, раскомментируйте
// одну из следующих строк и закомментируйте другие. См функции,
// для того чтобы узнать что они делают и как работают.
// motorOnThenOff();
// motorOnThenOffWithSpeed();
motorAcceleration();
//serialSpeed();
}
// Попробуйте разные значения.
// void motorOnThenOff()
// {
// int onTime = 3000; // миллисекунд для вращения мотора
// int offTime = 3000; // миллисекунд для простаивания мотора
// digitalWrite(motorPin, HIGH); // включить мотор — максимальная скорость
// delay(onTime); // задержка, для продолжения вращения
// digitalWrite(motorPin, LOW); // выключить мотор
// delay(offTime); // задержка, для простаивания мотора
// }
// Функция «motorOnThenOffWithSpeed» переключает работу мотора между
// двумя скоростями. Пробуйте разные значения, если интересно.
// void motorOnThenOffWithSpeed()
// {
// int Speed1 = 255; // скорость «Speed1» 0 (остановка), 255 (полный ход)
// int Time1 = 8000; // время «Time1» в миллисекундах
// int Speed2 = 0; // скорость «Speed2» 0 (остановка), 255 (полный ход)
// int Time2 = 8000; // время «Time2» в миллисекундах
// analogWrite(motorPin, Speed1); // включаем мотор на скорости «Speed1»
// delay(Time1); // продолжаем вращение заданное время
// analogWrite(motorPin, Speed2); // включаем мотор на скорость «Speed2»
// delay(Time2); // продолжаем, заданное время «Time2»
// }
// Функция «motorAcceleration» раскручивает двигатель от нуля до
// максимума, и обратно до полной остановки.
void motorAcceleration()
{
int speed;
int delayTime = 20; // пауза в миллисекундах
// будем раскручивать мотор, увеличивая скорости от 0 до 255 с паузой в
// 20 миллисекунд меду каждым шагом (1, пауза, 2, пауза, 3, пауза и.т.д)
for(speed = 0; speed <= 255; speed++) // шаг, увеличение на единицу
{
analogWrite(motorPin,speed); // установка новой скорости
delay(delayTime); // пауза «delayTime», т.е 20 миллисекунд
}
{
//Делаем паузу
delay(3000);
}
// будем останавливать мотор, уменьшая скорость от 255 до 0 с паузой в
// 20 миллисекунд меду каждым шагом (255, пауза, 254, пауза, 253, пауза …)
for(speed = 255; speed >= 0; speed--)
{
analogWrite(motorPin,speed); // установка новой скорости
delay(delayTime); // пауза «delayTime», т.е 20 миллисекунд
}
}
Вернуться в Arduino и другие Xduino
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6