Mecanismo de exposición para Láminas - Matilde, Andrés, Carla, Alejandra
De Casiopea
Mecanismo de exposición para Láminas, 2022 | |
Palabras Clave | objetoeducativo |
Título | Mecanismo de rieles de exposición para Láminas |
---|---|
Tipo de Proyecto | Proyecto de Curso |
Palabras Clave | Arduino, interacción, motor, exposición |
Período | 2022-2022 |
Asignatura | Interacción y Performatividad |
Del Curso | Interacción y Performatividad 2022 |
Carreras | Diseñ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 |
Profesor | Renzo Varela |
Código para probar la funcionalidad de los 2 botones
/* 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); }
Código de uso de 2 motores con 2 botones
Luego de comprobar que los dos botones recibían información correctamente, se podía pasar al siguiente paso, el cual es agregar los dos motores Stepper necesarios para activar el mecanismo sobre los rieles. Para esto se crea un código de programación que permita con dos botones (uno 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.
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 } }