32
qwertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfgh jklzxcvbnmqwertyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghj klzxcvbnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmqw PROGRAMACION PIC- ENCENDER UN LED ROBOTICA 07/06/2011 DENNIS HUILLCA PORTILLA MONICA VASQUEZ MAMANI PAMELA MONTES SENCE YOSELYN ROJAS ZUZUNAGA

Programacion Pic

Embed Size (px)

Citation preview

Page 1: Programacion Pic

qwertyuiopasdfghjklzxcvbnmqwertyui

opasdfghjklzxcvbnmqwertyuiopasdfgh

jklzxcvbnmqwertyuiopasdfghjklzxcvb

nmqwertyuiopasdfghjklzxcvbnmqwer

tyuiopasdfghjklzxcvbnmqwertyuiopas

dfghjklzxcvbnmqwertyuiopasdfghjklzx

cvbnmqwertyuiopasdfghjklzxcvbnmq

wertyuiopasdfghjklzxcvbnmqwertyuio

pasdfghjklzxcvbnmqwertyuiopasdfghj

klzxcvbnmqwertyuiopasdfghjklzxcvbn

mqwertyuiopasdfghjklzxcvbnmqwerty

uiopasdfghjklzxcvbnmqwertyuiopasdf

ghjklzxcvbnmqwertyuiopasdfghjklzxc

vbnmqwertyuiopasdfghjklzxcvbnmrty

uiopasdfghjklzxcvbnmqwertyuiopasdf

ghjklzxcvbnmqwertyuiopasdfghjklzxc

vbnmqwertyuiopasdfghjklzxcvbnmqw

PROGRAMACION PIC- ENCENDER UN LED

ROBOTICA

07/06/2011

DENNIS HUILLCA PORTILLA MONICA VASQUEZ MAMANI

PAMELA MONTES SENCE YOSELYN ROJAS ZUZUNAGA

Page 2: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 2

PROGRAMACION PIC- ENCEDER UN LED

Ó

Significa ("Universal Serial Bus") ó su traducción al español es línea serial universal

de transporte de datos.

El puerto USB al que hace mención es el conector de entrada a un

bus de tipo serie en el que es posible conectar múltiples dispositivos,

tanto en frío como en caliente.

Si existe un controlador ya instalado que le permita comunicarse con

él, lo utilizará directamente e, incluso, pondrá en marcha la aplicación

que corresponda para acceder a dicho dispositivo. Si, por el contrario,

no hay un controlador preinstalado en el sistema, solicitara un

controlador adecuado.

El controlador, a su vez, ofrecerá a las aplicaciones un API

(application programming interface) de alto nivel que les permita

usar el dispositivo sin tener que preocuparse de los detalles de la

comunicación USB. 1

1.1 USB En un principio teníamos la interfaz serie y paralelo, pero era

necesario unificar todos los conectores creando uno más sencillo y de

mayores prestaciones. Así nació el USB (Universal Serial Bus) con

una velocidad de 12Mb/seg. y como su evolución, USB 2.0, apodado

USB de alta velocidad, con velocidades en este momento de hasta

480.

Una característica importante es que permite a los dispositivos

trabajar a velocidades mayores, en promedio a unos 12 Mbps, esto es

más o menos de 3 a 5 veces más rápido que un dispositivo de puerto

1 http://www.todoexpertos.com/categorias/ciencias-e-ingenieria/respuestas/1070173/transmision-de-datos-

por-puerto-usb

Page 3: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 3

paralelo y de 20 a 40 veces más rápido que un dispositivo de puerto

serial.2

1.2 FUNCIONAMIENTO DEL USB

Trabaja como interfaz para transmisión de datos y distribución de

energía, que ha sido introducida en el mercado de PC´s y periféricos

para mejorar las lentas interfaces serie (RS-232) y paralelo. Esta

interfaz de 4 hilos, 12 Mbps y "plug and play", distribuye 5V para alimentación,

transmite datos y está siendo adoptada rápidamente por la industria informática.

Emplea una topología de estrellas apiladas que permite el funcionamiento simultáneo

de 127 dispositivos a la vez. En la raíz o vértice de las capas, está el controlador

