sábado, 7 de diciembre de 2019

Laboratorio 15_2019

Laboratorio 15

      LABORATORIO N°15 Microcontroladores
Proyecto"Carro Seguidor de Lineas"

Integrantes:
  • Contreras Quispe Erick 
  • Puma Maldonado Fabian
  • Turpo Luque Diego
Introducción:

Código:
Int:
Los int (enteros) son el tipo de datos primario para el almacenamiento de números.
Void Setup:
El setup es la primera función en ejecutarse dentro de un programa en Arduino. Es, básicamente, donde se «setean» las funciones que llevará a cabo el microcontrolador.Aquí es donde establecemos algunos criterios que requieren una ejecución única. Por ejemplo, si nuestro programa va a usar comunicación serial, en el setup establecemos el comando Serial.begin para indicarle al programa que vamos a iniciar la comunicación serial.Si vamos a utilizar un pin determinado como salida de voltaje, usamos el pinMode para indicarle a Arduino que determinado pin funcionará como salida, usando el parámetro OUTPUT.
Serial.begin:
Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en serie. 
PinMode:
Configura el pin especificado para que se comporte como entrada o salida.
Void loop:
Loop en inglés significa lazo o bucle. La función loop en Arduino es la que se ejecuta un número infinito de veces. Al encenderse el Arduino se ejecuta el código del setup y luego se entra al loop, el cual se repite de forma indefinida hasta que se apague o se reinicie el microcontrolador.
DigitalRead:
Lee el valor de un pin digital especificado, ya sea HIGH o LOW.
Serial.print:
Imprime datos en el puerto serie como texto ASCII legible para humanos. Este comando puede tomar muchas formas. Los números se imprimen utilizando un carácter ASCII para cada dígito. Los flotadores se imprimen de manera similar como dígitos ASCII, por defecto con dos decimales. Los bytes se envían como un solo carácter. Los caracteres y las cadenas se envían tal cual. Por ejemplo-
Serial.print(78) da "78"
Serial.print(1.23456) da "1.23"
Serial.print('N') da "N"
Serial.print("Hello world.") da "Hola mundo".
If:
La if es una declaración que verifica si hay una condición y ejecuta la declaración o el conjunto de declaraciones en curso si la condición es 'verdadera'.
Else if:
Permite un mayor control sobre el flujo de código que el básico if declaración, al permitir múltiples pruebas para agruparse. Se else ejecutará una cláusula (si es que existe) si se if produce la condición en la declaración false. El else puede proceder con otra if prueba, de modo que se puedan ejecutar múltiples pruebas mutuamente excluyentes al mismo tiempo.
DigitalWrite:
Escriba un HIGH o un LOW valor en un pin digital.
Si el pin se ha configurado como OUTPUTcon pinMode (), su voltaje se establecerá en el valor correspondiente: 5V (o 3.3V en placas de 3.3V) para HIGH, 0V (tierra) para LOW.
Si el pin está configurado como INPUT, digitalWrite () habilitará (HIGH) o deshabilitará (LOW) el pullup interno en el pin de entrada. Se recomienda configurar pinMode () a INPUT_PULLUP para habilitar la resistencia de pull-up interna. Vea el tutorial Digital Pins para más información.
Si no se establece la pinMode () a OUTPUT, y conectar un LED a un pin, al llamar digitalWrite (HIGH), el LED puede aparecer tenue. Sin una configuración explícita pinMode (), digitalWrite () habrá habilitado la resistencia pull-up interna, que actúa como una gran resistencia limitadora de corriente.
Código para arduino:

int IR1 = 0;
int IR2 = 0;
//////////variables de PWM
int motor2A = 5;
int motor2B = 6;
//////////variables de los motores
int motor1A = 4;
int motor1B = 7;
void setup() {
  Serial.begin(9600);/////////Establece la velocidad de datos en bits por segundo(9600)
  pinMode(2, INPUT);/////////sensor 1
  pinMode(3, INPUT);/////////sensor 2
  ////////////salidas motor normales
  pinMode (motor1A, OUTPUT);
  pinMode (motor1B, OUTPUT);
  ///////////salidas motor PWM
  pinMode (motor2A, OUTPUT);
  pinMode (motor2B, OUTPUT);
}
void loop() {
  IR1 = digitalRead(2);
  IR2 = digitalRead(3);
  Serial.print(IR1);//////Imprime datos en el puerto serie(IR1)
  Serial.print(IR2);//////Imprime datos en el puerto serie(IR2)
  /////////////sentencias
  if (IR1 == 0 && IR2 == 0) {       
    parar();
  } 
  else if (IR1 == 0 && IR2 == 1) { 
    derecha();
  }  
  else if (IR1 == 1 && IR2 == 0) {
    izquierda();
  } 
  else if (IR1 == 1 && IR2 == 1) { 
    avanzar();
  }

delay(200);
}

//////////////funciones
void avanzar() {
  digitalWrite(motor1A, 1);
  digitalWrite(motor1B, 1);
  digitalWrite(motor2A, 150);
  digitalWrite(motor2B, 150);
}
void derecha() {
  digitalWrite(motor1A, 0);
  digitalWrite(motor1B, 1);
  digitalWrite(motor2A, 0);
  digitalWrite(motor2B, 150);

}
void izquierda() {
  digitalWrite(motor1A, 1);
  digitalWrite(motor1B, 0);
  digitalWrite(motor2A, 150);
  digitalWrite(motor2B, 0);

}
void parar() {
  digitalWrite(motor1A, 0);
  digitalWrite(motor1B, 0);
  digitalWrite(motor2A, 0);
  digitalWrite(motor2B, 0);

}

Imagen de la simulación en Tinkercad:
Vídeo:


Conclusiones:
  • El programa arduino trabaja con lenguaje C++ esto hace que el método al momento de realizar el código sea mas sencillo.
  • Los comandos usados para el código son sencillos y prácticos, no obstante cada uno tiene una forma de sintaxis.
  • El programa tinkercad es una plataforma virtual capaz de simular un circuito, nos ayudo con la simulación para el carro 
Integrantes
Contreras Quispe, Erick
Puma Maldonado, Fabian 
Turpo Luque Diego

No hay comentarios:

Publicar un comentario