versin 01.01
Autor: Julio Snchez Berro
Dos Hermanas (Sevilla)
19 de enero de 2011
1 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
2 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Agradecimientos
A Pablo Mileti, por su articulo en la revista TuxInfo n 9, sobre el uso del puerto paralelo en
gambas.
A andres_5,(http://foro.elhacker.net/profiles/andres5-u243480.html), que gracias a l pude hacer la
parte del hardware.
A la pgina web http://quierolinux.blogspot.com/
A linuxware.es, (http://www.linuxware.es/manuales/ramdisk.html), por su articulo sobre disco-ram
Y a los foros http://www.gambas-es.org/ y http://foro.elhacker.net/electronica-b31.0/
Objetivo
Despus de ver un vdeo de youtube donde se mostraba como controlar varios leds desde el puerto
paralelo y con gambas2 (proyecto de andres_5), me gusto mucho y quise hacer algo parecido, y
darle una utilidad, y se me ocurri hacer un panel de leds que mostrara el estado del uso de la cpu.
Y me puse manos a la obra....
El Software
Para el clculo del uso de la cpu, consulte la pagina web:
http://quierolinux.blogspot.com/2008/10/clculo-del-uso-de-cpu-en-linux.html
Donde explican como calcularlo, sin necesidad de usar el comando top.
Disco-Ram
Probando la aplicacin me di cuenta del uso excesivo del disco duro, me acorde de los tiempos del
ms-dos, de una aplicacin que tenia para crear discos-ram o ramdisk, y me pregunte si en linux
habra algo parecido... pues si.... lo hay:
http://www.linuxware.es/manuales/ramdisk.html
Con esto se consigue que se escriba en una parte de la memoria usada como un disco (grabo y leo
un archivo de datos), siendo mucho ms rpido que el uso del disco duro.
3 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Teora:
Uso de led: clculo de resistencia para no quemarlos
4 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Diodos:
Un diodo (del griego: dos caminos) es un dispositivo semiconductor que permite el paso de la
corriente elctrica en una nica direccin con caractersticas similares a un interruptor. De forma
simplificada, la curva caracterstica de un diodo (I-V) consta de dos regiones: por debajo de cierta
diferencia de potencial, se comporta como un circuito abierto (no conduce), y por encima de ella
como un circuito cerrado con una resistencia elctrica muy pequea.
Debido a este comportamiento, se les suele denominar rectificadores, ya que son dispositivos
capaces de suprimir la parte negativa de cualquier seal, como paso inicial para convertir una
corriente alterna en corriente continua.
nodo
Ctodo
En nuestro caso, se usa para evitar que la corriente entre por donde no debe, y as no daar
ni al puerto paralelo ni al propio ordenador.
Y use la que aconsejaba Andres_5, la 1N4148, que es por otro lado el ms comn en el mercado.
5 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Esquema elctrico
Nota:
Para el montaje lo hice con una placa de prueba (Placa breadboard). Evita hacer soldaduras , y
ademas todo el material se puede desmontar para aprovecharlo en otro proyecto.
6 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Form_Open
7 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Subrutina
usoled(valor)
Subrutina
usoprogressbar1(valor)
Funcin
lecturacpu(valor)
8 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Cdigo Fuente
Importante: para tener acceso al puerto paralelo hay que ejecutar el programa como
administrador (root)
Mdulo discoram
PUBLIC SUB formatear()
DIM comando AS String
'formateardiscoram
comando = "sudo mkfs.ext4 /dev/ram0"
SHELL comando
WAIT 2
'crear punto de montaje en /media
comando = "sudo mkdir /media/ramdisk"
SHELL comando
WAIT 0.5
'montar disco ram en /media
comando = "sudo mount /dev/ram0 /media/ramdisk"
SHELL comando
FMain.rutatrabajo = "/media/ramdisk"
WAIT 0.1
END
Fmain:
' Gambas class file
PUBLIC on2 AS Integer
PUBLIC led1 AS Integer
PUBLIC led2 AS Integer
PUBLIC led3 AS Integer
PUBLIC led4 AS Integer
PUBLIC led5 AS Integer
PUBLIC led6 AS Integer
PUBLIC led7 AS Integer
PUBLIC led8 AS Integer
PUBLIC puerto AS File
PUBLIC salida AS Byte
PUBLIC hproc AS Process
PUBLIC numeroa AS NEW Float[] 'poner siempre New cuando definiamos un [] array
PUBLIC cargacpu0 AS Float
PUBLIC usocpu0 AS Float
PUBLIC PuertoEstado AS File
PUBLIC Entrada AS Byte
PUBLIC rutatrabajo AS String
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
'crear disco ram para trabajar mas rpido y sin desgaste del disco duro fisico:
discoram.formatear()
numeroa.resize(4) 'Resize es una funcion, usar parentesis....
FMain.Text = "CPU"
iniciarpuertoparalelo()
usoled(0)
9 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
usoProgressBar1(0)
'lectura del comando top, para ver % de uso de la cpu...
END
PUBLIC SUB usoled(n AS Float)
' 100/8=12.5
'Tabla de encendido de leds
' 12,5.......... 1
' 25 .......... 2
' 37,5 ......... 3
' 50 ......... 4
' 62,5 ......... 5
' 75 ......... 6
' 87,5 ......... 7
' 100 ......... 8
salida = 0
led8 = 0
led7 = 0
led6 = 0
led5 = 0
led4 = 0
led3 = 0
led2 = 0
led1 = 0
SELECT CASE n
CASE 0.001 TO 12.5
led8 = 0
led7 = 0
led6 = 0
led5 = 0
led4 = 0
led3 = 0
led2 = 0
led1 = 1
CASE 12.5 TO 25
led8 = 0
led7 = 0
led6 = 0
led5 = 0
led4 = 0
led3 = 0
led2 = 2
led1 = 1
CASE 25 TO 37.5
led8 = 0
led7 = 0
led6 = 0
led5 = 0
led4 = 0
led3 = 4
led2 = 2
led1 = 1
CASE 37.5 TO 50
led8 = 0
10 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
led7 = 0
led6 = 0
led5 = 0
led4 = 8
led3 = 4
led2 = 2
led1 = 1
CASE 50 TO 62.5
led8 = 0
led7 = 0
led6 = 0
led5 = 16
led4 = 8
led3 = 4
led2 = 2
led1 = 1
CASE 62.5 TO 75
led8 = 0
led7 = 0
led6 = 32
led5 = 16
led4 = 8
led3 = 4
led2 = 2
led1 = 1
CASE 75 TO 87.5
led8 = 0
led7 = 64
led6 = 32
led5 = 16
led4 = 8
led3 = 4
led2 = 2
led1 = 1
CASE 87.5 TO 100
led8 = 128
led7 = 64
led6 = 32
led5 = 16
led4 = 8
led3 = 4
led2 = 2
led1 = 1
END SELECT
'escribo valores de leds...
on2 = led1 + led2 + led3 + led4 + led5 + led6 + led7 + led8
SEEK #puerto, &H378
salida = on2
WRITE #puerto, salida
END
PUBLIC SUB iniciarpuertoparalelo()
TRY puerto = OPEN "/dev/port" FOR WRITE
IF ERROR THEN
11 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
12 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
13 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Capturas de pantalla:
14 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Ficha de materiales
Cantidad
Material
Observaciones
Precio
0.40x2
0.40x2
0.40x2
Resistencias
Diodos 1N4148
Rollo de de cable
pequeo
Placa breadboard
http://www.sebyc.com/reess/componentes/led.htm
0.40x2
0,0212x8
0,0071x8
1,00x1
Placa de pruebas
5,60x1
15 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
Indice Alfabtico
ndice alfabtico
1N4148..........................................................................................................................................5, 15
administrador.......................................................................................................................................9
andres_5..............................................................................................................................................3
nodo .................................................................................................................................................5
Clculo de resistencia para el led .......................................................................................................4
Ctodo.................................................................................................................................................5
diodo....................................................................................................................................................5
discos-ram...........................................................................................................................................3
formatear.............................................................................................................................................9
iniciarpuertoparalelo()...................................................................................................................9, 11
lecturacpu.......................................................................................................................................12 s.
leds.......................................................................................................................................3, 10 s., 13
Pablo Mileti.........................................................................................................................................3
Placa breadboard...........................................................................................................................6, 15
Placa de pruebas................................................................................................................................15
puerto paralelo.................................................................................................................................3, 9
ramdisk......................................................................................................................................3, 9, 17
rectificadores.......................................................................................................................................5
root................................................................................................................................................9, 12
TuxInfo................................................................................................................................................3
uso de la cpu............................................................................................................................3, 10, 12
usoled.........................................................................................................................................9 s., 13
usoProgressBar1..........................................................................................................................10, 13
16 De 17
Paso a Paso: Mi primer proyecto Hardware-Software. Panel Led para mostrar el uso de la CPU
http://foro.elhacker.net/profiles/andres5-u243480.html
http://www.linuxware.es/manuales/ramdisk.html
http://www.gambas-es.org/
http://foro.elhacker.net/electronica-b31.0/
17 De 17