anfitrión o host que controla todo el tráfico que circula por el bus.

El bus serie USB es síncrono, y utiliza el algoritmo de codificación NRZI ("Non Return to

Zero Inverted"). En este sistema existen dos voltajes opuestos; una tensión de

referencia corresponde a un "1", pero no hay retorno a cero entre bits, de forma que

una serie de unos corresponde a un voltaje uniforme; en cambio los ceros se marcan

como cambios del nivel de tensión, de modo que una sucesión de ceros produce

sucesivos cambios de tensión entre los conductores de señal.

Ó

El sistema de bus serie universal (USB) consta de tres componentes:

Controlador

Hubs o Concentradores Periféricos

Es un conector rectangular de 4 terminales que permite la

transmisión de datos entre una gran gama de dispositivos externos (periféricos) con la computadora; por ello es considerado puerto; mientras que la

2 http://www.monografias.com/trabajos11/usbmem/usbmem.shtml#QUEES

Page 4: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 4

definición de la Real Academia Española de la lengua es "toma de conexión universal de uso frecuente en las

computadoras".3

El puerto USB 2.0 compite actualmente en el mercado contra el puerto FireWire.

El puerto USB 3.0 compite en altas velocidades de transmisión contra el puerto eSATA.

Figura 1. Símbolo de USB.

2.1 TERMINALES DEL PUERTO USB 1.X, USB 2.0, USB 3.0

Los puertos USB 1.0, 1.1 y USB 2.0 tienen 4 contactos, mientras que

el puerto USB 3.0 cuenta con 9 (2 por los cuáles será capaz de enviar, 2 por los cuáles recibir de manera simultánea); en las

siguientes figuras se muestran las líneas eléctricas y su descripción básica:

3 http://www.informaticamoderna.com/El_puerto_USB.htm

Page 5: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 5

Figura 2. Líneas eléctricas del conector USB 1.0 y USB 2.0, las líneas centrales

conducen datos, las laterales la

alimentación.

1.- Vbus (+ 5 Volts, alimentación)

2.- D- (- datos) 3.- D+ (+ datos)

4.- GND (tierra)

Líneas eléctricas del puerto USB.

Figura 3. Líneas eléctricas del conector USB 3.0

1.- Vbus (+ 5 volts, alimentación) 2.- D- (- datos) 3.- D+ (+ datos)

4.- GND (tierra) 5.- StdA_SSRX- (Recibe datos)

6.- StdA_SSRX+ (Recibe datos) 7.- GND_DRAIN (tierra-drenado) 8.- StdA_SSTX- (Envía datos)

9.- StdA_SSTX+ (Envía datos)

Líneas eléctricas del puerto USB 3.0.

4

3. NIVELES DE TENSIONES DEL USB 2.0

3.1 LAS TENSIONES DEL PUERTO USB

El programador se alimenta directamente con la tensión suministrada

por VBUS del puerto USB. A su vez, por portabilidad y practicidad puede proporcionar el voltaje VDD para la programación de los

dispositivos Pics soportados. Esta última característica puede ser utilizada siempre y cuando la tensión VBUS del puerto se mantenga dentro de los márgenes mínimos admitidos en las especificaciones de

programación de estos microcontroladores.

Esto es muy importante tenerlo presente y puede ser una buena referencia ante posibles fallos en la programación de algún tipo de

4 http://www.informaticamoderna.com/El_puerto_USB.htm

Page 6: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 6

PIC, debido a causas ajenas al programador y al software de programación. Puede estar todo funcionando correctamente y sin

embargo encontrarnos con la imposibilidad de grabar un Pic determinado simplemente por una deficiente alimentación durante la programación del microcontrolador.

La tensión que suministra el puerto USB, puede variar entre un

mínimo y un máximo según la computadora. Los niveles de tensión que podemos encontrar en VBUS, de acuerdo a la tabla de

especificaciones son los siguientes:

Incluso podemos medir valores aún inferiores a 4.4 volts en muchas PC, situados en 4.35 volts.

Teniendo presente lo anterior y volviendo específicamente a los microcontroladores PIC generales utilizados en nuestros proyectos,

que funcionan con una tensión nominal de 5 volts, podemos observar en las especificaciones de programación que la tensión mínima

necesaria para realizar un borrado completo de la mayoría de estos chips se sitúa en 4.5 volts, según la tabla de especificaciones:

Esto significa que si la tensión que suministra el puerto USB es menor a 4.5 volts,

corremos el riesgo que no pueda ser borrado el microcontrolador PIC y en consecuencia producirá un error al intentar grabarlo ya que es necesario realizar

Page 7: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 7

un borrado general (memoria de programa, memoria de datos y registros de configuración) antes de la programación.

En este supuesto caso debemos recurrir a una alimentación externa para

solucionar los problemas durante la programación. Tanto la lectura, verificación e identificación del dispositivo, no están afectados por una tensión del puerto USB menor a 4.5 volts. Un microcontrolador PIC en "blanco" también puede ser

programado. Sólo afecta al borrado y a la secuencia borrado - grabación.

4. MATERIALES UTILIZADOS

KUBUNTU

PINGÜINO _BETA9-05_LINUX

PYTHON

3 LEDS DE COLORES

1 RESISTENCIA DE (460±23)Ω

1 PIC 18F4550

1 CABLE USB 2.0

1 PROTOBOARD

1 RESET

1 CAPACITOR

1 CRISTAL 4MHZ

1 ULN2003

Page 8: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 8

5. PIC 18F4550 PINGÜINO

Page 9: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 9

Page 10: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 10

Page 11: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 11

É

Características:

Memoria Flash: 32Kbytes

Máximo número de instrucciones simples: 16384

Memoria SRAM: 2048 bytes

Memoria EEPROM: (memoria no volatil) 256 bytes

Entradas / Salidas: 35

Número de entradas A/D: 13

Número de CCP: 1

Número de ECCP: 1

Soporta SPP: Si

Soporta SPI: Si

Soporta máster I2C: Si

Número de EAUSART: 1

Número de comparadores: 2

Número de temporizadores de 8 bits: 1

Número de temporizadores de 16 bits: 3

Universal Serial Bus (USB) module: Si

Page 12: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 12

Page 13: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 13

Page 14: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 14

Diagrama de bloques PIC18F4550

Microchip distribuye de forma general dos tipos de micros dependiendo del voltaje de alimentación:

Clase F: Voltaje típico (4.2 V a 5.5V)

Clase LF: Bajo voltaje (2.0 V a 5.5V)

Estos son exactamente iguales sólo que los micros de clase LF puedes ser usados con la nueva alimentación de 3.3V que actualmente y

poco a poco se está imponiendo a los típicos 5V.

5.2 FUNCTIONS QUE NOS OFRECE LA PROGRAMACION PYTHON

.

1

1wire.readbit 1wire.readbyte 1wire.reset 1wire.writebit 1wire.writebyte

A

Abs AnalogRead AnalogWrite

C

CDC.print CDC.read Cos

D

DS18B20.configure

DS18B20.crc

G cont.

GLCD.SelectFont GLCD.SetDot GLCD.SetInverted GLCD.StringWidth GLCD.WriteCom

mand GLCD.WriteData GLCD.fastWriteHi

gh GLCD.fastWriteLo

w GetSystemClock

I

I2C.get I2C.init I2C.readchar I2C.restart I2C.send I2C.sendack I2C.sendnack

O cont.

OnCompare2 OnCompareAll OnCounter0 OnCounter1 OnCounter3 OnEeprom OnEvent OnLowVoltage OnOscFailed OnParallel OnSerialRX OnSerialTX OnTimer0 OnTimer1 OnTimer2 OnTimer3 OnUSB

P

PWM.setdutycycle PWM.setfrequency

Page 15: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 15

DS18B20.find DS18B20.getfirst DS18B20.getnext DS18B20.matchro

m DS18B20.read DS18B20.readrom Delay DelayMicrosecond

s DigitalRead DigitalWrite

E

EEPROM.read16 EEPROM.read8 EEPROM.write16 EEPROM.write8

F

Flash.erase Flash.read Flash.write

G

GLCD.CharWidth GLCD.ClearPage GLCD.ClearScreen GLCD.ClearScreen

X GLCD.ClearSysTex

tLine GLCD.CursorTo GLCD.DoReadData GLCD.DrawBitmap

I2C.start I2C.stop I2C.wait I2C.writechar Int.detach

K

KB.get

L

Lcd Lcd.autoscroll Lcd.begin Lcd.blink Lcd.clear Lcd.command Lcd.cursor Lcd.display Lcd.home Lcd.init Lcd.leftToRight Lcd.noAutoscroll Lcd.noBlink Lcd.noCursor Lcd.noDisplay Lcd.print Lcd.printFloat Lcd.printNumber Lcd.printf Lcd.rightToLeft Lcd.scrollDisplayL

eft Lcd.scrollDisplayR

ight Lcd.send

PWM.setpercentdutycycle

PinMode Play Pow

R

Rand RandomSeed

S

SPI.init SPI.printf SPI.read SPI.write Serial.available Serial.begin Serial.flush Serial.getkey Serial.getstring Serial.print Serial.printf Serial.read Servo.attach Servo.detach Servo.read Servo.setMaximumP

ulse Servo.setMinimumP

ulse Servo.write Sin Sound Sprintf Sqrt

Page 16: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 16

GLCD.DrawCircle GLCD.DrawHoriLin

e GLCD.DrawLine GLCD.DrawRect GLCD.DrawRound

Rect GLCD.DrawVertLin

e GLCD.Enable GLCD.FillRect GLCD.GotoXY GLCD.Init GLCD.InvertRect GLCD.PrintFloat GLCD.PrintNumbe

r GLCD.PutChar GLCD.Puts GLCD.ReadData

Lcd.setCursor Lcd.write

M

Millis

O

OnADC OnBusCol OnChangePin0 OnChangePin1 OnChangePin2 OnChangePin4to

7 OnCompare1

T

Tan Toggle

U

USB.available USB.read USB.send USB.sendint UserInterrupt

5.3 DE

Debido a la pequeña potencia que suministran los

microcontroladores, sólo podemos hacer funcionar directamente unos

LED y poco más. Por este motivo es necesario amplificar las salidas

en función de las cargas que vayamos a controlar. Un método sencillo

y económico es emplear el integrado ULN2003A, que es un conjunto

de Darlington (darlington array) montados en un chip con el que

podemos controlar cargas de hasta medio amperio. El chip lleva

diodos de protección contra las sobretensiones producidas por cargas

inductivas. Esto lo hace ideal para gobernar relés.

Page 17: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 17

5.3.1 CARACTERÍSTICAS DEL CHIP ULN2003A

Intensidad por canal =500mA Tensión máxima de alimentación = 50 v

Protección interna contra sobretensiones producidas por

cargas inductivas Señal mínima de entrada = 2 v

Los pares Darlington pueden colocarse en paralelo para gobernar cargas que consumen intensidades elevadas, como

por ejemplo, pequeños motores. Precio aproximado = 0.6€

5.3.2 CONEXIÓN

Es necesario tener en cuenta que los terminales de salida de este chip conectan las cargas a masa cuando llega una señal positiva a las entradas adecuadas. Por este motivo, el terminal de la carga que no está conectado al chip ha de estar unido al borne positivo del generador. En el esquema de abajo vemos como se conectaría un motor al canal superior (1, 16). También se puede observar que pueden existir dos alimentaciones unidas por masa. En este ejemplo, el pulsador es el encargado de dar la señal de control al pin 1, para que el pin 16 se ponga a 0 voltios y quede conectado el motor.

Page 18: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 18

5.3.4 ESQUEMA INTERNO Diagrama de un canal Esquema interno Esquema externo

Page 19: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 19

5.4 CRISTAL DE 4MHZ HC49U

5.4.1 CARATERÍSTICAS & ESPECIFICACIONES

Lugar de Origen: NC,

ANH

Número de modelo:

Cristal de 4 Mhz HC49U

Marca: LCR

Número del artículo:

Cristal de 4 Mhz HC49U

Frecuencia: 1.800MHz -

110.000MHz

Rango de temperatura: -

10C - 60 C estándar,-40C -

85 C extendido

Estabilidad de la

frecuencia: + /-5ppm, + /-

10ppm, + /-30ppm

Tolerancia de la frecuencia

en 25C: + /-5ppm, + /-

10ppm, + /-30ppm

5.5 DIVISOR DE TENSION

Cuando dos o más resistencias se conectan en serie, la corriente que circula por ellas es la misma. Ver el diagrama más abajo.

La resistencia equivalente (Rs) de estas resistencias en serie se obtiene sumando los valores de las resistencias.

Una vez que se tenga la resistencia equivalente, se puede obtener la

corriente con ayuda de la Ley de Ohm

I = V / Rs

En el gráfico inferior de puede ver el circuito original y el equivalente

Page 20: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 20

Para encontrar la tensión en cualquiera de las resistencias del circuito original se utiliza la fórmula de división de tensión

Como en resistencias en serie la corriente es la misma en todas las

resistencias, utilizando la ley de Ohm para cada resistencia se obtienen las siguientes fórmulas

I = Vin / Rs I = V1 / R1

I = V2 / R2

I = V3 / R3.

Como I = I, se pueden igualar las ecuaciones, entonces: Vin / Rs =

V1 / R1.

Suponiendo que el voltaje que se desea conocer es V1, se despeja este valor.

V1 = Vin x R1 / Rs. Las tensiones V2 y V3 se obtienen de igual

manera, pero con el valor correspondiente de resistencia. (para V2 se cambia R1 por R2, para V3 se cambia R1 por R3)

Expresando la fórmula en palabras, la fórmula de división de tensión

dice:

Vout = (Resistencia a través de la salida /resistencia total del circuito) x Vin

5.7 CONTRUCCION DEL PROTOBOARD

Page 21: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 21

Page 22: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 22

PINGUINO es un KUBUNTU, UBUNTU con aplicaciones básicas en Microchip 8-bit or 32-bit PIC microcontrollers. The goal of this project is to build an IDE (Integrated Development Environment) que es muy

facil usarlo en GNU/Linux.

Page 23: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 23

6.1 DESCARGAS

Pinguino beta 9.05 (26-Dec-2010). Es la primera instalación

Después de la instalación

Pinguino IDE for [ GNU/Linux ]

Plataforma de programacion

Boot Loader - [ bootloaderV2.12.hex ] [ bootloaderARDE.hex ]

(for boards with buttons RUN and RESET)

6.2 INSTALAR EL IDE

En GNU/Linux En Windows En MacOS

6.3 BOOTLOADER

El bootloader es una pequeña rutina dentro del PIC. Se utiliza para la

transferencia de su programa en la memoria del PIC con esto en lugar de utilizar un programador. Este codigo solo debe ser grabado en el PIC una unica vez, luego el codigo generado con IDE de

Pinguino sera enviado via USB.

El bootloader es el mismo para versiones basadas en el PIC 18F2550 y para el PIC 18F4550.

6.4 COMPILAR Y GRABAR TU CODIGO

6.4.1 Compilar

Solo debes presionar el botón de compilar y si todo tu código está

bien escrito, debes poder apreciar un mensaje como este

Compilación hecha code size: XXXX / XXXXX bytes (XX% used)

Lo que te indica el tamaño de tu código, y el porcentaje que ocupara dentro de la memoria FLASH del micro.

Page 24: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 24

6.4.2 Cargar código

*En GNU/Linux

Presionar el botón de Reset en la placa de Pinguino.

Esperar 3 segundos.

Presionar el botón de Upload to Pinguino en el IDE.

Aparecerá un mensaje en la consola del IDE. Luego de 5 segundos el led de RUN se encendera y

ya se estara ejecutando el ultimo código cargado.

6.5 HERRAMIENTAS UTILIZADAS

Librería PyGTK 2.0:

librería que ya viene incorporada en el python

Sistema operativo Linux Kubuntu 9.0 beta

import pygtk

pygtk.require(’2.0’)

import gtk

Page 25: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 25

6.5 CODIGO DE PROGRAMACION PINGÜINO BETA PARA EL PIC

//definimos el PIC18F4550

#define PIC18F4550

//declaración de variables

int i;

char c;

int o;

// modulo de inicialización

void setup()

//definimos el uso del pin 22 en el PIC tanto para el OUTPUT como para LOW

pinMode(22,OUTPUT);

digitalWrite(22,LOW);

//inicializamos la variable “o” en bajo cero

o=0;

//método void del bucle infinito

void loop()

Page 26: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 26

// verificamos que hay un stream de datos esperando ser leidos

if(USB.available())

// si hay entonces recuperamos ese byte ( que es un char

c = USB.read();

//segun haya sido los char elegimos una accion”

if(c == 'O')

o = 1;

if(c == 'F')

o = 2;

if(c == 'S')

o = 3;

if(o == 0)

// si no se eligio ninguna accion indica que es encendido o apagado, entonces

if (c=='H') digitalWrite(22,HIGH);

if (c=='L') digitalWrite(22,LOW);

if(o == 1)

//en el puerto 22 escribimos ya sea en alto(HIGH) o en bajo(LOW)

digitalWrite(22,HIGH);

delay(100);

digitalWrite(22,LOW);

//frecuencia, revolución o intensidad con la que prenderemos el led

delay(100);

Page 27: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 27

if(o == 2)

digitalWrite(22,HIGH);

delay(50);

//escribimos por el pin 22 del PIC en bajo

digitalWrite(22,LOW);

delay(50);

if(o == 3)

digitalWrite(22,HIGH);

delay(1000);

digitalWrite(22,LOW);

delay(1000);

//iniciamos nuevamente en 0 para repetir todo

o = 0;

Page 28: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 28

6.7 PROGRAMACION PYTHON DEL LADO DE LA PC

#!/usr/bin/env python # -⁻- coding: UTF-8 -*- #jalamos librerias para GUI (interfaz grafica) import pygtk pygtk.require('2.0') import gtk import usb #la clase q contendra los botones class Table: def callback(self, widget, data=None): #la function que es llamada por cada boton donde “data” contiene el char de instrucción #que se mandara al pic print "Instrucción %s enviada." % data self.dh.bulkWrite(0x01, data, 10000) def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Comunicación USB") self.window.connect("delete_event", self.delete_event) self.window.set_border_width(10)

Page 29: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 29

#creamos nuestra clase que contendra los botones, y luego creamos botones con eventos table = gtk.Table(5, 1, True) self.window.add(table) button = gtk.Button("Encender Led") button.connect("clicked", self.callback, "H") table.attach(button, 0, 1, 0, 1) button.show() button = gtk.Button("Apagar Led") button.connect("clicked", self.callback, "L") table.attach(button, 1, 2, 0, 1) button.show() button = gtk.Button("Oscilar") button.connect("clicked", self.callback, "O") table.attach(button, 0, 2, 1, 2) button.show() button = gtk.Button("Ocilar rapidor") button.connect("clicked", self.callback, "F") table.attach(button, 0, 2, 2, 3) button.show() button = gtk.Button("Oscilar Lento") button.connect("clicked", self.callback, "S") table.attach(button, 0, 2, 3, 4)

Page 30: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 30

button.show()

button = gtk.Button("Salir") button.connect("clicked", lambda w: gtk.main_quit()) table.attach(button, 0, 2, 4, 5) button.show() table.show() self.window.show() busses = usb.busses() for bus in busses: devices = bus.devices for dev in devices: if dev.idVendor==0x04d8 and dev.idProduct==0xfeaa: pingu = dev self.dh = pingu.open() self.dh.setConfiguration(3) self.dh.claimInterface(0)

Page 31: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 31

def main(): gtk.main() return 0 if __name__ == "__main__": Table() main()

Page 32: Programacion Pic

Programación del PIC 18F4550-Prender un Led Página 32

7. BIBLIOGRAFIA

www.rugebiker.com/wp.../Implementacion-de-un-Circuito-de-Control.pdf

http://spanish.alibaba.com/product-gs/4mhz-hc49u-crystal-

357776966.html

http://www.tecnologiaseso.es/pdf/AMPLIFICADOR%20DE%20SA

LIDAS.pdf