martes, 30 de octubre de 2018

Programa completo feria Tlaxcala 2018 Catykanal

Programa feria Tlaxcala 2018Te dejo el link para descargar en PDF todo el programa de feria Tlaxcala 2018

http://www.mediafire.com/file/5i6xm6r1azqil91/f_tlaxcala_2018.pdf/file
https://www.mediafire.com/file/5i6xm6r1azqil91/f_tlaxcala_2018.pdf/file
https://www.mediafire.com/file/5i6xm6r1azqil91/f_tlaxcala_2018.pdf/file
https://www.mediafire.com/file/5i6xm6r1azqil91/f_tlaxcala_2018.pdf/file
https://www.mediafire.com/file/5i6xm6r1azqil91/f_tlaxcala_2018.pdf/file

viernes, 26 de octubre de 2018

Arma tu propio Girasol electronico con PCBWAY y arduino




 Materiales:

* 1 arduino nano
* 4 resistencias de 10k
* 1 preset de 10k
* 1 servomotor
* 1 tira de pines hembra
* 1 tira de pines macho
* 2 fotoresistencias
* 1 interruptor de palanca
* 4 cables jumper macho hembra
* 1 maceta de plastico de 5 pulgadas
* 1 circulo de madera
* 1 girasol de madera
* 2 soportes de acrilico
* 1 PCB

Diagrama:





Plantillas:





Programa:


/*

********************************
*******  Girasol - CATyK *******
********************************

Sigue la luz, generalmente busca
el lugar con mayor intensidad de
luz para aprovecharla, si se tiene
un panel solar.
*/

#include <Servo.h>

Servo myservo; //Servo - Crea un objeto de control para servomotor
               //myservo - Es como nombramos a dicho objeto cualquier nombre pueden escoger
//int pos = 0; // Variable que maneja la posición del servo.
int pos = 90;      //Variable que maneja la posición del servo.
                   //el alor de pos=90 coloca al servo inicialmente en 90° grados,
                   //es decir, va a coloccar el girasol a la mitad o en el centro.
int FotoceldaD = 1;// Fotorresistencia pin analogico 0 de arduino
int FotoceldaI = 0; // Fotorresistencia pin analogico 1 de arduino

int Izquierda = 0; // Almacena las lecturas de la fotoresistenciaIzquierda.
int Derecha = 0; // Almacena las lecturas de la fotoresistenciaDerecha.

int pot = A2;      // Seleccionamos el pin analógico A4 para colocar un potenciometro
int Velocidad = 0; //Variable donde guardaremos la lectura del potenciometro

void setup()
{
//Recuerden que los pines analógicos no se inicializan
Serial.begin(9600); // Agregamos el monitor serial para visualizar las lecturas de las fotoresistencias y el servo.
myservo.attach(12);    // Colocamos el servo al pin 9
}

void loop()
{
// Leemos las valores de las fotoceldas en las variables Derecha e Izquierda.
Derecha = analogRead(FotoceldaD);
Izquierda = analogRead(FotoceldaI);
Velocidad = analogRead(pot)/4; //Esta variable nos servira para modificar la velocidad de las lecturas de las fotoceldas
Serial.print("Derecha= ");   //Mostramos el texto: Derecha=...
Serial.println(Derecha);     //Mostramos el valor de la foltoceldaD (0-1023).
Serial.print("Izquierda= "); //Mostramos el texto: Derecha=...
Serial.println(Izquierda);   //Mostramos el valor de la foltoceldaI (0-1023).
Serial.print("Velocidad= "); //Mostramos el texto: Velocidad=...
Serial.println(Velocidad);   //Mostramos el valor del retardo por cada Lectura
Serial.print("Posicion= "); //Mostramos el texto: Posicion=...
Serial.println(pos);            //Mostramos el valor de la posicion del servo.
                                             //Recordar que si se quiere ver los valores en podemos
                                             //verlo en el monitor serial en deslizamiento de línea quitar la palomita.

// Comprueba si la derecha es mayor que la izquierda, si es así, muévase a la derecha.
if (Izquierda > (Derecha +20))
// +20 es la zona muerta, por lo que no se moverá de un lado a otro.
{
if (pos < 135)    // pos < 179; en caso de que el girasol pueda girar los 180° libremente.
pos++;            // Incrementa 1 grado hasta que se igualen o ya no sea mayor la Izquierda.
myservo.write(pos);
}

// Comprueba si la izquierda es mayor que la derecha, si es así, muévete a la izquierda.
if (Derecha > (Izquierda +20))
// +20 es la zona muerta, por lo que no se moverá de un lado a otro.
{
if (pos > 45)     // pos > 1; en caso de que el girasol pueda girar los 180° libremente.
pos -= 1;         // Decrementa 1 grado hasta que se igualen o ya no sea mayor la Derecha.
myservo.write(pos);
}

// Agregamos un pequeño retardo, Incrementa o disminuye si quieres menos o más velocidad en la lectura.
delay(Velocidad); //Por defecto se puede poner 10ms
}
 

