Mostrando entradas con la etiqueta ARDUINO. Mostrar todas las entradas
Mostrando entradas con la etiqueta ARDUINO. Mostrar todas las entradas

20 de mayo de 2021

Programando un ATtiny

Serie de videotutoriales dedicados a la programación de un dispositivo ATtiny85. Agardecer a Juan, del grupo de telegram Roboticlaje todo lo que nos ha enseñado. En estos videotutoriales se repasan los objetivos que tengo al realizarlos, qué es un ATtiny85, cuál es su puerto de entrada salida y cómo se accede a sus registros, la mecánica de cómo escribir un programa (tanto en el IDE Arduino como en VSCode - PlatformIO) y subirlo al simulador, cómo manipular los registros del puerto B del ATtiny85, el análisis razonado y el diagrama de flujo - pseudocódigo de un programa que haga parpadear un LED, la escritura del código en VSCode - PlatformIO y su simulación, y por último su carga física en un ATtiny85 con el IDE Arduino.

Canal de youtube: https://www.youtube.com/channel/UCKGghBaYzcKmnO0sr-TwtMw
Portfolio: http://agrportfolioeducativo.blogspot.com/

SimulIDE: https://www.simulide.com/p/downloads.html
PlatformIO: https://platformio.org/
Visual Code Studio: https://code.visualstudio.com/
IDE Arduino: https://www.arduino.cc/en/software
Pseint: http://pseint.sourceforge.net/
Inkscape: https://inkscape.org/es/

Programar Attiny85 con un Arduino Uno: https://quique123.wordpress.com/2018/05/07/arduino-iot-tutorial-simple-programar-attiny85/
                      https://youtu.be/QoEYSuvdpyo

Código: https://gist.github.com/agrgal/e47e32fa88a34c117147febea6b28c06


27 de enero de 2019

Cacharreando con el led RGD y Arduino

Esta tarde he estado practicando un poco. Es lo que tiene estar encerrado en casa... Bueno, no voy a desvelar lo que tengo en la cabeza... Todavía, pero aquí va un preliminar. Un control con un potenciómetro de los colores de un LED RGB (cátodo común). Más información en https://www.prometec.net/rgb-led/

El chasco es que la mezcla de colores no es "color mezcla"; o al menos a mí no me lo parece. La mezcla, por ejemplo, de azul y verde no da amarillo, en el sentido de que, al menos, no es esa la apariencia sino dos luces verdes y azules juntas. Pero en fin. Otros tonos parecen más acertados. 

La idea es tener un color progresivo con el potenciómetro desde el rojo al verde. No sé si lo he logrado mucho, pero por lo menos funciona.



Código arduino

long valor = 0; // valor de entrada del potenciómetro analógico
int pinElegido[]={3,5,6}; // valores de los pins
float colorIntermedio[]={10.0,100.0,100.0}; // colores que se alcanzan en el valor intermedio (1) RGB
int numPin = 2;

void setup() {
  pinMode(3,OUTPUT); // salidas analógicas
  pinMode(5,OUTPUT); // salidas analógicas
  pinMode(6,OUTPUT); // salidas analógicas
  Serial.begin(9600);

}

void loop() {
  valor = analogRead(A0);
  encender(valor); // devuelve un número entre 0 y 2 con la situación del valor
  delay(250);
}

// *********
// Funciones
// *********

