viernes, 31 de mayo de 2019

Resumen del año

Esta última entrada la voy a dedicar para describir este tercer trimestre y un último apartado para hablar sobre las variables y las entradas digitales y analógicas.
La verdad es que en este tercer trimestre me lo he pasado genial.  Trabajar el tema de processing y arduino me ha gustado mucho. Me parece un tema muy interesante y útil para trabajos futuros. 
Tanto con las prácticas como con los proyectos más prácticos he aprendido mucho.

En cuanto a las variables vamos a hablar de las más importantes:

-Char: Un tipo de datos utilizado para almacenar un valor de carácter. Los caracteres se escriben entre comillas simples, como este: 'A' (para caracteres múltiples - cadenas - use comillas dobles: "ABC").
La sintaxis es char var = val; y var es nombre de la variable y val: el valor a asignar a esa variable.

-Byte: Un byte almacena un número sin signo de 8 bits, de 0 a 255 y la sintaxis sería byte var = val;

-Int: Los enteros son su tipo de datos primario para el almacenamiento de números.

En el Arduino Uno (y en otros tableros basados ​​en ATmega) un int almacena un valor de 16 bits (2 bytes). Esto produce un rango de -32,768 a 32,767 (valor mínimo de -2 ^ 15 y un valor máximo de (2 ^ 15) - 1). En las placas basadas en Arduino Due y SAMD (como MKR1000 y Zero), un int almacena un valor de 32 bits (4 bytes). Esto produce un rango de -2,147,483,648 a 2,147,483,647 (valor mínimo de -2 ^ 31 y un valor máximo de (2 ^ 31) - 1).

Los números negativos de la tienda de int con una técnica llamada ( matemáticas de complemento de 2 ). El bit más alto, a veces denominado bit de "signo", marca el número como un número negativo. El resto de los bits se invierten y se agrega 1.
Sintaxis es int var = val;

-Long:Las variables long son variables de tamaño extendido para almacenamiento de número y almacenan 32 bits (4 bytes), desde -2,147,483,648 a 2,147,483,647.

Si haces matemáticas con números enteros, al menos uno de los números debe ir seguido de una L, lo que obliga a ser un largo. Vea la página Constantes de enteros para más detalles.

Sintaxis es long var = val;

-Float: Tipo de datos para números de punto flotante, un número que tiene un punto decimal. Los números de punto flotante a menudo se usan para aproximar valores analógicos y continuos porque tienen mayor resolución que los enteros. Los números de punto flotante pueden ser tan grandes como 3.4028235E + 38 y tan bajos como -3.4028235E + 38. Se almacenan como 32 bits (4 bytes) de información.
Sintaxis es float var = val;

-Boolean: boolean tiene uno de los dos valores, trueo false. (Cada booleanvariable ocupa un byte de memoria.)
La sintaxis es boolean running = false;

De todas formas dejo el enlace de la página donde he encontrado la información aquí.




















jueves, 30 de mayo de 2019

Casa Domótica

Imagen relacionada
Mediante la plataforma TINKERCAD en la parte de CIRCUITS, hay que realizar un proyecto con arduino:
El proyecto debe ser tal que:
- En función del voltaje de entrada de un LDR (entrada voltaje ANALÓGICO de 0 a 1023) se ilumine un LED con intensidad variable, es decir utilizando una entrada digital PWM (salida ANALÓGICA de 0 a 255)
- Se puede utilizar  las funciones analogWrite y map. Buscadlo si no sabéis cómo utilizarlo.
- Antes de todo deberéis calibrar el LDR.

El código para realizar el proyecto lo dejo aquí.
También dejo aquí mi proyecto para ayudaros a hacerlo.

Coche fantástico

Resultado de imagen de logo arduino png


Mediante la plataforma TINKERCAD en la parte de CIRCUITS, tenemos que realizar un proyecto con arduino:
El proyecto debe ser tal que:
- Al apretar un botón, una serie de 5 LEDS deben encenderse y apagarse como hacía el coche fantástico (knight rider).

El código le podéis descargar aquí.
También dejo mi proyecto aquí para que os mireis la parte electrónica.






martes, 28 de mayo de 2019

