martes, 28 de marzo de 2017

Arduino 1

Arduino 1 es una placa micro controladora que en realidad es como un pequeño ordenador


Esta placa se programa, por ejemplo, en lenguaje de programación C, aunque existen aplicaciones para programarla con bloques de forma muy similar al scratch o al app inventor. Mediante esta placa y con los sensores adecuados se pueden automatizar muchas tareas de domótica, como por ejemplo, abrir y cerrar las persianas de dia y de noche, controlar a distancia electrodomésticos como el horno, activar alarmas, web cam's.
El kit del que disponemos incluye también una placa protoboard para realizar mas fácilmente las conexiones, sensores como pulsadores, termostatos, foto-resistencias, etc.

Lenguaje de programación Arduino


La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programación de alto nivel Processing que es similar a C++.

Funciones básicas y operadores


Arduino está basado en C y soporta todas las funciones del estándar C y algunas de C++.24 A continuación se muestra un resumen con la estructura y sintaxis del lenguaje Arduino:

Sintaxis básica

  • Delimitadores:;, {}
  • Comentarios: //, /* */
  • Cabeceras: #define, #include
  • Operadores aritméticos: +, -, *, /, %
  • Asignación: =
  • Operadores de comparación: ==, !=, <, >, <=, >=
  • Operadores Booleanos: &&, ||, !
  • Operadores de acceso a punteros: *, &
  • Operadores de bits: &, |, ^, ~, <<, >>
  • Operadores compuestos:
    • Incremento y decremento de variables: ++, --
    • Asignación y operación: +=, -=, *=, /=, &=, |=

Estructuras de control

  • Condicionales: if, if...else, switch case
  • Bucles: for, while, do. while
  • Bifurcaciones y saltos: break, continue, return, goto

Variable

En cuanto al tratamiento de las variables también comparte un gran parecido con el lenguaje C.
Constantes
  • HIGH/LOW: representan los niveles alto y bajo de las señales de entrada y salida. Los niveles altos son aquellos de 3 voltios o más.
  • INPUT/OUTPUT: entrada o salida.
  • false (falso): Señal que representa al cero lógico. A diferencia de las señales HIGH/LOW, su nombre se escribe en letra minúscula.
  • true (verdadero): Señal cuya definición es más amplia que la de false. Cualquier número entero diferente de cero es "verdadero", según el algebra de Boole, como en el caso de -200, -1 o 1. Si es cero, es "falso".
Tipos de datos
  • void, boolean, char, unsigned char, byte, int, unsigned int, word, long, unsigned long, float, double, string, array.
Conversión entre tipos
Estas funciones reciben como argumento una variable de cualquier tipo y devuelven una variable convertida en el tipo deseado.
  • char(), byte(), int(), word(), long(), float()
Cualificadores y ámbito de las variables
  • static, volatile, const.
Utilidades
  • sizeof()

Funciones básicas

E/S digital
  • pinMode(pin, modo).
  • digitalWrite(pin, valor).
  • int digitalRead(pin).
E/S analógica
  • analogReference(tipo)
  • int analogRead(pin)
  • analogWrite(pin, valor)
E/S avanzada
  • shiftOut(dataPin, clockPin, bitOrder, valor)
  • unsigned long pulseIn(pin, valor)
Tiempo
  • unsigned long millis()
  • unsigned long micros()
  • delay(ms)
  • delayMicroseconds(microsegundos)
Matemáticas
  • min(x, y), max(x, y), abs(x), constrain(x, a, b), map(valor, fromLow, fromHigh, toLow, toHigh), pow(base, exponente), sqrt(x)
Trigonometría
  • sin(rad), cos(rad), tan(rad)
Números aleatorios
  • randomSeed(semilla), long random(máx), long random(mín, máx)
Bits y Bytes
  • lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit()
Interrupciones externas
  • attachInterrupt(interrupción, función, modo)
  • detachInterrupt(interrupción)
Interrupciones
  • interrupts(), noInterrupts()
Comunicación por puerto serie
Las funciones de manejo del puerto serie deben ir precedidas de la palabra "Serial" aunque no necesitan ninguna declaración en la cabecera del programa. Por esto se consideran funciones base del lenguaje.25 Estas son las funciones para transmisión serial:
  • begin(), available(), read(), flush(), print(), println(), write()

Manipulación de puertos

Los registros de puertos permiten la manipulación a más bajo nivel y de forma más rápida de los contactos de entrada/salida del microcontrolador de las placas Arduino.26 Los contactos eléctricos de las placas Arduino están repartidos entre los registros B(0-7), C (analógicos) y D(8-13). Mediante estas variables ser observado y modificado su estado:
  • DDR[B/C/D]: Data Direction Register (o dirección del registro de datos) del puerto B, C ó D. Es una variable de Lectura/Escritura que sirve para especificar cuales contactos serán usados como entrada y salida.
  • PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C ó D. Es una variable de Lectura/Escritura.
  • PIN[B/C/D]: Input Pins Register (o registro de pines de entrada) del puerto B, C ó D. Variable de sólo lectura.
