miércoles, 27 de octubre de 2021

Librería pandas en jupiter notebook

Esta librería permite acceder, manipular y trabajar con bases de datos grandes y hacer análisis de una manera eficiente y sintacticamente efectiva

Debemos traspasar el acrhivo csv en la misma carpeta en que está guardada el archivo de Jupìter notebook

  1. Importamos la librería pandas usando as pd
  2. Luego para importar un archivo CSV usamos pd.read_csv('NOMBRE DLE ARCHIVO')
  3. Luego guardamos esto en un dataframe llamado df 

Atributo head

Se utiliza para imprimir las primeras filas del dataframe. Simplemente entre parentesis señalamos la cantidad de filas que deseamos imprimir

Atributo shape

Nos sirve para saber cuantos datos tenemos en nuestro dataframe y nos dará la cantidad de filas primeramente y de columnas



Atributo columns

Nos sirve para imprimir el nombre de cada columna

Imprimir los datos de una columna en específico

Simplemente usamos la variable correspondiente al csv que hemos llamado "df". y entre corchetes el nombre de la columna

y para limitar la cantidad de filas se utiliza seguidamente corchetes con el rango usando dos puntos

Imprimir dos o más columnas

Se utiliza doble corchetes y dentro los nombres de las columnas separadas por cola


Iloc

Con esta opción podemos ubicar un valor de acuerdo a coordenadas


Función describe

Facilita el análisis preliminar de los datos. Cálcula las estadisticas descriptivas básicas de cada columna: el conteo, el promedio, la desviación estandar, el mínimo, el máximo y los percentiles 25, 50  y 75

Función sort_value

Si organizamos los datos en base a una variable podemos ver si hay algún tipo de corelación. Vamos a usar. Entre parentesis se coloca la columna con la cuál vamos a organizar nuestro dataframe y lo hará en orden ascendente


Para cambiarlo a orden descendente agregamos el ascending = False

Si queremos ordenar el data frame de a cuerdo a dos columnas debemso dentro del parentesis crear una lista de las columnas

Para filtrar por condiciones

Entre corchetes debemos escoger las filas con las que quedemos quedarnos. Por ejemplo queremos las filas en las que rio es igual a 1

Para agregar dos condiciones simplemente usamos el &

Agregar una columna nueva a partir de las ya existentes

Por ejemplo si queremos crear una columna nueva que sea la suma de dos columnas, entre corchetes llamamos a la nueva columna y decimos que es igual a la suma de las dos columnas

Si quisieramos agrupar nuestro dataframe de acuerdo con la variable rio y agregando la función "mean" nos saca los promedios de todas las variables 

También podemos usar dos variables pasandole una lista 
Podemos sacar el valor total de las variables con sum. Suma el total de todas las variables separados 


jupiter notebook

¿Que es jupyter notebook?

Es una aplicación gratuita que permite desarrollar código en diferentes lenguajes. Fué creada con la intención de facilitar el análisis de bigdata, machine lerning y ciencia de datos. Otra bentaja es que ayuda en la gestion y administración de paquetes. Para hacerlo utiliza un sistema llamado "conda". Este sistema contiene más de 7500 paquetes utiles para quellas areas 

Primero debemos descargar Anaconda:

https://www.anaconda.com/products/individual

 Vamos a propiedades de equipo en window, luego a "configuración avanzada", luego "variables de enterno" y seleccionamos "PATH"


Para entrar simplemente vamos a jupyter

Para ejecutar un programa usamos el "run" o Ctrl+Enter

Si nos fijamos cada celda tiene un número y ese número es el orden de ejecución que




Markdown

Es un lenguaje de programación que sirve para manipular texto
Para reducir el tamaño de las letras implmente aumentamos el #


jueves, 14 de octubre de 2021

Sensor ultrasonico HC-SR04

Este sensor sirve para estimar la distancia de un obstaculo que tenga al frente. Lo que hace es emitir una rafaga de ultrsonido esperando que rebote. El alcance máximo aproximado de este sensor es de 4 a 5 metros 



La velocidad del sonido en el aire es una constante que ronda lo 300 metros por segundo, entonces estimando cuanto demora en regresar el ultrasonido podemos conocer la distancia aproximadamente


El sensor cuenta con 4 pines:
  • Vcc: Es donde recibe la energía
  • Trig: Triger o gatillo. Es un receptor de pulso desde el arduino para que pueda emitir la rafaga ultrasonica
  • Echo: Desde este pin se recibe el rebote donde vamos a tener un pulso que va hacia positivo y se va a prolongar durante el tiempo hasta que el sensor reciba una respuesta. Una vez el rebote pasa al receptor de vuelta el pulso pasa a cero por lo que el ancho de pulso que se obtiene en echo es proporcional a la distancia en que está el obstáculo. 
  • GND: Tierra
La operación será: Los microsegundos que se tarde el ultrasonido en ir y volver dividido 58 será igual a la distancia en cm



Programación

1. Vamos a crear dos variables, una para el pin trigg y otra para echo

2. Vamos a crear una función tipo void llamada "gatilla"

  • Escribimos en HIGH el pin trigg
  • Para generar el ancho de 10 microsegundos usamos el delayMicrosecods
  • Luego debemos poner en cero el pin por lo que lo volvemos a escribir pero en LOW
3. Vamos a crear una función tipo int llamada "mide_distancia" y dentro:
  • Lo primero es llamar a la función gatilla
  • Ahora debemos medir el ancho de pulso de respuesta y para ello usamos la función "pulseIn" donde señalamos el pin y el estado del pin 
  • Lo guardaremos esta función en una varieble tipo long llamada tiempo
  • Finalmente debemos devolver el tiempo con return

