roboforum.ruТехнический форум по робототехнике. |
|
|
// Переименовал переменную Stepper_28BYJ в Stepper
#include <Stepper_28BYJ.h>
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
#define lcd_RS_pin 7
#define lcd_RW_pin 8
#define lcd_E_pin 9
#define lcd_DB4_pin 10
#define lcd_DB5_pin 11
#define lcd_DB6_pin 12
#define lcd_DB7_pin 13
LiquidCrystal lcd(lcd_RS_pin, lcd_RW_pin, lcd_E_pin, lcd_DB4_pin, lcd_DB5_pin, lcd_DB6_pin, lcd_DB7_pin);
// изменить количество шагов для вашего мотора
const int stepsPerRevolution = 4076;
// #define steps 4076
Stepper_28BYJ myStepper_28BYJ(stepsPerRevolution, 5,4,3,2);
int stepCount = 0; // number of steps the motor has taken
//Specify your input pin here
// int sensor = 0;
int sensorPin = 0;
int ledPin = 6; // пин для светодиода
// Также зададим 3 глобальные переменные - lightLevel, high и low
int lightLevel, high = 0, low = 1023;
void setup()
{
}
void loop(){
// read the sensor value:
// читаем значение датчика на аналоговом входе 0
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
// масштабируем значение с аналогового входа
// из диапазона 0..1023 в диапазон 0..100
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// установить скорость вращения
if (motorSpeed > 0) {
myStepper_28BYJ.setSpeed(motorSpeed);
// прошагать 1/100 оборота
myStepper_28BYJ.step(stepsPerRevolution/100);
//включение ноги светодиода
pinMode(ledPin, OUTPUT);
lcd.begin(16,2); //Инициализируем экран
//Выводим на экран скорость мотора
lcd.setCursor(0, 0);
lcd.print(" "); //чистим вывод
lcd.setCursor(0, 1);
lcd.print(" "); //чистим вывод
lcd.setCursor(0, 0);
lcd.print(" Motor Speed");
lcd.setCursor(0, 1);
lcd.print(" S= ");
lcd.setCursor(8, 1);
lcd.print(motorSpeed);
}
lightLevel = analogRead(sensorPin);
//включаем светодиод
analogWrite(ledPin,40);//светодиод горит на 10 ))
}
/*
Stepper_28BYJ Motor Control - speed control
This program drives a unipolar or bipolar stepper motor.
The motor is attached to digital pins 8 - 11 of the Arduino.
A potentiometer is connected to analog input 0.
Эта программ управляет униполярным или биполярным шаговым двигателем.
Шаговый двигатель присоединён к цифровым выходам 8-11 платы Arduino.
Потенциометр присоединён к аналоговому входу 0.
The motor will rotate in a clockwise direction. The higher the potentiometer value,
the faster the motor speed. Because setSpeed() sets the delay between steps,
you may notice the motor is less responsive to changes in the sensor value at
low speeds.
Двигатель будет вращаться по часовой стрелке. Чем выше напряжение снимаемое с потенциометра,
тем выше будет скорость вращения. Потому что функция setSpeed() определяет задержки между шагами,
вы можете заметить, что двигатель становится менее чувствительным к показаниям датчика на
низких скоростях.
Created 30 Nov. 2009
Modified 28 Oct 2010
by Tom Igoe
*/
#include <Stepper_28BYJ.h>
// количество шагов на один оборот
const int stepsPerRevolution = 4076; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
// инициализируем библиотеку Stepper_28BYJ на выходы 8-11
Stepper_28BYJ myStepper_28BYJ(stepsPerRevolution, 5,4,3,2);
// количество шагов, которые мотор уже сделал
int stepCount = 0; // number of steps the motor has taken
int ledPin = 6; // пин для светодиода
int sensorPin = 0;
// Также зададим 3 глобальные переменные - lightLevel, high и low
int lightLevel, high = 0, low = 1023;
void setup() {
// nothing to do inside the setup
// ничего не делаем внутри процедуры setup
}
void loop() {
// read the sensor value:
// читаем значение датчика на аналоговом входе 0
int sensorReading = analogRead(A0);
// map it to a range from 0 to 100:
// масштабируем значение с аналогового входа
// из диапазона 0..1023 в диапазон 0..100
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
// set the motor speed:
// установить скорость вращения
if (motorSpeed > 0) {
myStepper_28BYJ.setSpeed(motorSpeed);
// step 1/100 of a revolution:
// прощагать 1/100 оборота
myStepper_28BYJ.step(stepsPerRevolution/100);
}
//включение ноги светодиода
pinMode(ledPin, OUTPUT);
//включаем светодиод
lightLevel = analogRead(sensorPin);
analogWrite(ledPin,60);//светодиод горит на 60 ))
}
void stepMotor(int Motor, int Step) //Motor - от 0 до 2 номер мотора Step 0 или +1
{
//Serial.println(curstep[Motor]);
int i; //Сдвиг для номеров пинов мотора
if (Step)
{
// Serial.println("StepMotor Step=1");
if (curstep[Motor]==7)
{curstep[Motor]=0;}
else
{curstep[Motor]++;}
}
else
{
// Serial.println("StepMotor Step=0");
if (curstep[Motor]==0)
{curstep[Motor]=7;}
else
{curstep[Motor]--;}
}
i=Motor*4; //Сдвиг пинов в массиве MotorPins[]
//Serial.println(curstep[Motor]);
switch (curstep[Motor]) {
case 0: // 1000
// digitalWrite(MotorPins[1], HIGH);
digitalWrite(MotorPins[i+1], LOW);
// digitalWrite(MotorPins[i+2], LOW);
digitalWrite(MotorPins[i+3], LOW);
break;
case 1: // 1100
digitalWrite(MotorPins[i], HIGH);
digitalWrite(MotorPins[i+1], HIGH);
// digitalWrite(MotorPins[i+2], LOW);
// digitalWrite(MotorPins[i+3], LOW);
break;
case 2: // 0100
digitalWrite(MotorPins[i], LOW);
// digitalWrite(MotorPins[i+1], HIGH);
digitalWrite(MotorPins[i+2], LOW);
// digitalWrite(MotorPins[i+3], LOW);
break;
case 3: // 0110
// digitalWrite(MotorPins[i], LOW);
digitalWrite(MotorPins[i+1], HIGH);
digitalWrite(MotorPins[i+2], HIGH);
// digitalWrite(MotorPins[i+3], LOW);
break;
case 4: // 0010
// digitalWrite(MotorPins[i], LOW);
digitalWrite(MotorPins[i+1], LOW);
// digitalWrite(MotorPins[i+2], HIGH);
digitalWrite(MotorPins[i+3], LOW);
break;
case 5: // 0011
// digitalWrite(MotorPins[i], LOW);
// digitalWrite(MotorPins[i+1], LOW);
digitalWrite(MotorPins[i+2], HIGH);
digitalWrite(MotorPins[i+3], HIGH);
break;
case 6: // 0001
digitalWrite(MotorPins[i], LOW);
// digitalWrite(MotorPins[i+1], LOW);
digitalWrite(MotorPins[i+2], LOW);
// digitalWrite(MotorPins[i+3], HIGH);
break;
case 7: // 1001
digitalWrite(MotorPins[i], HIGH);
// digitalWrite(MotorPins[i+1], LOW);
// digitalWrite(MotorPins[i+2], LOW);
digitalWrite(MotorPins[i+3], HIGH);
break;
}
}
#include <LiquidCrystal.h> // Подключаем стандартную библиотеку LiquidCrystal
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
#define lcd_RS_pin 7
#define lcd_RW_pin 8
#define lcd_E_pin 9
#define lcd_DB4_pin 10
#define lcd_DB5_pin 11
#define lcd_DB6_pin 12
#define lcd_DB7_pin 13
// RS, RW, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(lcd_RS_pin, lcd_RW_pin, lcd_E_pin, lcd_DB4_pin, lcd_DB5_pin, lcd_DB6_pin, lcd_DB7_pin);
// Инициализируем объект-экран, передаём использованные
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
Вернуться в Arduino и другие Xduino
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4