Por ejemplo, para especificar los contactos 9 a 13 como salidas y el 8 como entrada (puesto que el puerto D usa los pines de la placa Arduino 8 al 13 digitales) bastaría utilizar la siguiente asignación:
DDRD = B11111110;
Como se ha podido comprobar, el conocimiento del lenguaje C, permite la programación en Arduino debido a la similitud entre este y el lenguaje nativo del proyecto, lo que implica el aprendizaje de algunas funciones específicas de que dispone el lenguaje del proyecto para manejar los diferentes parámetros. Se pueden construir aplicaciones de cierta complejidad sin necesidad de muchos conceptos previos.

AVR Libc

Los programas compilados con Arduino (salvo en las placas con CorteX M3) se enlazan contra AVR Libc24 por lo que tienen acceso a algunas de sus funciones. AVR Libc es un proyecto de software libre con el objetivo de proporcionar una biblioteca C de alta calidad para utilizarse con el compilador GCC sobre microcontroladores Atmel AVR. Se compone de 3 partes:
  • avr-binutils
  • avr-gcc
  • avr-libc
La mayoría del lenguaje de programación Arduino está escrita con constantes y funciones de AVR y ciertas funcionalidades sólo se pueden obtener haciendo uso de AVR.27

Interrupciones

Las señales de interrupción son las siguientes:
  • cli(): desactiva las interrupciones globales
  • sei(): activa las interrupciones
Esto afectará al temporizador y a la comunicación serial. La función delayMicroseconds() desactiva las interrupciones cuando se ejecuta.

Temporizadores

La función delayMicroseconds() crea el menor retardo posible del lenguaje Arduino que ronda los 2μs. Para retardos más pequeños se debe utilizar la llamada de ensamblador 'nop' (no operación). Cada sentencia 'nop' se ejecutará en un ciclo de máquina (16 MHz) de aproximadamente 62,5ns.

Manipulación de puertos

La manipulación de puertos con código AVR es más rápida que utilizar la función digitalWrite() de Arduino.

Establecer Bits en variables

cbi y sbi son mecanismos estándar (AVR) para establecer o limpiar bits en PORT y otras variables.

Proyector que se pueden hacer con Arduino Uno


Un reloj despertador avanzado

Que ni Samsung ni Apple ni ninguna otra marca te diga cómo debe ser tu reloj avanzado. ¿Lo quieres en formato despertador? Pues dicho y hecho. Bueno, hecho todavía no. Te toca seguir el tutorial de Make para que en un fin de semana puedas acabar un proyecto donde los eventos de tu Google Calendar harán saltar los avisos y alarmas de un reloj que puedes personalizar como quieras.




Notificación de un nuevo correo

Aunque ya hay soluciones comerciales que lo hacen (la combinación de IF y las Philips HUE, por ejemplo), en esta selección se trata de hacérnos nosotros mismos un sistema que nos indique visual o sonoramente la llegada de un nuevo correo a nuestra cuenta en el ordenador.
Con la omnipresente placa Arduino, en este caso nos sirve la más básica, una conexión USB con el ordenador y dos pequeños programas (uno para comprobar el email entrante y otro para activar la notificación), conseguimos crear un sistema de aviso de nuevo email que puede componerse de un simple LED, un altavoz o lo que queramos.


viernes, 3 de marzo de 2017

Proyecto ROC (Robot Octopus Cangrejo)

Partiendo de una idea original de Leandro Piña Omeñaca hemos re-diseñado y construido un robot cabgrejo similar al del siguiente vídeo.

Aqui va el video
Nos proporciono esta imagen con el despiece

Con photoshop separamos las piezas y las llenamos de negro
Con la aplicación online selva3D convertimos la imágenes en figuras 3D en formato STL (Stereo Litografía)
Mediante la aplicación online tinkercad modificamos y re-diseñamos alguna de las piezas, como por ejemplo esta pata de cangrejo



El robot lo vamos a controlar en principio con el bloque de fischertechnik y la aplicación que lo programa LLWIN que esta disponible en web del instituto en el departamento de tecnología.
Como ejemplo en este 1º programa haremos que el robot de unos pasos hacia adelante, se pare, de unos pasos hacia atrás, se pare y vuelva a empezar.

Para el funcionamiento de la pinza ponemos 2 pulsadores, E1 y E2. Al pulsar E1 el motor M1 gira a derechas 0,2 segundos y se para, gira izquierdas 0.2 segundos, se para y vuelta a empezar. Si pulsamos E2 detiene el movimiento de abrir y crerrar. La captura de pantalla de programa es esta:

Baile del cangrejo
El motor de las patas derechas es M3 y lo vamos a controlar con el pulsador E3, el motor de las patas izquierda es M4 y lo vamos a controlar con E4, estos 2 motores, a derechas avanzan y a izquierdas retroceden,
El primer ''baile'' consiste en que el cangrejo avance 2 segs. retroceda 2 segs. y haga un giro

martes, 17 de enero de 2017

Base de datos

Una base de datos esta formado por una o varias tablas. Cada tabla esta formada por columnas que se llaman campos de la base de datos y por filas que se llaman registros.
Si la base de datos es la de una biblioteca las tablas pueden ser: tabla de libros, tabla de autores, tabla de editoriales...
Los campos de las tablas pueden ser de texto (se puede especificar la longitud máxima), numéricos (se puede especificar si enteros, decimales, notación científica...), fecha, etc..
Lo mas difícil es hacer el diseño de las tablas y las relaciones entre los campos de la tabla.

Ejemplo de la base de datos abies:
Las relaciones se crean para no repetir innecesariamente los mismos datos. Por ejemplo en la base de datos de la biblioteca, en la tabla fondos no tenemos que poner el nombre del autor, basta con poner la id del autor y el programa lo relaciona con la información que contiene la tabla autores. Los programas que manejan las bases de datos se llama gestores de bases de datos, el gestor de base de datos mas usado es acces. Otros gestores debas, paradocs, mysql....
En el instituto se mantienen las bases de datos de la biblioteca abies, la base de datos de gestión de alumnos y la base de datos del inventario. 
La política con respecto a la privacidad de los datos esta legislada de forma que no se permite la libre distribucion de los mismos, sin embargo a las empresas les interesa tener los datos de mucha gente. Si tu te haces una tarjeta del eroski en realidad les estas dando tu nombre, tu dirección, tu teléfono, y cuando te hacen un descuento con tu tarjeta saben perfectamente que productos compras

viernes, 14 de octubre de 2016

Diagramas de flujo

Un diagrama de flujo es una representación estructurada del proceso que debe seguir un programa.
Es independiente del lenguaje de programación que usemos
Los bloques que usa son:






Resultado de imagen de bloques diagramas de flujo

Por ejemplo el diagrama de flujo para el programa que nos resuelva una ecuación de 2º grado
seria el siguiente:




miércoles, 16 de marzo de 2016

miércoles, 14 de octubre de 2015

Doodle de google

Doodle significa garabato, los doodle de google son dibujos, o animaciones que suele poner google en su pagina principal para conmemorar alguna fecha, efemérides,  en casi todos se intuye el logotipo de google, algunos doodle curiosos son:





Otros son animaciones:




y otros son interactivos:





miércoles, 30 de septiembre de 2015

La logica binaria

La lógica de los aparatos informáticos es una lógica binaria. es semejante a la lógica de las proposiciones, esto es debido a que el estado de un interruptor (transistor) puede ser 0,1 (abierto, cerrado) al igual que las proposiciones pueden adoptar 2 valores: v,  f (verdadero o falso).
esta lógica binaria tiene sus operaciones propias. En circuitos la suma corresponde a una conexión en paralelo y el producto a una conexión en serie.
Vamos a usar un simulador de circuitos online para entender un poco el funcionamiento de esa logica:

-Ejercicio 1: Colocar 2 entradas en serie en todas las posicion-es posibles


-Ejercicio 2: Construir un semaforo de 3 colores

-Problemas de lógica:

1-. En una celda esta un prisionero. la celda tiene 2 puertas, una de las puertas conduce a la libertad y la otra a la muerte. Cada puerta tiene 1 guardián, uno de los guardianes miente siempre y el otro dice la verdad. Al prisionero se le permite hacer una sola pregunta a uno de los guardianes, sin saber si es el que miente o no. ¿Que pregunta debe hacer para elegir siempre la puerta que conduce a la libertad?

Solución: La pregunta podría ser: ¿Sí tu fueras el otro que puerta me diría que conduce a la libertad?

Explicación: Independientemente de a quien le preguntes has conseguido el tener información de dos proposiciones, una verdadera y otra falsa, por lo tanto el resultado va a ser siempre falso


2-. Un lógico se encuentra con 3 personas, una siempre miente, otra siempre dice la verdad y la otra contesta aleatoriamente. El lógico tiene que hacer 3 preguntas a quien quiera y tiene que adivinar quien es quien. Este problema se puede complicar hasta el problema de logica mas dificil del mundo 

miércoles, 23 de septiembre de 2015

Sistemas de numeración