4. En el Void setup:

  • Vamos a definir con pinMode trigg como salida y echo como entrada
  • Para evitar ruidos al trigg debemos escribir un bajo
5. En Void loop:
  • Vamos a imprimir el tiempo el serial
  • Luego dentro el println vamos a meter la función mide distancia

Este resultado nos entrega el monitor serial

Ahora usamos el calculod e la distancia


Y nos da el resultado en cm

miércoles, 13 de octubre de 2021

Variables con monitor serial con arduino

Variables

Boleanas (bool): Permite establecer sus valores como verdadero o falso
Enteros (int): Variable que toma valor numérico positivo o negativos
Flotante (float): Variable que toma valor numérico con decimales
long: Variable que puede tomar valores gigantes. Puedes usarlo para alojar numeros pequeños pero no es eficiente ya que se desperdicia memoria
Char: Es simplemente un bit o un caracter. Pueden almacenar una sola letra y el valor va entre comillas simples. Los numeros que se coloquen como valores no serán interpretados como tales si no como caracteres 
String: Cadenas de texto. El valor irá entre comillas dobles 
Vector: Unión de varios valores numéricos como la posición de un objeto de acuerdo a los valores de sus dimenciones, eje x, y, z

Monitor Serial 

1. El Monitor serial se habre con Serial.begin y entre el parentesis la velocidad que la optima es 9600
2. Para imprimir usamos Serial.print y si agregamos ln se imprime en vertical. Dentro del parentesis señalamos que queremos imprimir
3. Para darle tiempo a la placa arduino para imprimir por serial agregamos un delay 
4. En void loop agregamos el Serial.println. para imprimir valores de variables. Si en este caso tenemos un valor int debemos convertirlo a string

 

El problema que tenemos es que el loop se ejecuta muy ràpido y no deja ver los numeros por lo que debemos agregar un delay después de imprimir lo primero en void setup y luego en el loop un delay paar que espere un segundo entre impresión e impresión



Concatenar es unir dos cadenas de texto



Variables globales

Las variables que se colocan antes del void setup o fuera de culaquier función y estas pueden modificarse dentro de las funciones

Las variables siempre tienen que declararse antes de ejecutarse


Si hacemos lo siguiente nos va a generar error


Potenciometro con arduino

 El potenciometro es util para controlar volument de un radio o equipo de sonido, atenuar o disminuir el voltaje de un led, etc. Contiene 2 resistencias y cuando se gira la perilla cambia el valor

El potenciometro tiene 3 patitas. La 1 que es la positiva, reciber la anergía, la tercera que es la negativa vuelve a tierra y en la segunda se define el porcentaje de resistencia de salida

¿Como calculamos la intensidad?
Si tenemos que el voltaje de entrada es de 5V y el RT (que es la suma de las dos resistencias) es 10Kohm entonces podemos calcular la intensidad dividiendo V/R

Para calcular el voltaje de salida (Vout) debemos multiplicar la intensidad por el R2 y el R2 tendrá un valor dependiendo de donde esté la perilla girada. Si la perilla está girada totalmente a la derecha el valor de R2 sería 0, por lo que el Vout sería 0, y si la perilla está girada totalmentre a la izquierda el R2 sería 10000 por lo que el Vout sería 5V

¿Como lo conectamos?

Programación básica

1. Lo que debemos hacer es guardar el valor que está dando nuestro pin intermedio por lo que debemos agregar una variable flotante llamada vOut para declararlo.
2. Luego como por un pin vamos a estar leyendo el voltaje vamos a declarar la flotante con Vread y con pinMode vamos a suar esta variable y codificarla como entrada
3. Luego en nuestro loop con la variable vOut vamos a empezar a almacenar el valor que estamos leyendo desde nuestro pin con vOut = analogRead(vRead)

Lectura analógica

Conexión

Vamos a usar entradas analogicas. El atmega tiene un covnertidor analógico digital de 6 canales y por cada uno de estos canales se puede ingresar una tención, esa tención se puede medir con mayor o menor presición 

1. Vamos a crear una variable llamada "valor_leído" que será igual a la función analogRead

2. En el parentesis de la función analogRead debemos colocar el pin por el cual entra la tención que se quiere leer. Usaremos A0

3. Vamos a usar la función analogWrite para generar una señal PWM con el pin digital 3

4. Seguidamente de declarar el pin vamos a poner "valor leído"




Monitor serial

Para poder monitoriar el valor de tención agregamos el monitor serial


Si aumentamos el potenciometro al máximo el valor que nos da es el de 1023 correspondiente al valor de bip

Convertir a voltios

Para poder medir voltios, arduino tiene una función especial llamada map. Dentro del parentesis usamos el valor original que es la variable "valor_leído", luego el valor mínimo leído dentro del convertidor digital que es cero, luego el valor máximo que es 1023, luego debemos colocar valor mínimo y máximo del rango de voltaje (de 0v a 5v);



El problema que tenemos ahora es que como los numeros son enteros no tenemos ninguna presición. Para ello es necesario agregar una función que llamaremos mapfloat que contiene toda esta formula marcada que nos servirá para poder entregar valores decimales


Otra forma también es usar el rango de 0 a 255 que es la capacidad máxima de valores analogos




Instalar paquetes de phyton en blender

Para agregar nuevos paquetes o mpdulos al phyton que tiene blender tenemos dos opciones según la documentación de blender   1. Reemplazar el...