lunes, 15 de octubre de 2018

Construye tu propio cubo de luz LED



Materiales:

- 27 Led´s (Cualquier color   de preferencia difusos)
- 1 terminal con 2 tornillos
- 1 micro boton
- 9 resistencias de 330 ohms
- 4 resistencias de 10k ohms
- 3 transistores 2n2222 (Cualquier transistor NPN)
- 1 PCB de 8x8 cm
- 4 tornillos de 1/8"x1"
- 2 tiras hembra de 28 pines
- Arduino nano
- 1 pila de 9v
- 1 broche para pila de 9v
- Alambre Galvanizado Calibre #20
- Cuadro de madera de 10x10cm
- Pinzas
- Soldadura
- Pintura acrilica

Diagrama:


 
Programacion:

/*
    *** Cubo Led 3x3x3 ***
*/
//Pines para cada una de las columnas
const int led2 = 2;
const int led3 = 3;
const int led4 = 4;
const int led5 = 5;
const int led6 = 6;
const int led7 = 7;
const int led8 = 8;
const int led9 = 9;
const int led10 = 10;
//Pines de los 3 niveles
const int nivel1 = 11;
const int nivel2 = 12;
const int nivel3 = 13;

//Definimos el pin analógico como digital
const int pb = 14; //El pin analógico como digital será el pin 14
int push;          //Variable donde se guarda el cambio lógico del pin digital
int contador = 1;  //Variable local que nos servirá como contador
                   //cada que presionemos el push button.

void setup() {
  Serial.begin(9600);
//Inicializamos los pines digitales como salidas.
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);

pinMode(nivel1, OUTPUT);
pinMode(nivel2, OUTPUT);
pinMode(nivel3, OUTPUT);
//Inicializamos el pin A0 como pin-Digital 14 de entrada
pinMode(pb,INPUT);
}