Semáforo

Resultado de imagen de logo arduino png


Vamos a realizar un semáforo con unos Leds. Es ideal para iniciarnos en la programación y el montaje de circuitos porque, como veréis, es muy fácil.
Empezaremos nuestro primer proyecto describiendo los elementos que vamos a necesitar.
1 x Arduino UNO R3
-1 x Protoboard
-1 x Led rojo 3mm
-1 x Led amarillo 3mm
-1 x Led verde 3mm
-3 x resistencias de 220Ω.
-Cables para conectar todo.
Una vez que tenemos todo, hacemos nuestro montaje siguiendo el siguiente esquema.
Imagen 8 en Tutorial Arduino: Ejemplo Semáforo







Utilizaremos los pines digitales (rojo), (amarillo) y (verde). Al conectar los Leds hay tener en cuenta que tienen polaridad, por lo que hay que colocarlos bien para que funcionen. En los Leds la patilla corta, o el lado que está achatado, es el negativo e irá conectado a tierra (GND en la placa) a través de una resistencia. La patilla larga, o lado redondeado, es el positivo y se conectará al pin del Arduino correspondiente.
Una vez montado, abriremos nuestro IDE Arduino y escribiremos el programa (sketch ).
Podéis descargar proyecto aquí.
Os le dejo en este enlace aquí.








lunes, 27 de mayo de 2019

Pelota rebotadora

Debemos realizar un programa en processing que dibuje una bola que empiece cayendo desde arriba y al llegar abajo rebote para ir hacia arriba de nuevo. Además tenemos que dibujar una especie de canal sobre el que irá canalizada por medio de dos rectángulos coloreados de rojo y azul.
- Usaremos la instrucción IF-ELSE.
- Otra pista es poner la coordenada Y en una variable que ira aumentando (o disminuyendo) en cada pasada del LOOP, hasta que sea la altura o el suelo de la pantalla.
Puedes descargar el código aquí
Este sería el resultado final:

viernes, 24 de mayo de 2019

Bloque 3. Arduino entradas analógicas

Resultado de imagen de logo arduino png


Bueno, entramos ya en el tercer bloque en el cual vamos a seguir hablando sobre arduino centrándonos más en las entradas analógicas.
Con el panel de control, se pueden obtener valores analógicos de los pines analógicos. Tenemos un grupo de pines en la placa marcados como ANALOG IN, que están numerados de A0 a A5. En cambio, leyendo 0 V o la tensión de alimentación (5 V o 3,3 V dependiendo de la placa), estos pines  permiten leer valores entre 0 y 1023. Cuando no hay voltaje en el pin, la lectura es 0. Cuando aplicamos la mitad de la tensión de alimentación , será 512 y con voltaje máximo, 1023. Para leer estos valores necesitará analogRead () en lugar de la función digitalRead ().

Las entradas analógicas están situadas en la parte inferior y van de A0 a A5.
En cuanto a los sensores que van con estas entradas analógicas (que por lo tanto son analógicos) son los potenciómetros, inflarrojos, LDR...



Cada vez que vamos a realizar un proyecto con arduino, lo que debemos hacer primero sería realizar la parte electrónica, es decir, conectar bien todos los cables, sensores, actuadores...Una vez que tenemos bien conectado todo lo que sería la parte más práctica vendría insertar el código en la placa.
La placa arduino se conecta a el ordenador con un cable USB. La forma en que las tarjetas “hablan” con el ordenador es a través de algo que se llama un puerto serie. Los puertos serie se pueden usar para intercambiar datos bastante complicados con el ordenador. En lugar de las señales digitales o analógicas, puede enviar o recibir texto.

Con la comunicación en serie también puede comunicarse con otros softwares. Por ejemplo, podría usar la pizarra para leer desde un botón y enviar los datos del estado del botón a un boceto de procesamiento que cambia el color de la pantalla cuando se presiona el botón.

En cuanto al proyecto, en este bloque no hemos realizado ninguno.





jueves, 23 de mayo de 2019

Bloque 2. Arduino entradas digitales


En este bloque vamos a empezar a trabajar con arduino.

