#include <AccelStepper.h>
// Define los pines para el driver A4988
const int stepPin = 2;
const int dirPin = 3;
// Define el pin analógico para el potenciómetro
const int potPin = A0;
// Define el pin para el pulsador
const int buttonPin = 2;
// Define la posición inicial del Motor
int initialPosition = 100;
// Crea una instancia de AccelStepper
AccelStepper stepper(1, stepPin, dirPin);
void setup() {
stepper.setMaxSpeed(1000); // Velocidad máxima en pasos por segundo
stepper.setAcceleration(500); // Aceleración en pasos por segundo al cuadrado
Serial.begin(9600);
stepper.moveTo(initialPosition); //Gira motor vuelta completa
stepper.run();
Serial.println(initialPosition);
delay(2000);
}
void loop() {
// Lee el valor del potenciómetro (0-1023) y mapea a la posición (0-199 pasos)
int potValue = analogRead(potPin);
int targetPosition = map(potValue, 0, 1023, initialPosition, 0);
Serial.println(targetPosition);
// Mueve el motor a la posición deseada
stepper.moveTo(targetPosition);
// Realiza el movimiento paso a paso
stepper.run();
}
/*
#include <Keypad.h>
#include "HX711.h"
#include "Wire.h"
#include <AccelStepper.h>
#define led 13
// Define los pines del módulo HX711.
#define DOUT 2
#define SCK 3
// Define los pines para el driver A4988
const int stepPin = 2;
const int dirPin = 3;
// Define la posición inicial del Motor
int initialPosition = 199;
// Crea una instancia de AccelStepper
AccelStepper stepper(1, stepPin, dirPin);
const byte rowsT = 4;
const byte colsT = 4;
char charactersT[rowsT][colsT] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPinsT[rowsT] = {14, 15, 16, 17};
byte columnsPinsT[colsT] = {18, 19, 20, 21};
boolean repriseT = true;
String storageStringT, readCharacterT, resultSerialT;
char keyT;
bool activo = true;
bool peso = false;
int gramos = 0;
Keypad keypadT = Keypad( makeKeymap(charactersT), rowPinsT, columnsPinsT, rowsT, colsT);
HX711 scale;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
keypadT.addEventListener(keypadEventT);
pinMode(led, OUTPUT); // sets the digital pin 13 as output
Serial.print("Ingrese su peso : ");
// Inicializa el módulo HX711.
scale.begin(DOUT, SCK);
scale.set_scale(409.f); // Puedes calibrar la escala si es necesario.
scale.tare(); // Establece el valor actual como tara.
stepper.setMaxSpeed(1000); // Velocidad máxima en pasos por segundo
stepper.setAcceleration(500); // Aceleración en pasos por segundo al cuadrado
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(led , !activo);
if (activo){
keyT = keypadT.getKey();
if (keyT) {
if (keyT == '*') {
keyT = "";
} else {
Serial.print(keyT);
readCharacterT = keyT;
storageStringT += readCharacterT;
}
}
}
if (peso){
stepper.moveTo(initialPosition); //Gira motor vuelta completa
// Lee el valor de la celda de carga.
//float weight = scale.get_units(5); // Lee 10 valores para promediar.
int weight = scale.get_units(1); // Lee 1 valores para promediar.
// Actualiza el LCD con el valor de la celda de carga.
Serial.print(" "); // Borra el valor anterior.
Serial.println(weight); // Muestra el peso con 2 decimales.
//Serial.println(weight, 2); // Muestra el peso con 2 decimales.
delay(500); // Espera 1 segundo antes de la próxima lectura.
//mapear peso para motor
int targetPosition = map(weight, 0, storageStringT, initialPosition, 0);
// Mueve el motor a la posición deseada
stepper.moveTo(targetPosition);
// Realiza el movimiento paso a paso
stepper.run();
if (weight >= storageStringT.toInt()){
storageStringT = "";
Serial.println("");
Serial.println("Se ha llegado al peso");
Serial.println("");
Serial.print("Ingrese su peso : ");
activo = true;
peso = false;
}
}
}
void keypadEventT(KeypadEvent keyT) {
switch (keypadT.getState()) {
case PRESSED:
switch (keyT) {
case '*':
Serial.println("");
Serial.print("Su peso elegido es: ");
Serial.println(storageStringT);
//digitalWrite(led , HIGH);
activo = false;
peso = true;
break;
default:;
}
}
}
*/