martes, 30 de octubre de 2018

Post 4 Ejercicios Tinkercad (3) Manejar un Led RGB

En este ejercicio, nos dispondremos a modificar el color de un Led RGB, por medio de el control de sus parámetros de emision.

IMAGEN 1: Esquema de led RGB, notese las distintas entradas controladoras de cada espectro de color.


El circuito comprende la posibilidad de excitar cada entrada del Led independientemente, por medio de distintos pines de salida de la placa Arduino.

Materiales:
1x Arduino Uno
1x Protoboard
1x LED - RGB Catodo
3x 330Ω Resistencia
5x Cables tipo jumper

IMAGEN 1, La segunda entrada del Led se conecta a GND, mientras que la primera, tercera y cuarta entrada se conectan con los pines 9,10,11 del Arduino respectivamente. Atención a que cada entrada incluye una resistencia fija de 330 ohms.

El código que programa la incidencia de cada canal es el siguiente:

const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;

const int DISPLAY_TIME = 1000;  // used in mainColors() to determine the 
// length of time each color is displayed.

void setup()    //Configure the Arduino pins to be outputs to drive the LEDs
{
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop()
{
  mainColors();        // Red, Green, Blue, Yellow, Cyan, Purple, White
  //  showSpectrum();    // Gradual fade from Red to Green to Blue to Red
}

/******************************************************************
 * void mainColors()
 * This function displays the eight "main" colors that the RGB LED
 * can produce. If you'd like to use one of these colors in your 
 * own sketch, you can copy and paste that section into your code.
/*****************************************************************/
void mainColors()
{
  // all LEDs off
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Red
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Green
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Blue
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // Yellow (Red and Green)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(DISPLAY_TIME);

  // Cyan (Green and Blue)
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // Purple (Red and Blue)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);

  // White (turn all the LEDs on)
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, HIGH);
  delay(DISPLAY_TIME);
} // esta es una lista de todos los colores que puede producir el LED según el intervalo correspondiente. Notar que cada valor es digital (binario)

/******************************************************************
 * void showSpectrum()
 * 
 * Steps through all the colors of the RGB LED, displaying a rainbow.
 * showSpectrum() calls a function RGB(int color) that translates a number
 * from 0 to 767 where 0 = all RED, 767 = all RED
 *  
 * Breaking down tasks down into individual functions like this
 * makes your code easier to follow, and it allows. 
 * parts of your code to be re-used.
/*****************************************************************/

void showSpectrum()
{
  for (int x = 0; x <= 767; x++)
  {
    RGB(x);      // Increment x and call RGB() to progress through colors.
    delay(10);   // Delay for 10 ms (1/100th of a second) - to help the "smoothing"
  }
}

/******************************************************************
 * void RGB(int color)
 * 
 * RGB(###) displays a single color on the RGB LED.
 * Call RGB(###) with the number of a color you want
 * to display. For example, RGB(0) displays pure RED, RGB(255) 
 * displays pure green.
 * 
 * This function translates a number between 0 and 767 into a
 * specific color on the RGB LED. If you have this number count
 * through the whole range (0 to 767), the LED will smoothly
 * change color through the entire spectrum.
 * 
 * The "base" numbers are:
 * 0   = pure red
 * 255 = pure green
 * 511 = pure blue
 * 767 = pure red (again)
 * 
 * Numbers between the above colors will create blends. For
 * example, 640 is midway between 512 (pure blue) and 767
 * (pure red). It will give you a 50/50 mix of blue and red,
 * resulting in purple.
/*****************************************************************/
void RGB(int color)
{
  int redIntensity;
  int greenIntensity;
  int blueIntensity;

  color = constrain(color, 0, 767); // constrain the input value to a range of values from 0 to 767

    // if statement breaks down the "color" into three ranges:
  if (color <= 255)       // RANGE 1 (0 - 255) - red to green
  {
    redIntensity = 255 - color;    // red goes from on to off
    greenIntensity = color;        // green goes from off to on
    blueIntensity = 0;             // blue is always off
  }
  else if (color <= 511)  // RANGE 2 (256 - 511) - green to blue
  {
    redIntensity = 0;                     // red is always off
    greenIntensity = 511 - color;         // green on to off
    blueIntensity = color - 256;          // blue off to on
  }
  else                    // RANGE 3 ( >= 512)- blue to red
  {
    redIntensity = color - 512;         // red off to on
    greenIntensity = 0;                 // green is always off
    blueIntensity = 767 - color;        // blue on to off
  }

  // "send" intensity values to the Red, Green, Blue Pins using analogWrite()
  analogWrite(RED_PIN, redIntensity);
  analogWrite(GREEN_PIN, greenIntensity);
  analogWrite(BLUE_PIN, blueIntensity);
}

Imágen: El programa hará un incremento en los valores de cada rango de color. Colores secundarios como el púrpura son obtenidos de la proporción intermedia entre 2 rangos.

Post 3: Ejercicios Tinkercad (2) Leer un Potenciómetro

El objetivo de este ejercicio es poder leer la resistencia variable que genera un Potenciometro, en el momento en que una corriente (5V) es transmitida a través de este. Utilizando una entrada de la placa Arduino, podremos determinar la cantidad de corriente que ingresa según la resistencia asignada al potenciometro.

