Go Down

Topic: Ascensor (Read 2210 times) previous topic - next topic

Marcosray

Jan 11, 2019, 03:17 am Last Edit: Jan 12, 2019, 03:35 am by Marcosray Reason: Titulo editado
Disculpen buenas soy nuevo en todo y en Arduinos, y lo que estoy haciendo es un ascensor, he probado y he hecho millones de codigos steppers y ninguno me coge como debe de ser.
Mi ascensor va a funcionar con un motor 28byj-48 con su drive que va a subir y con un switch de fin de carrera accionandolo va a quedarse quieto hasta que presione un boton por celular y baje y con el otro swich tambien se quede quieto hasta que llegue la orden del otro boton para subir. aparte los codigos que me funcionaba no se adaptaba a mis codigos de las luces de la casa ( todo funciona por bluetooth):

Code: [Select]
int estado=0;
int retardo=100;
int analogo=0;

void setup(){
servo1.attach(4);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,OUTPUT);
Serial.begin(9600);
delay(1000);

}
void loop(){
if(Serial.available()>0){           // Si el puerto serie esta habilitadp
      estado = Serial.read();      // Lee lo que llega por el puerto Serie
}
   
if(estado== 'a'){                    // on/off de los pin 13 al pin 6
     analogWrite(A5,255);
}
if(estado== 'b' ){
     analogWrite(A5,0);
}
if(estado== 'c'){
     analogWrite(A4,255);
}
if(estado== 'd' ){
     analogWrite(A4,0);
}
if(estado== 'e'){
     analogWrite(A3,255);
}
if(estado== 'f' ){
     analogWrite(A3,0);
}
if(estado== 'g' ){
     analogWrite(A2,255);
}
if(estado== 'h' ){
     analogWrite(A2,0);
}
if(estado== 'i' ){
      analogWrite(A1,255);
}
if(estado== 'j' ){
     analogWrite(A1,0);
}

surbyte

#1
Jan 11, 2019, 08:06 pm Last Edit: Jan 11, 2019, 08:17 pm by surbyte
Por favor lee las normas del foro y edita tu post de acuerdo a ellas, básicamente los códigos deben postearse con etiquetas y no usando texto plano como has hecho.


Primer comentario: De todos los pines disponibles porque se te ocurre usar los analógicos para generar salidas PWM?
A0..A5 son entradas analogicas y/o entradas/salidas digitales pero no PWM.
Si puedes usar A0...A5 para el control de direccion pero no para el control de velocidad. Mi consejo
Hay pines especializados del lado opuesto de hecho creo que 6 pines PWM.
Seria conveniente que usaras esos.
Lo que no cambia nada.

Otro tema. Probaste cada stepper funcionando.
Yo creo que asi como lo estas comandando no funcionan además de que es un código que SOLO TU entiendes porque deberias indicar Motor 1,2.3.4 y sus pines correspondientes.

Establecer el control de 1 primero y luego expandir la idea a los demas

Comienza de nuevo.
Toma un stepper y sus 4 pines, especifica bien cada uno. Lo mueves arriba abajo, stop. etc
Y luego multiplicas la idea con los demas.

La parte de control con BT esta bien aunque yo usaría switch porque es mas eficiente.

Cierro el tema para mostrarte qué simple son las cosas si solo pones en google: Arduino stepper

Un ejemplo con código

Code: [Select]
const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor


// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;  // number of steps the motor has taken

void setup() {
  // nothing to do inside the setup
}

void loop() {
  // read the sensor value:
  int sensorReading = analogRead(A0);
  // map it to a range from 0 to 100:
  int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
  // set the motor speed:
  if (motorSpeed > 0) {
    myStepper.setSpeed(motorSpeed);
    // step 1/100 of a revolution:
    myStepper.step(stepsPerRevolution / 100);
  }
}


Motor controlado por un potenciometro conectado a A0.. olvida esa parte en tu caso
Solo le da velocidad

el stepper usa estos pines

Code: [Select]
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

Tu solo controlas el objeto con sus procedimientos y tiene varios.

Stepper

Go Up