Lab_interaccio/2021/OPTICAL_PRINTER_MOD/OPTICAL_PRINTER_MOD.ino

88 lines
2.4 KiB
Arduino
Raw Normal View History

2025-02-25 21:29:42 +01:00
#include <Stepper.h>
const int StepsPerRevolution = 200;
const int dirA = 12;
const int dirB = 13;
const int pulso = 7; //este es el pin que lee arduino y le ordena una vuelta (morado)
const int adelante = 6; //pin que recibe orden de avance (blanco)
const int atras= 5; //pin que recibe orden de retroceso (gris)
Stepper myStepper(StepsPerRevolution,dirA,dirB);
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
//******PARAMETROS****************************************
//POTENCIA
int power=90; //valor depotencia min y max entre 0 y 255
//VELOCIDAD
int rpm=60; //velocidad en rpm
//********************************************************
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(dirA, OUTPUT);
pinMode(dirB, OUTPUT);
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
pinMode(pulso, INPUT);
pinMode(adelante, INPUT);
// pinMode(atras, INPUT);
//digitalWrite(pwmA, HIGH);
// analogWrite(pwmA, 63);
//digitalWrite(pwmB, HIGH);
// analogWrite(pwmB, 63);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);
Serial.begin(9600);
myStepper.setSpeed(rpm); // aqui se controla la velocidad en rpm
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(adelante)==LOW)
{
if(digitalRead(pulso)==LOW)
{
analogWrite(pwmA, power); //potencia del motor: el valor se puede mover entre 0-255, para min y max
analogWrite(pwmB, power); //potencia del motor: el valor se puede mover entre 0-255, para min y max
myStepper.step(-200);
delay(250);
}
}
else
{
if(digitalRead(atras)==LOW)
{
if(digitalRead(pulso)==LOW)
{
analogWrite(pwmA, power); //potencia del motor: se puede mover entre 0-255, para min y max
analogWrite(pwmB, power); //potencia del motor: se puede mover entre 0-255, para min y max
myStepper.step(200);
delay(250);
}
}
// myStepper.step(0); //esta orden no produce movimiento, pero mantiene corriente alimentada a las bobinas
digitalWrite(dirA, LOW);
digitalWrite(dirB, LOW);
analogWrite(pwmA, 0);
analogWrite(pwmB, 0);
delay(250);
}
}