Un sistema de numeración es un conjunto de símbolos y reglas con los que administrar datos numéricos. Los sistemas de numeración usados actualmente son proporcionales, es decir, un mismo símbolo tiene diferente valor según la posición que ocupe.
en la antigüedad para contar los objetos se usaban piedras, marcas.... Los mayas tenían un símbolo para el 5, que era una mano, el 10 dos manos y el 15 dos manos y un pie y el 20 un indio.
El sistema de numeración tradicional es el decimal , es decir, tiene de numero base el numero 10 y utiliza los símbolos 0 1 2 3 4 5 6 7 8 9. El hexadecimal tiene de base 16 y utiliza los símbolos 1 2 3 4 5 6 7 8 9 A B C D E F, el sistema binario tiene de símbolos el 0 y el 1




miércoles, 17 de junio de 2015

Cuadrado desaparecido

Construimos un triangulo rectángulo de 13 x 5 cm con las piezas de la figura

Su área sera por lo tanto 13x5/2
Re ordenamos las mismas piezas según la figura


La pregunta es ¿Donde esta el cuadrado desaparecido?
Si observamos los triángulos vemos que los catetos de los triángulos miden 2, 3, 5, 8 que curiosamente son términos de la sucesión de fibonacci, (muy relacionada con el numero áureo, la divina proporción)
El cuadrado desaparece a lo largo de la hipotenusa del cuadrado grande porque en realidad el primero no es un triangulo rectángulo






viernes, 29 de mayo de 2015

Autamaticación de acciones con photoshop

Cuando tenemos que hacer modificaciones a muchas imágenes a la vez, por ejemplo reducir el tamaño, cambiarlas a blanco y negro, aplicar un efecto, etc. Resulta muy útil usar los comandos de acciones de photoshop con estos comando se pueden grabar macros o pequeños programas para luego ejecutarlos automáticamente.

Nombramos la acción y grabamos los comandos que queremos que se ejecuten, una vez grabado dentro de la pestaña archivo; automatizar; lote elegimos el origen y el destino de las imagenes a tratar

miércoles, 15 de abril de 2015

ACERTIJOS

Cuando Einstein propuso este acertijo dijo que el 98% de la población mundial no seria capaz de resolverlo.
Personalmente creo que no es tan complicado encontrar la solución, es solo cuestión de tiempo y dedicación, de todos modos aquí puedes verla.
El acertijo dice así:
Tenemos 5 casas de cinco colores diferentes y en cada una de ellas vive una persona de una nacionalidad diferente.
Cada uno de los dueños bebe una bebida diferente, fuma una marca de cigarrillos diferente y tiene una mascota diferente. 

Tenemos las siguientes claves:
  1. El británico vive en la casa roja.
  2. El sueco tiene un perro.
  3. El danés toma té.
  4. La casa verde esta a la izquierda de la blanca.
  5. El dueño de la casa verde toma café.
  6. La persona que fuma Pall Mall tiene un pájaro.
  7. El dueño de la casa amarilla fuma Dunhill.
  8. El que vive en la casa del centro toma leche.
  9. El noruego vive en la primera casa.
  10. La persona que fuma Brends vive junto a la que tiene un gato.
  11. La persona que tiene un caballo vive junto a la que fuma Dunhill.
  12. El que fuma Bluemasters bebe cerveza.
  13. El alemán fuma prince.
  14. El noruego vive junto a la casa azul.
  15. El que fuma Brends tiene un vecino que toma agua.
Y por ultimo la pregunta:
¿Quién es el dueño del pececito?


PROBLEMA DE LAS EDADES:


Un encuestador llama a una casa donde es atendido por una mujer: - ¿Cuántos hijos tiene? - Tres hijas, -dice la señora-.- ¿De qué edades? - El producto de las edades es 36 y la suma es igual al número de esta casa.El encuestador se va, pero al rato vuelve y le dice a la señora que necesita más información para deducir las edades de sus hijas. La señora piensa un momento y le dice:- Tiene razón, la mayor toca el piano.¿Qué edades tienen las hijas?


Solución:





Como el encuestador conoce el número de la casa podría resolver el acertijo siempre y cuando no sea 13 el número de la casa porque en ese caso existirían dos posibilidades (1, 6 y 6 años ó 2, 2 y 9 años).Por eso tiene que volver a la casa a solicitar más información. El último dato aportado por la señora («la mayor toca el piano») le permite decidir entre las dos opciones, porque ahora sabe que una de las hijas es mayor que las otras.





Unos de los problemas propuesto a los aspirantes en los procesos de selección de google dice así:

¿Cual es la probabilidad de que al partir un palo en 3 partes se pueda formar un triangulo con los trozos resultantes?

Respuesta1: 100 %

Respuesta2: 33%


viernes, 10 de abril de 2015

APP INVENTOR

Esta es una pagina con la que se pueden crear aplicaciones como quieras, de varios tipos, etc.
Nosotros hemos creado varias aplicaciones:

No tienen virus y se pueden descargar pinchando en la imagen