Materiales:
1x Arduino Uno R3 conectado a un computador por medio de un cable USB
1x Protoboard
1x LED
1x  Resistencia 330Ω
2x Cables tipo Jumper
1x Potenciometro

IMAGEN 1: Componentes. El potenciometro posee  entradas, siendo la del medio la que utilizaremos para transmitir las medición de resistencia.






Conectamos los componentes a la protoboard, asegurando que las lineas de corriente (+) y de tierra (-) se encuentren "puenteadas" (cada linea roja conectada a la salida de 5v, y cada linea negra conectada a GND).
El potenciometro debe estar conectado en sus entradas exteriores a 5V y GND respectivamente. La salida central se guiará al puerto analogo A0, que será configurado como INPUT. A su vez, el puerto 13 será configurado como salida, que se conectará con el anodo del LED.
IMAGEN 2: Conexiones que comunican la protoboard con la placa Arduino.

















A continuación, ingresaremos el código en la placa Arduino. El potenciometro enviará un valor de resistencia variable análogo, al Pin A0, dicho valor modulará el tiempo de delay() entre el estado HIGH/LOW del Led.


int sensorPin = A0;    // The potentiometer is connected to analog pin 0                  
int ledPin = 13;      // The LED is connected to digital pin 13
int sensorValue;    //We declare another integer variable to store the value of the potentiometer

void setup() // this function runs once when the sketch starts up
{
  pinMode(ledPin, OUTPUT);//definimos la salida 13 como OUTPUT
}

void loop() // this function runs repeatedly after setup() finishes
{
  sensorValue = analogRead(sensorPin); //Designamos la lectura del lector como un valor int(entero), obtenido del potenciometro)    

  digitalWrite(ledPin, HIGH);     // Turn the LED on
  delay(sensorValue);             // Pause for sensorValue in milliseconds (Cada intervalo está modulado por la variable sensorValue, recibida desde el pin A0
  digitalWrite(ledPin, LOW);      // Turn the LED off
  delay(sensorValue);             // Pause for sensorValue in milliseconds} 

IMAGEN 3: Circuito en operación. Los intervalos se regulan según el valor de la resistencia variable del potenciometro.










lunes, 29 de octubre de 2018

Post 2: Ejercicios Tinkercad (1) Blinking a LED


En este apartado, doy cuenta de los primeros ejercicios en electrónica utilizando la plataforma Tinkercad.



Ejercicio1, Blinking a LED: Realizaremos este experimento como una introducción a las fundamentales de la programación electrónica.
Materiales:
1x Arduino Uno R3 conectado a un computador por medio de un cable USB
1x Protoboard
1x LED
1x  Resistencia 330Ω
2x Cables tipo Jumper

  Image result for led catodo anodo

Notas: El ánodo es la entrada positiva de corriente, el cátodo es su salida. Arriba se encuentran todas las marcas de identificación en el LED.


IMAGEN1: Componentes del experimento (Arduino uno, Protoboard, resistencia 330 ohms, Led Rojo)


En este diagrama, podemos comprobar como la placa Arduino alimenta con 5V desde su salida POWER, conectada a la hilera izquierda Positivo (+), la electricidad pasa por el ánodo del LED, saliendo por su cátodo conectado a la hilera Negativo (-), por medio de la Resistencia de 330ohms.
La hilera negativa a su vez está conectada a la salida GND de la placa Arduino.


A continuación, programaremos el comportamiento del LED, mediante el uso del Puerto (PIN) 13.
Para ello, debemos designarlo como salida {pinMode(13, OUTPUT);}
A su vez, determinaremos su encendido y apagado por medio de los comandos
 {digitalWrite(13, HIGH); }{ digitalWrite(13, LOW);}
Y la velocidad de intervalo por medio del comando {delay(1000);}

A continuación incluiré el código en su totalidad:

void setup()
{
  pinMode(13, OUTPUT); //establecemos el pin 13 como salida de voltaje
}

void loop()
{
  digitalWrite(13, HIGH);   //Prende el LED, conectado por medio del PIN13
  delay(1000);              // Espera 1000 milisegundos
  digitalWrite(13, LOW);    // Apaga el LED  
  delay(1000);              // Espera 1000 miliseguindos.
}

IMAGEN 2: Nuevo circuito, el cable verde conecta la salida (pin 13), con el Anodo del LED.

IMAGEN 3: Led Encendido, demostrando el intervalo de 1 segundo entre estados HIGH/LOW.

Link Ejercicio: https://www.tinkercad.com/things/394z9zpxhoc-daring-juttuli-snaget/editel?tenant=circuits

Post 1. Intro


El siguiente Blog comprende los ejercicios y procesos relacionados con el curso de Seminario impartido por Carola Pino A.  durante el segundo semestre del Magíster en Artes Mediales.




Daniel Estrada (1985) tiene una doble Licenciatura en Artes Visuales (2017) y Lengua y Literatura Inglesas (2007).  Su paso por ambas carreras ha decantado en el estudio y experimentación con los signos que conforman nuestra identidad  (personal y comunitaria) dentro del contexto transhistórico actual.
Ideas: Identidad; Globalidad/Localidad,;Lengua  oficial/ vernácula; Memoria; Simulación; Territorio ;Material/Inmaterial.