void loop() { 
 push = digitalRead(pb); //Leemos el valor digital del push button
 //Podemos visualizar el estado en el que se encuentra
 //usando el monitor serial (Esquina superior derecha "Lupa")
 Serial.print("PB = ");
 Serial.println(push);
 Serial.print("Contador = ");
 Serial.println(contador);
 
  if(push == 1)//Si se pulsa el push button se realiza lo que esta dentro de este if
   {
     contador = contador+1; //Aumentamos en 1 el contador
     delay(500);            //Tiempo que permite el incremento en una unidad del contador
     //Recuerden que si sólo hay una línea dentro de un "if" se pueden omitir las llaves "{}"
     if(contador > 10)       //Si el contador toma un valor mayor a 10
       contador = 1;        //el contador vuelve al valor/estado 1.
   }//Llave del primer if
//******* Secuencia 1 -Modo Apagado *******//
//*****Por defecto inician apagados los led´s *****//
    if(contador==1)
     {
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      digitalWrite(led4, LOW);
      digitalWrite(led5, LOW);
      digitalWrite(led6, LOW);
      digitalWrite(led7, LOW);
      digitalWrite(led8, LOW);
      digitalWrite(led9, LOW);
      digitalWrite(led10, LOW);
  
      digitalWrite(nivel1, LOW);
      digitalWrite(nivel2, LOW);
      digitalWrite(nivel3, LOW);
     }
//****** Secuencia 1 - Tipo Lámpara ********//
//*** Se mantienen prendidos todos los led´s ***// 
    if(contador==1){
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      digitalWrite(led5, HIGH);
      digitalWrite(led6, HIGH);
      digitalWrite(led7, HIGH);
      digitalWrite(led8, HIGH);
      digitalWrite(led9, HIGH);
      digitalWrite(led10, HIGH);
  
      digitalWrite(nivel1, HIGH);
      digitalWrite(nivel2, HIGH);
      digitalWrite(nivel3, HIGH);
    }
//****** Secuencia 2 - Parpadeo ********//
//*** Se prenden y apagan todos los led´s ***//  
  if(contador==2)
   {
      int tiempo = 80;//Puedes cambiar el tiempo de parpadeo
   
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      digitalWrite(led5, HIGH);
      digitalWrite(led6, HIGH);
      digitalWrite(led7, HIGH);
      digitalWrite(led8, HIGH);
      digitalWrite(led9, HIGH);
      digitalWrite(led10, HIGH);
      //Activamos los niveles (Prenden led´s)
      digitalWrite(nivel1, HIGH);
      digitalWrite(nivel2, HIGH);
      digitalWrite(nivel3, HIGH);
      delay(tiempo);
      //Desactivamos los niveles (Apaga Led´s)
      digitalWrite(nivel1, LOW);
      digitalWrite(nivel2, LOW);
      digitalWrite(nivel3, LOW);
      delay(tiempo);
   }
//****** Secuencia 3 - Centro estático laterales girando ********//
//*** Se mantienen prendidos todos los led´s***// 
if(contador==3)
{
int g=100;
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

digitalWrite(led7, LOW);
digitalWrite(led10, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(g);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led8, HIGH);
delay(g);
digitalWrite(led5, LOW);
digitalWrite(led2, LOW);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
delay(g);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led7, HIGH);
delay(g);
}
 
//****** Secuencia 4 - Tipo estrella ********//
//*** Se prenden los led´s de manera que parezca una estrella ***// 
if(contador==4)
{
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

int j=150;    //Puedes cambiar este tiempo
digitalWrite(nivel1, LOW);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, LOW);

digitalWrite(led6, HIGH);
delay(j);//500
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led9, HIGH);
delay(j);//200
digitalWrite(nivel1, HIGH);
digitalWrite(nivel3, HIGH);
delay(j);//200
digitalWrite(led2, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led10, HIGH);
delay(j);//500
// apagamos todo
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}

//****** Secuencia 5 - Por Niveles ********//
//*** Se prenden cada uno de los niveles de led´s ***// 
if(contador==5)
{
  int d=100;
  // Prendemos todo
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
//Efecto de SUBIDA Y BAJADA
     //Activamos el nivel1
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, LOW);
digitalWrite(nivel3, LOW);
delay(d);
 //Activamos el nivel2
digitalWrite(nivel1, LOW);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, LOW);
delay(d);
 //Activamos el nivel3
 digitalWrite(nivel1, LOW);
digitalWrite(nivel2, LOW);
digitalWrite(nivel3, HIGH);
delay(d);
 //Activamos el nivel2
digitalWrite(nivel1, LOW);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, LOW);
delay(d);
}

