sábado, 18 de febrero de 2012

viernes, 17 de febrero de 2012

Marcha Imperial Con Pinguino!!!



Para estrenar mi nueva tarjeta pinguino he colocado algo de música.
Gracias al siguiente enlace http://yeisoneng.blogspot.com/2011/09/marcha-imperial-con-pinguino_06.html.
Hice algunas modificaciones al código para la visualización utilizando en puerto B. En mi código la salida para el parlante esta en el terminal 11.

Montaje basico se puede emplear un parlante normal de 8 ohm y el
transistor puede ser el popular 2n2222
Este es el código.

#define RunLed PORTAbits.RA4

int speakerPin = 11;

#define c 261
#define d 294
#define e 329
#define f 349
#define g 391
#define gS 415
#define a 440
#define aS 455
#define b 466
#define cH 523
#define cSH 554
#define dH 587
#define dSH 622
#define eH 659
#define fH 698
#define fSH 740
#define gH 784
#define gSH 830
#define aH 880

#define vua 255
#define vub 127
#define vuc 63
#define vud 31
#define vue 15
#define vuf 7
#define vug 3
long delayAmount;
long loopTime;
int x;

void setup()
{
  pinMode(speakerPin, OUTPUT);
  TRISB = 0;
  //establece speakerPin como salida
}
  
void beep (unsigned char speakerPin, int frequencyInHertz, long timeInMilliseconds, int vuLed)
{
  frequencyInHertz;
  timeInMilliseconds;
    RunLed=LOW;
    PORTB = vuLed;
      
 delayAmount = (long)(1000000/frequencyInHertz);
    loopTime = (long)((timeInMilliseconds*1000)/(delayAmount*2));
    for (x=0;x<loopTime;x++)
    {
        digitalWrite(speakerPin,HIGH);
        delayMicroseconds(delayAmount);
        digitalWrite(speakerPin,LOW);
        delayMicroseconds(delayAmount);
 }
  
    RunLed=HIGH;
    PORTB = 0;
    delay(20);
    //una pequeña pausa para que las notas suenen por separado
}
  
void march()
{
    //una traducción de una partitura a frecuencia / tiempo (en milisegundos)
    //se usa 500 ms para un cuarto de nota
  
    beep(speakerPin, a, 500,vua);
    beep(speakerPin, a, 500,vua );  
    beep(speakerPin, a, 500,vua );
    beep(speakerPin, f, 350,vuf );
    beep(speakerPin, cH, 150,vuc );
  
    beep(speakerPin, a, 500,vua );
    beep(speakerPin, f, 350,vuf );
    beep(speakerPin, cH, 150,vuc );
    beep(speakerPin, a, 1000,vua );
    //first bit
  
    beep(speakerPin, eH, 500,vue );
    beep(speakerPin, eH, 500,vue );
    beep(speakerPin, eH, 500,vue );  
    beep(speakerPin, fH, 350,vuf );
    beep(speakerPin, cH, 150,vuc );
  
    beep(speakerPin, gS, 500,vug );
    beep(speakerPin, f, 350,vuf );
    beep(speakerPin, cH, 150,vuc );
    beep(speakerPin, a, 1000,vua );
    //second bit...
  
    beep(speakerPin, aH, 500,vua );
    beep(speakerPin, a, 350,vua );
    beep(speakerPin, a, 150,vua );
    beep(speakerPin, aH, 500,vua );
    beep(speakerPin, gSH, 250,vug );
    beep(speakerPin, gH, 250,vug );
  
    beep(speakerPin, fSH, 125,vuf );
    beep(speakerPin, fH, 125,vuf );  
    beep(speakerPin, fSH, 250,vuf );
    delay(250);
    beep(speakerPin, aS, 250,vua );  
    beep(speakerPin, dSH, 500,vud );
    beep(speakerPin, dH, 250,vud );
    beep(speakerPin, cSH, 250,vuc );
    //start of the interesting bit
  
    beep(speakerPin, cH, 125,vuc);
    beep(speakerPin, b, 125,vub);
    beep(speakerPin, cH, 250,vuc);    
    delay(250);
    beep(speakerPin, f, 125,vuf);
    beep(speakerPin, gS, 500,vug );
    beep(speakerPin, f, 375,vuf);
    beep(speakerPin, a, 125,vua );
  
    beep(speakerPin, cH, 500,vuc );
    beep(speakerPin, a, 375,vua );
    beep(speakerPin, cH, 125,vuc );
    beep(speakerPin, eH, 1000,vue );
  
    beep(speakerPin, aH, 500,vua );
    beep(speakerPin, a, 350,vua);
    beep(speakerPin, a, 150,vua);
    beep(speakerPin, aH, 500,vua);
    beep(speakerPin, gSH, 250,vug);
    beep(speakerPin, gH, 250,vug);
  
    beep(speakerPin, fSH, 125,vuf);
    beep(speakerPin, fH, 125,vuf);  
    beep(speakerPin, fSH, 250,vuf);
    delay(250);
    beep(speakerPin, aS, 250,vua);
    beep(speakerPin, dSH, 500,vud);
    beep(speakerPin, dH, 250,vud);
    beep(speakerPin, cSH, 250,vuc);
    //repeat... repeat
  
    beep(speakerPin, cH, 125,vuc);
    beep(speakerPin, b, 125,vub);
    beep(speakerPin, cH, 250,vuc);    
    delay(250);
    beep(speakerPin, f, 250,vuf);
    beep(speakerPin, gS, 500,vug);
    beep(speakerPin, f, 375,vuf);
    beep(speakerPin, cH, 125,vuc);
        
    beep(speakerPin, a, 500,vua);        
    beep(speakerPin, f, 375,vuf);        
    beep(speakerPin, c, 125,vuc);        
    beep(speakerPin, a, 1000,vua);    
}

void loop()  // se ejecuta una y otra vez...
{
  march();
}

martes, 14 de febrero de 2012

Brazo robótico 2




Este es un brazo construido como proyecto integrador de cursos de 4 semestre de tecnología mecatrónica nocturno de la UNIAJC
El programa se hizo en processing ejecutandose en un live cd de ubuntu, se empleo la tarjeta pinguino para el control del robot.

sábado, 4 de febrero de 2012

Como realizo los gráficos de los montajes

Para la realización de los montajes utilizo http://fritzing.org/ lo sugiero para la realización de los circuitos impresos.
Luego exporto el montaje como un archivo svg y lo edito en http://inkscape.org/?lang=es

Montaje Conversor Análogo Digital ADC0804

Montaje

COMPONENTES

Cables rojos - 5 voltios
Cables negros - Tierra
Capacitor electrolítico - 1 uf
Capacitor cerámico 150 pf  (151)
Potenciometro de 5K o 10K
Diagrama Esquemático

ESQUEMA DE TERMINALES DEL ADC0804

Esquema Guía

ENLACES DE INTERÉS

http://www.ucontrol.com.ar/wiki/index.php?title=ADC0804
http://fuhrer-luftwaffe.blogspot.com/2009/02/adc0804.html



viernes, 3 de febrero de 2012