void encender(long dato) {
  int valores = map(dato,0,920,0,900); // depuración del rango... El sensor no da más de 920 (ver cuando cambie de sensor)
  int cual = map(dato,0,920,0,10); // Elijo cual es el que me corresponde... Pero a lo mejor no hace falta
  float x = valores / 450.0; // paso a las x los valores, entre 0 y 2 (máximo se toma 900).
  // Funcion parabólica para el rojo
  float red = (127.5-colorIntermedio[0])*x*x+(2*colorIntermedio[0]-382.5)*x+255.0; // esta función calcula los valores de rojo, pasando por los colores 255 en 0,colorIntermedio[0] en 1 y 0 en 2
  red=red*(red>=0.0); // corta los valores negativos y los pone a cero

  // **********************************
  // Función exponencial para el verde
  // **********************************
  float Agreen= (colorIntermedio[1]*colorIntermedio[1])/(2.0*colorIntermedio[1]-255.0);
  float Cgreen = log(1.0-colorIntermedio[1]/Agreen);
  // Serial.print(Agreen,6);   Serial.print(" -- " );   Serial.print(Cgreen,6);
  float green = Agreen*(1-exp(Cgreen*x));  
  // float green = (127.5-colorIntermedio[1])*x*x+(2*colorIntermedio[1]-127.5)*x+0.0; // esta función calcula los valores de verde, pasando por los colores 0 en 0,colorIntermedio[1] en 1 y 0 en 2
  // green=green*(green>=0.0); // corta los valores negativos y los pone a cero
  
  float blue = -colorIntermedio[2]*x*x+2*colorIntermedio[2]*x; // esta función calcula los valores de azul, pasando por los colores 0 en 0,50 en 1 y 0 en 2
  blue=blue*(blue>=0.0); // corta los valores negativos y los pone a cero
  
  analogWrite(pinElegido[0],(int) red); // Escribo en el pin primero el valor de los rojos. Valor absoluto corta los valores negativos
  analogWrite(pinElegido[1],(int) green); // Escribo en el pin primero el valor de los rojos
  analogWrite(pinElegido[2],(int) blue); // Escribo en el pin primero el valor de los rojos
  /* 
  for (int i=0;i<=2;i++) {
    analogWrite(pinElegido[i],colores[cual][i]); //en cada pin Red 3, Green 5, Blue 6 se escribe los valores de "cual" he escogido
  } */
  // Serial.println((String) cual +" : "+ (String) colores[cual][0] +":" +(String) colores[cual][1] +":"+ (String) colores[cual][2] ) ;
  Serial.println((String) dato +" --> "+ (String) x +" : "+ (String) red +":" +(String) green +":"+ (String) blue + " cualitativo: " + (String) cual ) ;
}

21 de febrero de 2017

Luces de escalera

Pequeño proyecto presentado para el curso de ARDUINO, con Juanma, en el CEP de Jerez (Febrero - 2017). Consiste en el control de las luces de una escalera, que se apagan automáticamente tras un tiempo determinado.


29 de agosto de 2016

Estación meteorológica ONLINE ARDUINO.

Tras varios día de estudio, investigación y programación he diseñado una simple estación meteorológica que espero que os guste. Envía datos desde un ARDUINO UNO con tarjeta ETHERNET a través de la red y, otro servidor web, es capaz de ejecutar una aplicación para leer y tratar los datos. 

  1. Información en Google Drive
  2. Programas en Github.

24 de diciembre de 2015

3 de marzo de 2014

Señalización en bicicletas


Centro
Título

Uso del microcontrolador ARDUINO en seguridad activa de señalización e iluminación de bicicletas

Temática

Control automático. Programación. Tecnología.

Interrogantes
  1. ¿Es posible mejorar la conducción en bicicletas?

  2. ¿Cómo puedo ser mejor usuario de la vía pública, usando un transporte como la bicicleta?

  3. La bicicleta como solución a problemas de movibilidad en el siglo XXI

Materiales
    1. Bicicleta

    2. Microcontrolador ARDUINO

    3. Ordenador que programe a ARDUINO

    4. Dispositivos con LEDS de alta luminosidad

Dispositivos electrónicos varios: pulsadores, resistencias, etc.

Introducción

1.- Un coche no sólo necesita luces para que el conductor/a pueda ver de noche o en condiciones de poca luminosidad ambiental.

2.- Un coche necesita las luces también para poder ser visto mejor por otros usuarios de las vías.

3.- En un coche también usamos las luces para indicar a los demás que vamos a realizar o realizamos una maniobra que entraña cierto peligro, en concreto:

A) Frenar (luces rojas intensas en la parte trasera)

B) Cambiar de dirección a izquierda o derecha (intermitentes atrás y delante, a la izquierda y derecha)

C) Dar marcha atrás (luz blanca intensa en la parte posterior)

¿Por qué no en una bicicleta?

Descripción

La experiencia consiste en:

1.- Diseñar los dispositivos de luz de freno, intermitentes y luces cortas y largas para una bicicleta

2.- Desarrollar el programa para ARDUINO que controle estos dispositivos.

2.a.- Activación de LEDs y conjuntos de LEDs

2.b.- Manejo de pulsadores (evitar el rebote)

3.- Diseñar y construir los dispositivos que se acoplen a una bicicleta que realicen esta funcionalidad.

4.- Conectar los diversos dispositivos.

5.- Comprobar su funcionamiento.

Cuestiones

¿Cómo evitan las luces de la bicicleta los accidentes?

¿Por qué es peligroso para una bicicleta circular de noche o por lugares con mucho tráfico?

¿Crees que la bicicleta es un medio de transporte mejor o peor que otros? ¿Por qué?

Referencias

1.- Biblioteca ARDUINO

Licencia Licencia Creative Commons
Señalización e iluminación en bicicletas por Aurelio Gallardo Rodríguez se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.