//****** Secuencia 6 - Tipo Cruzado ********//
//*** Se prenden los led´s en forma de cruz ***// 
if(contador==6){

  int t=100;
   //Activamos todos los niveles
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
delay(t);
digitalWrite(led5, LOW);
digitalWrite(led7, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led8, HIGH);
delay(t);
digitalWrite(led4, LOW);
digitalWrite(led8, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led9, HIGH);
delay(t);
digitalWrite(led3, LOW);
digitalWrite(led9, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led10, HIGH);
delay(t);
digitalWrite(led2, LOW);
digitalWrite(led10, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
delay(t);
digitalWrite(led5, LOW);
digitalWrite(led7, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led8, HIGH);
delay(t);
digitalWrite(led4, LOW);
digitalWrite(led8, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led9, HIGH);
delay(t);
digitalWrite(led3, LOW);
digitalWrite(led9, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led10, HIGH);
delay(t);
digitalWrite(led2, LOW);
digitalWrite(led10, LOW);

//Cruz girando 
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

  int v=100;
digitalWrite(led2, HIGH);
delay(v);

digitalWrite(led6, HIGH);
delay(v);

digitalWrite(led10, HIGH);
delay(v);//los demas 300

digitalWrite(led6, LOW);
delay(v+30);//400

digitalWrite(led8, HIGH);
delay(v);

digitalWrite(led6, HIGH);
delay(v);

digitalWrite(led4, HIGH);
delay(v);

digitalWrite(led6, LOW);
delay(v+30);

digitalWrite(led5, HIGH);
delay(v);

digitalWrite(led6, HIGH);
delay(v);

digitalWrite(led7, HIGH);
delay(v);

digitalWrite(led6, LOW);
delay(v+30);

digitalWrite(led9, HIGH);
delay(v);

digitalWrite(led6, HIGH);
delay(v);

digitalWrite(led3, HIGH);
delay(v);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
delay(v-20);//200 
}
//****** Secuencia 3 - Lámina giratoria ********//
//*** Se mantienen prendidos todos los led´s***// 
if(contador==7)
{
int g=200;
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
delay(g);
//Se mantiene prendido Led4
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led7, HIGH);
digitalWrite(led10, HIGH);
delay(g);
//Se mantiene prendido Led10
digitalWrite(led4, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
delay(g);
//Se mantiene prendido Led8
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
digitalWrite(led5, HIGH);
digitalWrite(led2, HIGH);
delay(g);

//nivel3 se mantiene encendido
digitalWrite(nivel1, LOW);
digitalWrite(nivel2, LOW);
//Se mantiene encendido 2,5,8
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
delay(g);

//Se mantiene prendido Led4, 7 y 10
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);

digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
delay(g);

//Se mantiene prendido Led4, 7 y 10
//y nivel1
digitalWrite(nivel2, LOW);
digitalWrite(nivel3, LOW);

digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
delay(g);
}
//****** Secuencia 3 - Lámina deslizable ********//
//*** Se mantienen prendidos todos los led´s***// 
if(contador==8)
{
int g=80; //Un tiempo de 150ms genera un  buen efecto
digitalWrite(nivel1, HIGH);
digitalWrite(nivel2, HIGH);
digitalWrite(nivel3, HIGH);

digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
delay(g);
//Se mantiene prendido Led3 y 4
digitalWrite(led2, LOW);
digitalWrite(led7, HIGH);
delay(g);
//Se mantiene prendido Led4 y 7
digitalWrite(led3, LOW);
digitalWrite(led10, HIGH);
delay(g);
//Se mantiene prendido Led7 y 10
digitalWrite(led4, LOW);
digitalWrite(led9, HIGH);
delay(g);
//Se mantiene prendido Led9 y 10
digitalWrite(led7, LOW);
digitalWrite(led8, HIGH);
delay(g);
//Se mantiene prendido Led8 y 9
digitalWrite(led10, LOW);
digitalWrite(led5, HIGH);
delay(g);
//Se mantiene prendido Led5 y 8
digitalWrite(led9, LOW);
digitalWrite(led2, HIGH);
delay(g);
//Se mantiene prendido Led5
digitalWrite(led8, LOW);
digitalWrite(led3, HIGH);
delay(g);
}
//****** Secuencia 9 - Parpadeo ********//
//*** Se prenden y apagan todos los led´s ***//  
  if(contador==9)
   {
      int tiempo = 10;
   
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      digitalWrite(led5, HIGH);
      digitalWrite(led6, HIGH);
      digitalWrite(led7, HIGH);
      digitalWrite(led8, HIGH);
      digitalWrite(led9, HIGH);
      digitalWrite(led10, HIGH);
      //Activamos los niveles (Prenden led´s)
      digitalWrite(nivel1, HIGH);
      digitalWrite(nivel2, HIGH);
      digitalWrite(nivel3, HIGH);
      delay(tiempo);
      //Desactivamos los niveles (Apaga Led´s)
      digitalWrite(nivel1, LOW);
      digitalWrite(nivel2, LOW);
      digitalWrite(nivel3, LOW);
      delay(tiempo);
   }
