Diferencia entre revisiones de «Mecanismo de exposición para Láminas - Matilde, Andrés, Carla, Alejandra»

De Casiopea
Línea 19: Línea 19:


=Programaciones del Proyecto=
=Programaciones del Proyecto=
==Código para probar la funcionalidad de dos botones==
==Comprobar el estado de dos botones==


En un principio necesiamos saber el estado de los materiales a usar, por lo cual se crea un código de programación sencillo, el cual consiste en visualizar la lectura que reciben los botones al ser presionados. Se adjunta el código a continuación.
En un principio necesiamos saber el estado de los materiales a usar, por lo cual se crea un código de programación sencillo, el cual consiste en visualizar la lectura que reciben los botones al ser presionados. Se adjunta el código a continuación.

Revisión del 22:23 27 may 2022





Mecanismo de exposición para Láminas, 2022
Palabras Claveobjetoeducativo


TítuloMecanismo de rieles de exposición para Láminas
Tipo de ProyectoProyecto de Curso
Palabras ClaveArduino, interacción, motor, exposición
Período2022-2022
AsignaturaInteracción y Performatividad
Del CursoInteracción y Performatividad 2022
CarrerasDiseño, Interacción y Servicios"Interacción y Servicios" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property.
Alumno(s)Carla Gómez Guerra, Matilde Croxatto Ullrich, Andrés Aliaga Chandía, Alejandra Witto Royo
ProfesorRenzo Varela


Programaciones del Proyecto

Comprobar el estado de dos botones

En un principio necesiamos saber el estado de los materiales a usar, por lo cual se crea un código de programación sencillo, el cual consiste en visualizar la lectura que reciben los botones al ser presionados. Se adjunta el código a continuación.

/*
  DigitalReadSerial
  Reads a digital input on pin 2, prints the result to the Serial Monitor
  This example code is in the public domain.
  https://www.arduino.cc/en/Tutorial/BuiltInExamples/DigitalReadSerial
*/

// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton1 = 2;
int pushButton2 = 4;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton1, INPUT);
  pinMode(pushButton2, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState1 = digitalRead(pushButton1);
  int buttonState2 = digitalRead(pushButton2);
  // print out the state of the button:
/*  Serial.print("boton 1: ");
  Serial.println(buttonState1);  
  Serial.print("boton 2: ");  
  Serial.println(buttonState2);
  delay(100);        // delay in between reads for stability
*/
  if(buttonState1==1){
    Serial.println("mueve motor 1");
    }

  if(buttonState2==1){
    Serial.println("mueve motor 2");
    }
delay(100);  
}

Programación de los motores Stepper

Comprobar estado del motor

Activar dos Steppers con dos botones

Luego de comprobar que los dos botones recibían información correctamente, se pudo pasar al siguiente paso el cual consistía en agregar dos motores Stepper, necesarios para activar el mecanismo sobre los rieles que moverían tanto dirección como ubicación de las láminas a colgar. Para esto se crea un código de programación que permita que con dos botones (uno especifico para cada motor) accionar el movimiento de estos. Con el primer click se activaría la rotación del motor, y con un segundo click (en el mismo botón) se activaría nuevamente la rotación del motor pero en sentido contrario, permitiendo la apertura y cierre de las láminas.

const int stepPin = 6; // pin de conexión al arduino motor 1
const int dirPin = 9; // pin de conexión al arduino motor 1
const int enPin = 10; // pin de conexión al arduino motor 1

const int stepPin2 = 5; // pin de conexión al arduino motor 2
const int dirPin2 = 11; // pin de conexión al arduino motor 2
const int enPin2 = 12; // pin de conexión al arduino motor 2

//Valores editables
int radio=3.5; // medida del radio del eje del motor en milimetros
int distancia=100; // distancia de recorrido de la cuerda en milimetros
int duracion=10; // tiempo del recorrido en segundos, 10 para enrollar y 10 para desenrollar

int total=1000; // tiempo dividido por unidadtiempo
int total2=1000; // tiempo dividido por unidadtiempo


// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton1 = 2;
int pushButton2 = 4;


// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton1, INPUT);
pinMode(stepPin,OUTPUT);
 pinMode(dirPin,OUTPUT);
 pinMode(enPin,OUTPUT);
 digitalWrite(enPin,LOW);

 
  pinMode(pushButton2, INPUT);
  pinMode(stepPin2,OUTPUT);
 pinMode(dirPin2,OUTPUT);
 pinMode(enPin2,OUTPUT);
 digitalWrite(enPin2,LOW);

}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState1 = digitalRead(pushButton1);
  int buttonState2 = digitalRead(pushButton2);
  // print out the state of the button:
/*  Serial.print("boton 1: ");
  Serial.println(buttonState1);  
  Serial.print("boton 2: ");  
  Serial.println(buttonState2);
  delay(100);        // delay in between reads for stability
*/
  if(buttonState1==1){

Serial.println("motor1");
    
 digitalWrite(dirPin,HIGH); // sentido de giro del motor a la derecha
 for(int x = 0; x < 1200; x++) { // ciclo for para mantener la duración del ciclo
 digitalWrite(stepPin,HIGH);
 delayMicroseconds(total);
 digitalWrite(stepPin,LOW);
 delayMicroseconds(total);
 }
 delay(10); // un segundo de retraso
 digitalWrite(dirPin,LOW); // sentido de giro del motor a la izquierda
 for(int x = 0; x < 1200; x++) {
 digitalWrite(stepPin,HIGH);
 delayMicroseconds(total);
 digitalWrite(stepPin,LOW);
 delayMicroseconds(total);
 }
 delay(10); // un segundo de retraso
 }

  if(buttonState2==1){

Serial.println("motor2");
    
   digitalWrite(dirPin2,HIGH); // sentido de giro del motor a la derecha
 for(int x = 0; x < 1200; x++) { // ciclo for para mantener la duración del ciclo
 digitalWrite(stepPin2,HIGH);
 delayMicroseconds(total2);
 digitalWrite(stepPin2,LOW);
 delayMicroseconds(total2);
 }
 delay(10); // un segundo de retraso
 digitalWrite(dirPin2,LOW); // sentido de giro del motor a la izquierda
 for(int x = 0; x < 1200; x++) {
 digitalWrite(stepPin2,HIGH);
 delayMicroseconds(total2);
 digitalWrite(stepPin2,LOW);
 delayMicroseconds(total2);
 }
 delay(10); // un segundo de retraso
 }
  }