Los pines digitales estarían en este caso en la parte superior y serían los pines 13,12,11.10...
Son 14 numerados del 0 al 13.

Para este bloque vamos a utilizar el programa de arduino, el cual también utiliza java y es parecido a processing. Las funciones son prácticamente iguales a la de processing.

En cuanto a los sensores que utilizamos son:
-Leds
-Motores


Los sensores serían los pulsadores principalmente (incluido en la imagen junto al led).

Estos elementos utilizan código binario para realizar sus funciones:


Aquí dejo un enlace para entender mejor este 2 apartado.

vídeos bloque 2



Ahora vamos a ver mi proyecto:

Simón dice:

En esta unidad hemos tratado el tema de arduino: la parte teórica de programación y la parte práctica con elementos reales. Nos hemos dividido en grupos de 3 personas y a cada equipo se le ha asignado un proyecto diferente. A mi equipo le ha tocado el juego de simón dice.
Para este trabajo vamos a necesitar:


  • 1 x placa controladora
  • 1 x Shield Educativa
  • 1 x breadboard
  • 1 x módulo botón
  • 1 x potenciómetro
  • 1 x piezo
  • 5 x LED
  • 5 x resistencia 220 ohm
  • 1 x cable de módulo
  • 15 x cable de prototipado
Lo que debemos hacer es lo siguiente:
-Conectar el shield en la parte superior de la placa controladora.
-Conecta 5 leds a través de puente de la breadboard externa.
-Conecta la resistencia de 220 ohm al pin digital 2. Conecta la resistencia al terminal positivo del primer led.
-Conecta cada pin digital con su led del mismo método.
-Conecta el terminal negativo a GND.
-Conecta el potenciómetro a la breadboard de la shield. Conecta el pin central al potenciómetro A0, el pin izquierdo a GND y el derecho a la alimentación.
-Conecta el piezo a través del puente de la breadboard. Conecta un terminal del piezo al pin digital 8 y el otro a GND.
-Conecta el módulo botón al conector D9 de la shield.

Hasta aquí llegaría la parte práctica, ahora vamos a por la teórica. A continuación citaremos los códigos necesarios:

/*
* SimonSays
* 
* Test your memory with this game!
*
* LEDs will blink in a pattern that you have to remember and repeat. 
* If you get it right, the game gets more and more challenging. 
*
* (c) 2013-2016 Arduino LLC.
*/

 
#include <EducationShield.h>

/*
  An array of pin numbers to which LEDs are attached
  the defaults are 2 to 6 but you can choose any of the digital 
  pins. 
*/
int ledPins[] = {2, 3, 4, 5, 6};
int pinCount = 5;
VUMeter vuMeter;

Knob pot=Knob(A0);//a knob is connected to A0

Button button = Button(9); //a button is connected to port D9

Melody piezo=Melody(8);//a piezo is connected to digital pin 8

//Set the game parameters
int turns_begin=2;//a new game starts with 2 turns
int turns_max=10;//the most difficult game has 10 turns

int game[10];//array for storing the "simon says"
int turns=2;//for storing the number of turns in current game
int blinkTime=500;//how fast does "simon says" blink

void setup(){
  //initialize the components
  vuMeter.config(pinCount, ledPins);
  vuMeter.begin();
  pot.setLevels(5);
  button.begin();
  
  //Create a random seed, so we can call random() later.
  randomSeed(analogRead(A5));
}
void loop(){
  newGame();
  simonSays();
  delay(1000);
  getInputs();
}