/*NOTA: Recuerda que al agregar una secuencia debes cambiar el valor máximo
de la variable contador, por ejemplo: tenemos 8 secuencias
entonces if(contador > 9) aquí colocamos un 8
si tuvieramos 10 secuencias  -  if(contador > 10)
este if esta en la línea 59...
/*
//****** Secuencia _ - (Agrega tus secuencias) ********/
//***  ***// 

}



martes, 9 de octubre de 2018

Que es un letrero POV? Aprende a hacer uno con PCBWAY


Materiales:


Diagrama:



Programacion:

/*
    Writes "Ardunio" with Persistance of Vision (POV) with 16 LEDs (output 0
    is on bottom, output 15 is top).  The animation below doesn't work with
    more than 1 TLC.

    I generated the animation with the included java code:
    <arduino folder>/hardware/libraries/Tlc5940/examples/BasicAnimations

    To use the code, run
        java AnimationCreator
    in the folder above and it will parse all images in the folder to
    .h files.  For best results use images that are 16 pixels high.

    See the BasicUse example for hardware setup.

    Alex Leone <acleone ~AT~ gmail.com>, 2009-02-03 */

#include "Tlc5940.h"
#include "tlc_animations.h"
#include "ani_arduino.h"

void setup()
{
  Tlc.init();
}

void loop()
{
  // checks to see if the animation is finished playing
  if (!tlc_onUpdateFinished) {

    delay(100);

    /*
      void tlc_playAnimation(prog_uint8_t *animation, uint16_t frames,
                             uint16_t periodsPerFrame);
      periods per frame is PWM periods, 1.024ms per frame (0 is valid - this
      will play the animation as fast as possible).

      Plays an animation in the "background".
      Don't call Tlc.update() while this is running.
      You can check if this is done with !tlc_onUpdateFinished */
    tlc_playAnimation(ani_arduino, ANI_ARDUINO_FRAMES, 0);


    // If you don't want to do anything until it's finished, use:
    // while (!tlc_onUpdateFinished);

  }

}

Como hacer undiagrama para PCB


domingo, 5 de agosto de 2018

Como hacer un robot bailarin con servomotores con JLCPCB


Materiales:

 Programación:






 

2 nuevas placas educativas de Innovatronik


Como hacer un control inalambrico RF con PCBWAY

 

 Materiales:
 

Diagramas:


 Placas:


 

Como hacer un robot timelapse con servos y arduino comprando en UTSOURCE


Materiales:
(material electrónico)
* 1 kit de mecanismo para servomotores con funduino
* 5 botones pulsadores
* 10 terminales faston hembra de 3mm
* 30cm de cable UTP
* 5 resistencias de 10k 1/2 watt
* 1 pila de 9v o 11.4v o 12v

(material para la estructura)
* 1 tabla de 16.5cm x 10.5cm
* 1 tabla gruesa de 4.4cm x 5.7cm
* 2 tablas gruesas de 10.6cm x 4.4cm
* 1 tabla de 2.9 x 6.9cm
* 3 L's pequeñas
* 7 tornillos con tuerca de 1/8"
* 1 tornillo para camara