void newGame(){
  vuMeter.blinkAll(200, 3);
  vuMeter.clear();
  delay(500);
  //Generate simon says, it'll be stored in an array
  //So we can compare with player's input later
  for(int i=0;i<turns;i++){
    game[i]=random(pinCount);
  }
}
void simonSays(){
  //Display simon says to the player. 
  for(int i=0;i<turns;i++){
    vuMeter.on(game[i]);
    delay(blinkTime);
    vuMeter.off(game[i]);
    delay(blinkTime);
  }
}
void getInputs(){
  //Get "i" inputs where "i" matches the number of 
  //simon says in this round.
  for(int i=0;i<turns;i++){
    int input;
    //button.released() stops the program, so
    //let's do it in short pulses, in between 
    //we can change the vuMeter display.
    while(!button.released(10)){
     vuMeter.clear();
     vuMeter.on(pot.getLevel());
    }
    //When button is released, get the adjusted 
    //value from the knob
    input=pot.getLevel();
    if(input==game[i]){
      //if your input is right, play a score sound
      //and continue.
      piezo.effect_score();
    }else{
      //Otherwise, gameover. Stop the function from
      //continuing by an empty return.
      gameOver();
      return ;
    }
  }
  //When all the inputs matched simon says, you win
  //this round and level up.
  delay(500);
  levelUp();
}
void gameOver(){
  //When it's gameover, difficutly resets 
  turns=turns_begin;
  //And play the gameover sound
  piezo.effect_gameover();
}
void levelUp(){
  //When level up, adds more difficulty until it reaches maximum
  if(turns<turns_max){
    turns++;
  }
  //And play a wining sound
  piezo.effect_win();
{

Esta sería el proyecto. Lo recomiendo ya que es muy dinámico, sencillo, divertido y entretenido para aprender esta parte del temario.















lunes, 20 de mayo de 2019

Bloque 1. Processing

pde-128
 Este primer apartado lo dedicaremos a processing, a lo más básico de esta plataforma.
Empezaremos con las funciones "void setup" y "void draw".


La función setup y la función void draw es necesaria para iniciar todos los programas. Ambas se terminan con dos paréntesis y con una llave y se inicia con otra llave.

Ahora vamos a hablar de los colores. Cada color tiene unos colores específicos y se pueden encontrar en la calculadora de colores RGB en internet.



Ahora vamos a dibujar una línea. Para ello necesitaremos introducir la función "line" y entre paréntesis pondremos las coordenadas que queremos que tenga la línea (x,y,x,y).

Ahora vamos a cruzar 2 líneas y vamos a añadirlas colores. Utilizaremos estas funciones:
background(255); line(0, 0, 100, 100); stroke(0, 0, 255); line(0, 100, 100, 0);  
A continuación lo que queremos es  ajustar una elipse a el tamaño que elijamos de pantalla:
size(400, 200);
ellipse(width/2, height/2, width, height);

Voy a dejar unos vídeos resumen con todo lo que tiene este apartado:

Bloque 1

Ya que sabemos todas las funciones necesarias, vamos a realizar nuestro primer proyecto: la serpiente roja. El código es el siguiente:
int red = 255;
 
void setup() {
  size(400, 400);
}

void draw() {
  red = red - 1;            
  if (red < 0){
    red = 255;                
  }
  
  noStroke();             
  fill(red, 0, 0);          
  ellipse(mouseX, mouseY, 30, 30); 
}
El resultado final es:
El segundo proyecto es la casa. En este proyecto tenemos que realizar una 
casa con unos colores específicos. El código es el siguiente:
void setup() {
  size(400, 400);
}
void draw() {
  fill(255,0,0);
  rect(100,100,200,250);
  fill(0,255,0);
  line(300,100,200,25);
  line(100,100,200,25);

  fill(66,29,0);
  strokeWeight(10);
  line(150,350,150,250);
  line(250,350,250,250);
  line(150,250,250,250);  
  fill(204,246,255);
  strokeWeight(5);
  ellipse(150,150,50,50);
  ellipse(250,150,50,50);
}
Para finalizar este apartado dejo unos apuntes PDF:
Resumen de instrucciones


lunes, 13 de mayo de 2019

HOLA MUNDO!!!

Resultado de imagen de ies nueve valles



Desde IES Nueve Valles, 4 ESO, vamos a comenzar un curso sobre arduino. Vamos a dividir este tema en 5 apartados en los cuales realizaremos algún proyecto así como tutoriales para entenderlo todo. La página que vamos a utilizar es ctc 101. Aquí dejo el enlace:
https://create.arduino.cc/ctc/101/

También dejo un enlace a un vídeo de un tutorial para ir introduciendo el primer tema.


Resumen del año

Esta última entrada la voy a dedicar para describir este tercer trimestre y un último apartado para hablar sobre las variables y las entrada...