Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Meta

#361
Electrónica / Grabar en la EEPROM el modo.
21 Diciembre 2010, 02:41 AM
Hola:

Cuando cambie de modo al Termostato, que es el tercer modo. Al reiniciar el PIC completo siempre se me pone al modo 0 que es el predeterminado. ¿Cómo logro grabar en la EEPROM en la posición 2 que al encender el PIC se muestre en el último modo que has puesto en el LCD?

;********************************* DS1820_Termostato.asm ******************************
;
; ===================================================================
;  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;  E. Palacios, F. Remiro y L. López. www.pic16f84a.com
;  Editorial Ra-Ma.  www.ra-ma.es
; ===================================================================
;
; Programa de control para un termómetro y termostato digital. Utiliza el sensor de
; temperatura DS1820 que transmite la información vía serie a través de un bus de una
; sola línea según un protocolo del fabricante de semiconductores Dallas Semiconductors.
;
; El ajuste de la temperatura a la que conmuta el termostato se logra mediante dos
; pulsadores: "MODO" e "INCREMENTAR", que se conectan a pines del Puerto B y cuyo
; funcionamiento se basa en interrupción por cambio en la línea del Puerto B.
;
; Se maneja de la siguiente forma:
; - En estado de reposo funciona sólo como termómetro. Aparece la temperatura en pantalla
; del módulo LCD. La salida del termostato está apagada.
; - Pulsa "MODO" y se ajusta la temperatura deseada mediante el pulsador "INCREMENTAR".
; - Vuelve a pulsar "MODO", se activa el termostato. Si la temperatura medida es menor
; que la deseada enciende la carga, que puede ser un calefactor. Si la temperatura
; medida es mayor que la deseada, apaga la carga.
; - Si se vuelve a pulsar "MODO", apaga la carga y pasa a funcionar sólo como termómetro.
;
; Así pues, en el circuito se distinguen tres modos de funcionamiento que se identifican
; mediante tres flags:
; A) Modo "Termostato_OFF", donde funciona como termómetro normal sin termostato. Se
; reconoce por el flag F_Termostato_OFF.
; B) Modo "Termostato_Ajuste", donde se ajusta la temperatura deseada cuando funcione
; como termostato. Se reconoce por el flag F_Termostato_Ajuste.
; C) Modo "Termostato_ON", donde funciona como termómetro normal con termostato. Se
; reconoce por el flag F_Termostato_ON.
;
; El programa consigue que esté activado uno solo de los flags anteriores.
;
; Al apagar el sistema debe conservar el valor de la temperatura deseada en el termostato
; para la próxima vez que se encienda.
;
; ZONA DE DATOS **********************************************************************

LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
ERRORLEVEL -302

CBLOCK 0x0C
ModoDeseado
TemperaturaDeseada
Registro50ms ; Guarda los incrementos cada 50 ms.
FlagsModos ; Guarda los flags para establecer los
ENDC ; modos de trabajo.

ORG 0x2100 ; Corresponde a la dirección 0 de la zona
; EEPROM de datos. Aquí se va a guardar el
DE .24 ; la temperatura deseada. En principio 24 ºC.

#DEFINE  SalidaTermostato PORTB,1 ; Carga controlada por el termostato.
#DEFINE  Zumbador PORTB,2 ; Aquí se conecta el zumbador.
#DEFINE  ModoPulsador PORTB,7 ; Los pulsadores se conectan a estos
#DEFINE  IncrementarPulsador PORTB,6 ; pines del puerto B.
#DEFINE  F_Termostato_ON FlagsModos,2 ; Flags utilizados en el ajuste de la
#DEFINE  F_Termostato_Ajuste FlagsModos,1 ; temperatura del termostato.
#DEFINE  F_Termostato_OFF FlagsModos,0

TMR0_Carga50ms EQU d'256'-d'195' ; Para conseguir interrupción cada 50 ms.
CARGA_2s EQU d'40' ; Leerá cada 2s = 40 x 50ms = 2000ms.

; ZONA DE CÓDIGOS ********************************************************************

ORG 0
goto Inicio
ORG 4
goto ServicioInterrupcion

Mensajes
addwf PCL,F
MensajePublicitario
DT "Electronica PIC", 0x00
MensajeTermostato_ON
DT "Termostato: ", 0x00
MensajeTermostato_Ajuste
DT "Temper. deseada", 0x00
MensajeGradoCentigrado
DT "ºC  ", 0x00 ; En pantalla LCD: "ºC  "

Inicio
call LCD_Inicializa
bsf STATUS,RP0
movlw b'00000111' ; Prescaler de 256 para el TMR0 y habilita
movwf OPTION_REG ; resistencias de Pull-Up del Puerto B.
bsf ModoPulsador ; Se configuran como entrada.
bsf IncrementarPulsador
bcf SalidaTermostato ; Se configuran como salida.
bcf Zumbador
bcf STATUS,RP0
call LCD_Linea1 ; Se sitúa al principio de la primera línea.
movlw MensajePublicitario
call LCD_Mensaje
call DS1820_Inicializa ; Comienza la conversión del termómetro y pone
call ModoTermostato_OFF ; este modo de funcionamiento.
movlw TMR0_Carga50ms ; Carga el TMR0 en complemento a 2.
movwf TMR0
movlw CARGA_2s ; Y el registro cuyo decremento contará los 2 s.
movwf Registro50ms
clrw ; Lee la posición 0x00 de memoria EEPROM de datos
call EEPROM_LeeDato ; donde se guarda la temperatura deseada de la última
movwf TemperaturaDeseada ; vez que se ajustó.
movlw 0x01
call EEPROM_LeeDato
movwf ModoDeseado
movlw b'10101000' ; Activa interrupción del TMR0 (T0IE), por cambio de
movwf INTCON ; líneas del Puerto B (RBIE) y la general (GIE)
;
; La sección "Principal" es mantenimiento. Sólo espera las interrupciones.
; No se puede poner en modo de bajo consumo porque la instrucción "sleep" detiene el Timer 0.

Principal
goto Principal

; Subrutina "ServicioInterrupcion" ------------------------------------------------------
;
; Detecta qué ha producido la interrupción y ejecuta la subrutina de atención correspondiente.

ServicioInterrupcion
btfsc INTCON,T0IF ; Si es una interrupción producida por el Timer 0
call Termometro ; lee el termómetro y actualiza termostato.
btfss INTCON,RBIF ; Si es una interrupción RBI lee los pulsadores.
goto FinInterrupcion
btfss ModoPulsador ; ¿Está presionado el pulsador de "AJUSTE"?
call CambiarModo ; Sí. Ajusta la temperatura deseada en el termostato.
btfss IncrementarPulsador ; ¿Pulsado "INCREMENTAR"?
call IncrementarTempDeseada ; Sí, pasa a incrementar la temperatura deseada.
FinInterrupcion
bcf INTCON,RBIF ; Limpia los flags de reconocimiento.
bcf INTCON,T0IF
retfie

; Subrutina "Termometro" ----------------------------------------------------------------
;
; Esta subrutina lee y visualiza el termómetro cada 2 segundos aproximadamente. Se ejecuta
; debido a la petición de interrupción del Timer 0, cada 50 ms. Para conseguir una
; temporización de 2 s, habrá que repetir 40 veces el lazo de 50 ms (40x50ms=2000ms=2s).
;
; También actúa sobre la salida del termostato posicionándola adecuadamente.

Termometro
movlw TMR0_Carga50ms
movwf TMR0 ; Recarga el TMR0.
decfsz Registro50ms,F ; Decrementa el contador.
goto FinInterrupcion ; No han pasado 2 segundos, por tanto sale.
movlw CARGA_2s ; Repone este contador nuevamente.
movwf Registro50ms
call DS1820_LeeTemperatura ; Lee la temperatura.
call DS1820_Inicializa ; Comienza conversión para la siguiente lectura.
call Termostato ; Actúa sobre el termostato.
; call Visualiza ; Como esta subrutina se escribe a continuación
; return ; se ahorra estas dos instrucciones y ahorra
; también espacio en la pila.
; Subrutina "Visualiza" -----------------------------------------------------------------
;
; Visualiza el termómetro en tres formatos posibles:
; A) Con el termostato desactivado, modo "Termostato_OFF". Por ejemplo:
; "IES. Isaac Peral" (Primera línea)
; "       24.5ºC   " (Segunda línea).
; Donde en la primera línea se visualiza un mensaje publicitario y en la
; segunda línea la temperatura medida actual.
; B) Ajuste del termostato, modo "Termostato_Ajuste". Por ejemplo:
; "Temper. deseada" (Primera línea)
; "        25ºC     " (Segunda línea).
; Donde en la segunda línea visualiza la temperatura que se desea ajustar.
; C) Con el termostato activado, modo "Termostato_ON". Por ejemplo:
; "Termostato: 25ºC" (Primera línea)
; "      23.5ºC    " (Segunda línea).
; Donde en la primera línea se visualiza la temperatura que se desea
; ajustar y en la segunda línea la temperatura medida actual.
Visualiza
btfsc F_Termostato_OFF
goto VisualizaTermometro
btfsc F_Termostato_Ajuste
goto VisualizaTermostato_Ajuste
btfsc F_Termostato_ON
goto VisualizaTermostato_ON
return

; "VisualizaTermostato_ON" --------------------------------------------------------------
;
; Visualiza el valor de la temperatura deseada en la primera línea y el valor de la
; temperatura medida en la segunda línea.
;
VisualizaTermostato_ON
call LCD_Linea1
movlw MensajeTermostato_ON
call LCD_Mensaje
call VisualizaTemperaturaDeseada
call VisualizaTemperaturaMedida
return

; "VisualizaTermostatoAjuste" y "VisualizaTemperaturaDeseada" ---------------------------
;
; Visualiza en la pantalla el formato propio de este modo.
;
; Entradas: (TemperaturaDeseada) temperatura ajustada en la subrutina Incrementar.

VisualizaTermostato_Ajuste
call LCD_Linea1 ; Se sitúa al principio de la primera línea.
movlw MensajeTermostato_Ajuste ; Visualiza mensaje en la primera línea.
call LCD_Mensaje
movlw .6 ; Se coloca para centrar visualización en la
call LCD_PosicionLinea2 ; segunda línea.
VisualizaTemperaturaDeseada
movf TemperaturaDeseada,W
call BIN_a_BCD ; La pasa a BCD.
call LCD_Byte ; Visualiza, apagando los ceros no significativos.
movlw MensajeGradoCentigrado ; En pantalla aparece "ºC  ".
call LCD_Mensaje
return

; "VisualizaTermometro" y ""VisualizaTemperaturaMedida" ---------------------------------
;
; En la primera línea se visualiza un mensaje publicitario y en la segunda línea la
; temperatura medida
;
; Entradas:
;  - (DS1820_Temperatura), temperatura medida en valor absoluto.
;     - (DS1820_TemperaturaDecimal), parte decimal de la temperatura medida.
;     - (DS1820_Signo), registro con el signo de la temperatura. Si es igual a
; b'00000000' la temperatura es positiva. Si es b'11111111' resulta que
; la temperatura es negativa.
;
VisualizaTermometro
call LCD_Linea1 ; Se sitúa al principio de la primera línea.
movlw MensajePublicitario
call LCD_Mensaje
VisualizaTemperaturaMedida
movlw .5 ; Se coloca para centrar visualización en la
call LCD_PosicionLinea2 ; segunda línea.
btfss DS1820_TemperaturaSigno,7 ; ¿Temperatura negativa?
goto TemperaturaPositiva ; No, es positiva.
TemperaturaNegativa:
movlw '-' ; Visualiza el signo "-" de temperatura negativa.
call LCD_Caracter
TemperaturaPositiva
movf DS1820_Temperatura,W
call BIN_a_BCD ; La pasa a BCD.
call LCD_Byte ; Visualiza apagando los ceros no significativos.
movlw '.' ; Visualiza el punto decimal.
call LCD_Caracter
movf DS1820_TemperaturaDecimal,W ; Visualiza la parte decimal.
call LCD_Nibble
movlw MensajeGradoCentigrado ; En pantalla LCD aparece "ºC  ".
call LCD_Mensaje
return

; Subrutina "Termostato" ----------------------------------------------------------------
;
; Controla una carga en función del valor de la temperatura medida respecto de la temperatura
; deseada. Para evitar inestabilidad en la salida, tendrá un pequeño ciclo de histéresis.
; Así por ejemplo, si la temperatura deseada es 24 ºC la carga se activará cuando la
; temperatura baje o sea igual a 23,5 ºC y se apagará cuando la supere o sea igual a 25ºC.
; Si la temperatura medida está entre esos márgenes (23,5 y 25ºC), se queda en el estado
; anterior, tanto si está encendida como apagada.
;
; Para temperaturas negativas la salida se debe activar siempre.
;
; Entradas:
; - (DS1820_Temperatura), temperatura medida en valor absoluto.
;     - (TemperaturaDeseada), temperatura a partir de la cual se tomarán
; decisiones sobre la salida.
;     - (DS1820_Signo), registro con el signo de la temperatura medida. Si es cero
; la temperatura es positiva y todos sus bits son "1", es negativa.
;
; Salida:    - Su funcionamiento:
;     - Estando apagada, si la temperatura medida desciende por debajo de la
; temperatura deseada la salida se activará.
;     - Estando encendida, si la temperatura medida supera la deseada la
; salida se apagará.
;     - Si las temperaturas medidas y deseada son iguales se queda en estado
; anterior, tanto si está encendida como si está apagada.
;     - Para temperaturas negativas la salida se debe activar siempre.
Termostato
btfss F_Termostato_ON ; Si el termostato no está activado salta a
goto ApagaCarga ; apagar la carga.
btfsc DS1820_TemperaturaSigno,7 ; Con temperaturas negativas pasa a activar
goto EnciendeCarga ; la carga.
btfss SalidaTermostato ; Comprueba el estado actual de la salida para
goto SalidaEstabaApagada ; actuar en consecuencia.
SalidaEstabaActivada ; Pasa a comprobar si tiene que apagar la carga.
movf DS1820_Temperatura,W
subwf TemperaturaDeseada,W ; (W)=(TemperaturaDeseada)-(DS1820_Temperatura).
btfsc STATUS,C ; ¿(TemperaturaDeseada)<(DS1820_Temperatura)?
goto FinTermostato ; Sí, por tanto, lo deja encendido y sale.
call Pitido ; Pitido cada vez que conmuta la carga.
ApagaCarga
bcf SalidaTermostato ; Apaga la salida y sale.
goto FinTermostato
SalidaEstabaApagada ; Pasa a comprobar si tiene que encender la carga
movf TemperaturaDeseada,W
subwf DS1820_Temperatura,W ; (W)=(DS1820_Temperatura)-(TemperaturaDeseada).
btfsc STATUS,C ; ¿(DS1820_Temperatura)<(TemperaturaDeseada)?
goto FinTermostato ; Sí, la deja apagada y sale.
EnciendeCarga
call Pitido ; Pitido cada vez que activa la carga.
bsf SalidaTermostato
FinTermostato
return

; Subrutinas "CambiarModo" y "ModoTermostato_OFF" -----------------------------------------
;
; Subrutina de atención a la interrupción producida por el pulsador "MODO" que cambia el modo
; de funcionamiento. Cada vez que pulsa pasa por los modos "Termostato_Ajuste", "Termostato_ON",
; "Termostato_OFF" y vuelta repetir.
;
; El ajuste de la temperatura deseada en el termostato se logra mediante dos pulsadores: "MODO"
; e "INCREMENTAR" conectados a pines del Puerto B.

; Al principio aparecerá sólo el termómetro y el termostato estará desactivado: modo
; "Termostato_OFF"
;
; Para comprender el funcionamiento de esta subrutina, hay que saber que el registro FlagsModos
; contiene 3 flags que permiten diferenciar cada uno de los modos de funcionamiento:
; A) Modo "Termostato_OFF", donde funciona como termómetro normal sin termostato. Se
; reconoce por el flag F_Termostato_OFF, que es el bit 0 del registro FlagsModos.
; B) Modo "Termostato_Ajuste", donde se ajusta la temperatura deseada cuando funcione
; como termostato. Se reconoce por el flag F_Termostato_Ajuste, que es el bit 1 del
; registro FlagsModos.
; C) Modo "Termostato_ON", donde funciona como termómetro normal y, además, como termostato.
; Se reconoce por el flag F_Termostato_ON, que es el bit 2 del registro FlagsModos.
;
; Así pues, el contenido del registro (FlagsModos) identifica los siguientes modos de
; funcionamiento:
; - (FlagsModos)=b'00000001'. Está en el modo "Termostato_OFF".
; - (FlagsModos)=b'00000010'. Está en el modo "Termostato_Ajuste".
; - (FlagsModos)=b'00000100'. Está en el modo "Termostato_ON".

; Pueden darse dos casos:
; - Que pulse "AJUSTE" estando en el modo más alto, "Termostato_ON",
; (FlagsModos)=b'00000100'. En este caso debe pasar al modo inicial
; "Termostato_OFF" poniendo (FlagsModos)=b'00000001'.
; - Que pulse "AJUSTE" estando ya en cualquiera de los otros dos modos, en cuyo caso debe
; pasar al siguiente modo. Esto lo hace mediante un desplazamiento a izquierdas. Así, por
; ejemplo, si antes estaba en modo "Termostato_OFF", (FlagsModos)=b'00000001', pasará a
; (FlagsModos)=b'00000010' que identifica al modo "Termostato_Ajuste".
;
CambiarModo
call Retardo_20ms ; Espera a que se estabilicen niveles de tensión.
btfsc ModoPulsador ; Si es un rebote, sale fuera.
goto FinCambiarModo
call PitidoCorto ; Cada vez que pulsa se oye un pitido.
btfss F_Termostato_ON ; Detecta si está en el último modo.
goto ModoSiguiente ; Si no, pasa al modo siguiente.
ModoTermostato_OFF
call Pitido ; Pitido cada vez que conmuta la carga.
bcf SalidaTermostato ; Apaga la carga.
movlw b'00000001' ; Actualiza el registro FlagsModos pasando al
movwf FlagsModos ; modo inicial "Termostato_OFF".
goto BorraPantalla
ModoSiguiente ; Desplaza un "1" a la izquierda del registro
bcf STATUS,C ; FlagsModos para ajustar secuencialmente
rlf FlagsModos,F ; cada uno de los modos de funcionamiento.
BorraPantalla
call LCD_Borra ; Borra la pantalla anterior.
FinCambiarModo
call Visualiza
btfss ModoPulsador ; Ahora espera a que deje de pulsar.
goto FinCambiarModo
return

; Subrutina "IncrementarTempDeseada" ----------------------------------------------------
;
; Subrutina de atención a la interrupción por cambio de la línea RB6 a la cual se ha conectado
; el pulsador "INCREMENTAR". Estando en el modo "Termostato_Ajustar" incrementa el valor de
; la temperatura deseada entre unos valores máximo y mínimo.
;
; Al final debe guardar el valor de la temperatura deseada en memoria EEPROM de datos para
; preservar su valor en caso que desaparezca la alimentación.
;
TemperaturaMinima   EQU .20
TemperaturaMaxima   EQU .36

IncrementarTempDeseada
call Retardo_20ms ; Espera a que se estabilicen niveles de tensión.
btfsc IncrementarPulsador ; Si es un rebote sale fuera.
goto FinIncrementar
btfss F_Termostato_Ajuste ; Si no está en modo "Termostato_Ajuste" sale
goto FinIncrementar ; fuera.
call PitidoCorto ; Pitido cada vez que pulsa.
incf TemperaturaDeseada,F ; Incrementa el valor de la temperatura deseada.
movlw TemperaturaMaxima ; ¿Ha llegado a la temperatura máxima de ajuste?.
subwf TemperaturaDeseada,W ; (W) = (TemperaturaDeseada) - TemperaturaMaxima.
btfss STATUS,C ; ¿(TemperaturaDeseada)>=TemperaturaMaxima?
goto VisualizaIncremento ; No, pasa a visualizarlo.
movlw TemperaturaMinima ; Sí, entonces inicializa el registro.
movwf TemperaturaDeseada
VisualizaIncremento
call Visualiza ; Visualiza mientras espera a que deje
call Retardo_200ms ; de pulsar.
btfss IncrementarPulsador ; Mientras permanezca pulsado,
goto IncrementarTempDeseada ; incrementa el dígito.
clrw ; Salva el valor de la temperatura deseada en la
movwf EEADR ; posición 00h de la EEPROM de datos. Se conserva
movf TemperaturaDeseada,W ; aunque se apague la alimentación.
call EEPROM_EscribeDato
FinIncrementar
return

; Subrutina de pitidos ------------------------------------------------------------------
;
PitidoLargo
bsf Zumbador
call Retardo_500ms
Pitido
bsf Zumbador
call Retardo_200ms
PitidoCorto
bsf Zumbador
call Retardo_20ms
bcf Zumbador
return
;
INCLUDE  <BUS_1LIN.INC> ; Subrutinas de control del bus de 1 línea.
INCLUDE  <DS1820.INC> ; Subrutinas de control del termómetro digital.
INCLUDE  <RETARDOS.INC>
INCLUDE  <BIN_BCD.INC>
INCLUDE  <LCD_4BIT.INC>
INCLUDE  <LCD_MENS.INC>
INCLUDE  <EEPROM.INC>
END

; ===================================================================
;  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;  E. Palacios, F. Remiro y L. López. www.pic16f84a.com
;  Editorial Ra-Ma.  www.ra-ma.es
; ===================================================================

Felices fiestas 2010.








Edito:

Prederterminado viene así los modos.

#DEFINE  F_Termostato_ON        FlagsModos,2    ; Flags utilizados en el ajuste de la ; 2
#DEFINE  F_Termostato_Ajuste    FlagsModos,1   ; temperatura del termostato. ; 1
#DEFINE  F_Termostato_OFF        FlagsModos,0    ; 0
He cambiado el 2 por el 0 y al revés.

#DEFINE  F_Termostato_ON        FlagsModos,0    ; Flags utilizados en el ajuste de la ; 2
#DEFINE  F_Termostato_Ajuste    FlagsModos,1    ; temperatura del termostato. ; 1
#DEFINE  F_Termostato_OFF        FlagsModos,2    ; 0
Por fin he logrado que se muestre lo primero que es el Termostato. Me ocurre una cosa, que ya no puedo cambiar de modo. Ahora te toca arreglarlo. Se quedó sólo en el modo 2 y de ahí no sale. Al menos funciona el termostato pero no puedo configurar nada.

#362
Scripting / [Python] - n>=m
20 Diciembre 2010, 15:00 PM
Buenas:

¿Si lees esto así entiendes algo?
Espero que no sea muy complicado y largo de hacer. Este lo quiero ver por curiosidad y entendiéndolo bien.

Saludo.
#363
Scripting / [Python] - función recursividad
20 Diciembre 2010, 14:40 PM
Hola:

Ahora tengo más tiempo en navidades para aprender.

Quiero hacer este ejercico.
No me entra en la cabeza. Página 284 del PDF aquí.
http://marmota.act.uji.es/mtp/pdf/python.pdf

FElices fiestas 2010.
#364
Electrónica / Sensor de temperatura DS1820
17 Diciembre 2010, 01:35 AM
Hola:

Hace un tiempo estaba comparando sensores de una lína entre LM35 y el DS1820. Lo probé con un PIC16F84A bajo el DS1820 con tiempo de conversión a 200 ms. El DS18S20 son de 750 ms.

Este PIC16F84A funciona con oscilador externo a 4 MHz. El tiempo de conversión cuando cambia la temperatura lo veo lento, he visto sensores más rápidos y casi a tiempo real. Cuando la temperatura cambia muy rápido en el LCD te lo muestra a saltos, se nota la lentitud y eso que me aconsejaron muchas personas usar el DS1820 porque es más preciso que el LM35. Los que han probado los dos sabrán.

La pregunta es. ¿Usando el DS1820 con un PIC16F84A a 20 MHz se puede notar la velicidad en el LCD o no tiene nada que ver?

[youtube=425,350]http://www.youtube.com/watch?v=R5863PaHnRk[/youtube]

Un cordial saludo.
#365
Electrónica / Hacer un ainterfaz sencilla para PIC
16 Diciembre 2010, 00:14 AM
Hola:

Ver enlace.
http://foro.elhacker.net/net/hacer_un_ainterfaz_sencilla_para_pic-t314107.0.html

Saludo.

PD: Si esto no va aquí borren el tema y disculpe.
#366
Hola:

Ya que estamos con Visual Studio Express gratuito. Quiero saber si hay gente por aquí cerca que haya programado un programa visual muy sencillo que sea capaz de grabar un PIC16F84A y EEPROM con el TE20 por puerto serie.

Estoy liado que no puedo grabar pic con WinPic800, ni el ic-prog ni tampoco con el USB PIC Programmer con Windows 7 64 Bits. Ya se los comenté al de Winpic800 y no se si lo hará. Lo que se me ocurre es usar VirtualBox con Windows XP 32 bits dentro de ella que haré dentro poco.



El programa es simple. Solo usaré PIC con el cual se usa mucho, en mi caso el 16F84A y 16F88 por el memento aunque tengo más por ahí como los 18Fx550. Por ahora nos centramos en intentar programa y ser capaz de granar un .hex al PIC16F84A. No se como será el tema, pero el protocolo de comunicación para enviar datos por puerto serie RS232 aquí y aquí tienes una idea de como hacerlo.

El primer prototipo no haré configuración de bit ni mostraré los códigos en pantalla, solo que seleccione un .hex que tenga por ahí en Windows y con un botón sea capaz de grabar el PIC16F84A mediante el TE20 que funciona con el puerto serie.

Cualquier información para empezar es útil. Con el tiempo ya se verá si loharé bonito como los demás grabadores.

Saludo.
#367
Teniendo un alternador de coche que suelta 12V Alterna. Con su regulador lo transforma en continua. Lo conecto a la batería de coche para que cargue la batería. La batería alimenta a otro motor que mueve el eje del alternador. Lo que hace es realimentación.

¿Esto es posible realizarlo de alguna manera?

Por un lado el motor alimenta al alternador. Mientras el motor gasta batería, por otro lado el alternador lo vuelve a generar y así tendrá corriente para encender la luz en toda la noche. Lo quiero hacer si coche, sólo un motor, un alternador, una bombilla de coche de 12 V,

Tengo entendido que en los coches (no se nada de coches) al arrancar el motor primero la batería carga un condensador, así tira del condensador en vez de la batería. Si tira de la batería directamente no te dura nada. ¿Es cierto?







Si alguien que sepa de coches, quiero que me diga o me muestre algún esquema de su funcionamiento. La idea es tener un generador de luz de coche y también para endender una radio por si estoy de acampada por poner un ejemplo.

Un cordial saludo.
#368
Electrónica / ¿Me sirve esta antena?
11 Diciembre 2010, 20:39 PM
Hola:

Queremos conectarnos un amigo y yo por Wifi con antenas caseras a una distancia de más de 150 m, puede que 200. He pensado quitar la electrónica de la antena Televes que tengo abajo, es parecida.



¿Este tipos de antenas se podrá modificar para adaptarla a Wi-fi?

Un cordial saludo.
#369
Hola:

Quiero encender 6 Led blanco directamente a 230 VAC - 50 Hz (La que hay en España).

Muy caro no debe costar hacer uno según aquí que hasta los venden.
http://todoelectronica.com/ledplaca-circuito-para-conectar-220v-b209-p-3529.html

Hay más información por aquí pero no sólo voy a conectar un Led.
http://www.tuelectronica.es/esquemas/iluminacion/diodo-led-120-230-voltios.html

En esta imagen usan condensador y resistencias:


En el libro que tengo hay cálculos sólo para una resistencia o un condensador, no las dos cosas a la vez. Cuenta que la resistencia suele ser grande, lo que no es muy favorito para la gente diseñar circuitos pudiendo hacer otro más pequeño. Meten un condensador ya que es más pequeño y no tiene disipación de calor.

En la fuente de alimentación que tengo 5V DC al vacío, al conectarlo al un solo Led normal amarillo se me queda en 4.5 V. Tiene un Led y una resistencia 330 Ohmios en serie. Midiendo con el tester me consume unos 13 mA. Si pongo el Led blanco me consume unos 125 mA, una pasada. Todos los Led no consumen igual. (Por el precio que tiene, no tiene que ser de alta intensidad). REcuerdo que un amigo fue a comprar un Led rojo normal e lata densidad y le cobran más de 5 € por unidad. Es una pasada.

Un cordial saludo.

Edited by - Meta on 09/12/2010  04:15:53 AM
#370
Hola:

No conocía ni conozco esta empresa supuestamente nueva y menos imaginar un microcontrolador de 4 núcleos.

Microcontroladores de 4 nucleos! hasta 1600 MIPS
Una empresa relativamente nueva, ha dado a conocer su linea de microcontroladores con las siguientes caracteristicas

-4 procesadores logrando hasta 1600MIPS y hasta 32 tareas en tiempo real concurrentes.

-Acceso entre los nucleos hacia 16 registro dedicados, pudiendo trabajar todos como un solo nucleo.

-Garantiza la ejecucion en tiempo real, sin importar el comportamiento de los demas nucleos

-MAC de 32x32 @ 64bit para obtener la funcionalidad de un DSP de alto rendimiento y funciones criptograficas.

y un sin fin de perifericos bastante interesantes, revisenlo en la pagina del fabricante:

www.xmos.com


Saludo.
#371
Electrónica / LM35 y DS18S20
8 Diciembre 2010, 12:58 PM
Buenas:

Mirando la diferencia LM35 y DS18S20. ¿Por qué uno o por qué otro sensor si hacen lo mismo?

Se que el DS18S20 usa el protocolo I2C y el LM35 No.

DS18S20:

Sensor  DS18S20 de  la firma Dallas Semiconductor que proporciona medidas de temperatura en grados centígrados con una resolución de 9 bits. Entre sus características caben citar las siguientes:

    * Interface 1-wire que precisa de una única línea de datos para la comunicación con el controlador
    * No necesita componentes externos
    * Se alimenta a través de la propia línea de datos o bien mediante una tensión de 3 a 5.5Vcc
    * Rango de temperatura de -55.00ºC a +125ºC con resolución de +/- 0.5ºC
    * Tiempo de conversión de 750mS

LM35:
Este es un viejo conocido, pero para muchas personas que apenas están entrando al mundo de los circuitos integrados, este pequeño les puede hacer la vida mas sencilla algunas de sus características son:

Calibrado directamente en ° Celsius (Centígrados)
Factor lineal de + 10.0 mV/°C
0.5°C de presicion garantizable (a +25°C)
Calibrado para un rango completo −55° a +150°C
Perfecto para aplicaciones a gran distancia
Opera de 4 a 30V
Consumo menor a 60uA
Bajo autocalentamiento 0.08°C en aire sin circulacion
No linealidad de apenas ±1⁄4°C, típico.
Baja impedancia de salida, 0.1 W para una carga de 1 mA.

Al tener como salida un voltaje de 10mV/°C este sensor es ideal para ser ocupado con
los CAD (Convertidores Analógico digital) de 10 bits que vienen incluidos en la mayor parte
de los microcontroladores.

Una de las diferencias que visto bien clara que el DS18S20 cuesta mucho más caro que el LM35.

¿Cuál sensor prefieren y por qué?

Saludo.
#372
Hola:

Uso el PIC 16F84A y el PIC 16F88.

Al menos con el 16F84A, ya me encargaré de adaptarlo al 16F88.

Teniendo como entrada el puerto B y salidas el puerto B de esa manera configurada.

RA0 = Borra toda la RAM.
BA1 = Borra toda la EEPROM.

    * Si pulso el botón RA0 del 16F84A borro toda la RAM de una pasada sin apagar el PIC.
    * Si pulso el botón RA1 borro la EEPROM completamente como si estuviera de fábrica.


Se que se puede hacer uno en uno, es muy tedioso y prefiero hacerlo con solo un botón para experimentar. Antes que nada, quiero saber si existe esa posibilidad.

Saludo.
#373
Scripting / [Python] - Mínimo y máximo
1 Diciembre 2010, 04:30 AM
Buenas:

CitarDiseña una función que reciba una lista de enteros y devuelva los números mínimo y máximo de la lista simultáneamente.

¿A qué se refiere exactamente?

Vale, creo una lista como esta.

list = [3, 5, 6, 2, 9, 6, 7, 1]

A partir de aquí no se a que se refiere.

;)
#374
Scripting / [Python] - ¿Es primo?
1 Diciembre 2010, 04:27 AM
Buenas:

Por unos días que no he tenido tiempo estar en el ordenador por el temporal que me fastidió Internet y el Windows porque se me apagó de repente, vuelvo a por el Python.

Ejercicio:
CitarDiseña una función es_primo que determine si un número es primo (devolviendo True) o no (devolviendo False). Diseña a continuación un procedimiento muestra_primos que reciba un número y muestre por pantalla todos los números primos entre 1 y dicho número.

- Aquí función.

- introducir un número.
- ¿El número es primo?
Verdadero.
- entonces.
Falso.

Saludo.
#375
Scripting / [Python] Amigos
27 Noviembre 2010, 07:45 AM
Buenas:

En el ejercicio página 223, ejercicio 297 no me sale lo de True o False que es lo que pide. Pero si puedo hacerlo de otra manera con palbras. Quiero hacer exactamente lo que pide pero lo hice de otra manera.

Código (python) [Seleccionar]
# Definición de la función de comprobación de números amigos
def números_amigos(x,y):
    suma_x=0
    suma_y=0
    for i in range(1,x):
        if x%i==0:
            suma_x+=i

    for k in range(1,y):
        if y%k==0:
            suma_y+=k

    return suma_x==y and suma_y==x

# Cuerpo del programa
n_1=int(raw_input('Introduzca el nº 1: '))
n_2=int(raw_input('Introduzca el nº 2: '))

if numeros_amigos(n_1,n_2):
    print '¡Son amigos! :)'
else:
    print 'No son amigos :('


Ese código lo saqué de aquí.
http://es.wikipedia.org/wiki/N%C3%BAmeros_amigos#Python

;)
#376
Scripting / Python y aleatorio
27 Noviembre 2010, 04:57 AM
¿Hola?

Estoy mirando el libro PDF
http://marmota.act.uji.es/mtp/pdf/python.pdf
página 226, ejercicio 301).

Me pareció fácil de hacer, al final me cuesta. Por ahora hice esto y me da error.

Código (python) [Seleccionar]
from random import random

def aleatorio():
aleat = 0.0 <= x < 10.0
return random()

x = float(raw_input('Introduce un número con un decimal: '))

print aleatorio()


CitarIntroduce un número con un decimal: 5.0
0.133536743027

El ejercicio pide ente 0.0 y 10.0.

Otro intento es:
Código (python) [Seleccionar]
from random import random

def aleatorio():
aleat = 0.0 <= x < 10.0
return random().aleat()

x = float(raw_input('Introduce un número con un decimal: '))

print aleatorio()

CitarTraceback (most recent call last):
File "/home/a/NetBeansProjects/a/src/a.py", line 28, in <module>
print aleatorio()
File "/home/a/NetBeansProjects/a/src/a.py", line 24, in aleatorio
return random().aleat()
AttributeError: 'float' object has no attribute 'aleat'
#377
Scripting / [Python] - Infinitas soluciones o no.
26 Noviembre 2010, 14:03 PM

Buenas:

Mirando aquí.
CitarHaz una función que devuelva la solución de la ecuación lineal ax + b = 0 dados a y b. Si la ecuación tiene infinitas soluciones o no tiene solución alguna, la función lo detectará y devolverá el valor None.

Pensé que era más fácil pero veo que no.

Código (python) [Seleccionar]
def funcion(x):
    return (a * x + b) = 0


;)
#378
Scripting / [Python] Valor
26 Noviembre 2010, 09:46 AM
;)

Ver ejercicio...


Mirando aquí me puedeo hacer una idea.
http://es.wikipedia.org/wiki/Valor_absoluto




No tengo ideas de matemáticas. Muchas mates veo bajo Python.

:)
#379
Scripting / [Python] Pasar de negativo a positivo
26 Noviembre 2010, 09:13 AM
Hola:

Quiero convertir los números negativo a positivo. Estoy haciendo el ejercicio número 277 de la página 219 del PDF que tengo en mi firma sobre Python.

Código (python) [Seleccionar]
a = [1, 3, 6, 10]

def restar_valores(lista):
    for i in range(len(lista) -1):
        print 'La resta de %d y %d es igual a %d' % (lista[i],
        lista[i + 1],
        lista[i] - lista[i + 1])


print restar_valores(a)


Su resultado es:
CitarLa resta de 1 y 3 es igual a -2
La resta de 3 y 6 es igual a -3
La resta de 6 y 10 es igual a -4
None

Como pueden ver, muestras números negativo y quiero que salga positivo. si tienen otro código mejor que el que hice lo pueden mejorar.

Saludo.
#380
Scripting / [Python] - La media de una lista
25 Noviembre 2010, 12:10 PM
Hola:

Quiero calcular la media de una lista.

Ver ejercicio...

Código (python) [Seleccionar]
def maximo(lista):
    if len(lista) > 0:
        candidato = lista [0]
        for elemento in lista:
            if elemento > candidato:
                candidato = elemento
    else:
        candidato = None

    return candidato


No se hacer lo que te devuelva la media.
#381
Scripting / [Python] - Los años no perdonan.
25 Noviembre 2010, 08:46 AM
Muy buenas:

Ejercicio 276...

La verdad no entiendo muy bien lo de los años bisiestos en Python. Parece una función muy compleja y larga de hacer. Parece duro este ejercicio. ¿Eh?

Un abrazo.
#382
Scripting / [Python] - Funciones
25 Noviembre 2010, 06:52 AM
Buenas amig@s:

Ejercicio 264)...


No entiendo mucho eso de cambiar de grados.

Por ejemplo. Tengo 27ºC. Por lo que dice debo restar 32 grados F y multiplicar el resultado por 59.

Por ahora no entiendo bien el concepto de los clculos que hay que hacer.

En programación se que es algo así:
Código (python) [Seleccionar]
def calculo(x):
     return (operaciones grados que no se como es)


Saludo.
#383
Hacking / Servidores Web Apache.
20 Noviembre 2010, 19:51 PM
Hola:

Supongamos que tengo un servidor Web casero con Apache, PHP y MySQL bajo Windows o Linux. Quiero hacer pruebas de seguridad, hackearme a mi mismo o cualquiera. En él hay un foro cualquiera instalado, sea phpbb o cualquier otro que incluya bases de datos. En este caso se usa MySQL, puede ser FireBird, PostGreSQL, SQL Server Express, Oracle, etc.

En él hay una base de datos que quiero recuperar hackeándolo. Por ejemplo, en mi base de datos tengo una bases de datos llamada "EJEMPLO_DB" y muchas tablas hechas, de las tablas que hay escojo el que quiero supongamos que se llama la tabla "EJEMPLO_TB".

¿Existe una manera para que me entre en esa base de datos y extraer esa información?
Es decir, hackear la base de datos y estraer la información. Luego la puedo descargar y leer su contenido.

¿Esto es posible? Si es así, ¿cuáles son las técnica para practicar sobre seguridad de uno mismo?

Sea como sea, intentaré hackearme a mi mismo y que los demás hagan lo mismo y practiquen, luego si han tenido éxito me avisan. Es sevidor se usará como servidor y nada más, para mostrar una Web y que incluya bases de datos.

Un cordial saludo.
#384
Electrónica / SX8122: El heredero del NE555
20 Noviembre 2010, 02:34 AM
Hola:

Leyendo una nueva notica, parece ser que hay un poaible sustituto del 555.

¿Qué opinas?

Uno de los circuitos integrados que jamás pensé que podría llegar a ser sustituido es el inmortal NE555. Introducido en el mercado en el año 1971 por Signetics Corporation, fue llamado en su momento "La Máquina del Tiempo" y era el único circuito integrado en su especie (Temporizador, Timer). La empresa Semtech Corp. acaba de anunciar el SX8122, una nueva generación de circuitos integrados que reemplazarían en un futuro (no muy lejano) a este verdadero ícono de la electrónica mundial. Capaces de trabajar con tensiones de 0,9Volts (leíste bien, menos de 1Volt), esta nueva generación de temporizadores llega para demostrar que la electrónica ha evolucionado. Con el NE555 se han podido desarrollar millones de circuitos útiles, ¿tú crees que este nuevo IC, el SX8122, podrá con él? Nos gustaría conocer tu opinión.

En una apreciación muy personal, y por supuesto sin ninguna clase de información que lo confirme, podría apostar mi ordenador a que tanto las naves Voyager como el último de los transbordadores poseen en algún rincón de su interior un circuito basado en un NE555. Muy pocos emprendimientos industriales en el mundo no deben tener en funcionamiento un NE555. Y debe ser muy raro, además, no encontrar este circuito integrado dentro de cualquier cajón o gabinete de hasta el experimentador más pequeño del mundo. Iniciarte en la electrónica, ¿qué ha sido para ti? LEDs, resistencias, transistores, una batería, un operacional 741, ¡y un NE555 para hacer titilar un LED! Pero como todo en la vida cambia, avanza y evoluciona, por estos días estamos asistiendo a la aparición en el mercado de aquellos que serán los herederos de este legendario circuito integrado. Con características muy superiores al ya viejo NE555,  Semtech Corp. nos acerca para que


conozcamos al moderno SX8122.

El SX8122 es un nuevo tipo de temporizador basado en un reloj de precisión y un convertidor analógico/digital de 8 bits. Su arquitectura es sencilla y permite obtener resultados muy predecibles, incluso cuando este dispositivo esté utilizando una tensión de alimentación muy baja. Al igual que un temporizador NE555, el SX8122 compara un voltaje de entrada a dos tensiones de umbral para establecer o restablecer una célula de memoria interna que se encarga de controlar una salida digital y un pin de descarga de drenaje abierto. Entre otros aspectos similares, el SX8122 posee un pin de salida que puede ser usado para generar voltajes más altos. Esto es, una salida digital que trabaja a una frecuencia de 41Khz cuando se encuentra activa y permite obtener (mediante componentes externos apropiados) una elevación de tensión respecto a la tensión de alimentación, facilitando la conexión de pequeños motores de 1V o LEDs de colores blancos o verdes (que requieren una tensión mayor a la de alimentación del SX8122).


Ejemplo típico de conexión de un SX8122

Otra de las curiosidades de este circuito integrado es que está diseñado para trabajar con la alimentación de una batería AA o AAA de NiMH o de NiCd, que puede ser recargada por el mismo circuito integrado cuando éste detecta un bajo nivel de tensión en sus extremos. Suena difícil de comprender pero el funcionamiento es muy simple: el dispositivo posee un detector de batería baja entre otras cosas. Un pin del SX8122 puede estar conectado a una fuente de energía, como puede ser una conexión USB o cualquier tensión superior a 1,4Volts, y cuando el circuito integrado detecta que la alimentación que posee ha descendido por debajo de 0,9 Volt, activa el sistema de carga de la batería que hace funcionar al circuito, pasando a funcionar como cargador de batería. Este monitoreo de su tensión de alimentación es realizado cada 1 segundo, es decir, el SX8122 está atento de manera permanente a su tensión de alimentación y activa los circuitos necesarios para mantenerse siempre operativo en el momento que sea necesario. Es decir, si construyes un "blinker" (intermitente de luz) que esté alimentado por una batería AAA recargable, puedes conectarla a cualquier ordenador y el SX8122 se encargará de recargarla por ti.


Operación interna del SX8122 para actuar como cargador de celdas NiMH o NiCd

Por supuesto, puede funcionar como oscilador astable, monostable o cualquier otra función que ya le teníamos conocida al NE555, con casi los mismos criterios de diseño en lo que respecta a los cálculos necesarios para obtener los valores de oscilación y/o retardos de operación normal. La gran diferencia la genera la alta tecnología de fabricación y las mejoras que se han agregado a este chip para lograr no sólo un reemplazo de mejor desempeño sino también de nuevas características que lo sitúan en un escalón tecnológico superior. Por ejemplo, en este IC los clásicos comparadores de 1/3 y 2/3 de VCC ahora son convertidores analógicos/digitales de 8 bits con pasos de 7mV fijos, algo imposible de concebir en un diseño tan elemental de 1971. Estas y muchas características innovadoras te esperan para que las descubras y las apliques en tus futuros desarrollos. Adiós NE555, ¡Bienvenido SX8122!

Fuente:
http://www.neoteo.com/sx8122-el-heredero-del-ne555.neo

Saludo.
#385
Scripting / [Python] - Primos y matrices.
18 Noviembre 2010, 09:50 AM
#386
Scripting / [Python] - Traspuesta
18 Noviembre 2010, 07:14 AM
Hola:

Ver ejercicio.


No se si vale la pena hacer este ejercicio. ¿Qué utilidad tiene en este caso?

Parace que tiene desplazamiento en los datos de la matriz y encima se incrtementó una matriz más grande. ¿Tiene mucho código para hacer esto?



Edito:

Ya entiendo algo.
Una traspuesta de una matriz la que tiene por filas las columnas,y por columnas las filas (de la matriz original)... El "cambio de tamaño" se debe a que la matriz NO es cuadrada, y las dimensiones se intercambian...

¿Cómo hago ese cambio tan a la ligera en la matriz?
#387
Scripting / Ejemplo Python suma_matrices
16 Noviembre 2010, 06:33 AM
Buenas:

Estoy haciendo un ejemplo llamado suma_matrices_4.py de la página 197 que PDF que puedes ver en mi firma abajo.

Código (python) [Seleccionar]
# encoding: utf-8
# Pedimos la dimensión de las matrices,
m = int(raw_input('Dime el número de filas: '))
n = int(raw_input('Dime el número de columnas: '))

# Creamos dos matrices nulas...
A = []
for i in range(m):
    A.append( [0] * n)

B = []
for i in range(m):
    B.append ( [0] * n)

# ...y leemos sus contenidos de teclado.
print 'Lectura de la matriz A'
for i in range(m):
    for j in range(n):
        A[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))

print 'Lectura de la matriz B'
for i in range(m):
    for j in range(n):
        B[i][j] = float(raw_input('Dame el componente (%d, %d): ' % (i, j)))


Ahora mismo estoy con Ubuntu 10.10 y Python 2.6.6.

Su resultado es este.
CitarDime el número de filas: 2
Dime el número de columnas: 2
Lectura de la matriz A
Dame el componente (0, 0): 1
Dame el componente (0, 1): 2
Dame el componente (1, 0): 3
Dame el componente (1, 1): 4
Lectura de la matriz B
Dame el componente (0, 0): 5
Dame el componente (0, 1): 6
Dame el componente (1, 0): 7
Dame el componente (1, 1): 8

¿Qué es lo que ocurre exactamente? ¿Qué es la matriz que suma?
#388
Scripting / [Python] - Matrices.
14 Noviembre 2010, 06:24 AM
He llegado un poco el tema de las matrices a ver como es.

Ver ejercicios.

Página 196 de este docuemnto PDF. http://marmota.act.uji.es/mtp/pdf/python.pdf

La verdad que no entiendo ni papa.
#389
Scripting / [Python] - Eliminar listas y par
14 Noviembre 2010, 06:13 AM
Buenas:

Ver ejercicio.


¿Cómo hago para borrar números pares de una lista así sin más?

lista = [1, 2, 1, 5, 0, 3]

Intenté hacer una locura.

Código (python) [Seleccionar]
lista = [1, 2, 1, 5, 0, 3]

i = 0
while i < len(lista):
    if lista[i] < 2:
        del lista[i]
    else:
        i += 2
       
print lista
#390
Scripting / [Python] Comparar listas de palabras
14 Noviembre 2010, 00:45 AM
Buenas:

Aquí si que Python me tumba.

Ver ejercicio.

Parece que aquí voy a tardar un tiempito con este ejercicio ya que parece o al menos me da la impresión que es código largo.
#391
Scripting / [Python] Listas y números negativos.
14 Noviembre 2010, 00:40 AM
Hola:

Ver ejercicio...

Por lo que entiendo:

- Leer 10 números enteros positivos.
-Si detecta algún número negativo lo indicamos con un mensaje print y permitir que vuelva a empezar de nuevo.
- En caso de que se hayan introducidos los 10 números positivos el programa se acaba.

Lo he intentado hacer de esta menera y como que no.

Código (python) [Seleccionar]
lista = [] # Lista vacía.
numero = int(raw_input('Dame un número: '))

while numero >= 0:
    for i in range(10):
        numero = int(raw_input('Dame un número: '))
        lista.append(numero)
        if i == 10:
            print 'Llegó a 10 números.'
#392
Bases de Datos / Manejar el SQL Server
13 Noviembre 2010, 19:01 PM
Hola:

Hace un tiempo hice un manual sobre C# y MySQL para que se puedan comunicar que puedes ver en la página 437 de este manual.

http://electronica-pic.blogspot.com/2009/06/servidor-casero-apache-php-mysql.html

La verdad que Oracle está dando la tabarra y no parece que la gente ocnfíen en ellos.


Oracle encarece MySQL

http://www.muycomputer.com/Actualidad/Noticias/Oracle-encarece-MySQL/_wE9ERk2XxDAAeTS5_dizVplzCsZwGqrKwClow9BxcqmUHWUSkdbzHrhC6WAbilEhTgfgyWSYHLs

Guerra Apache contra Oracle

http://www.muycomputer.com/Actualidad/Noticias/Guerra-de-Apache-contra-Oracle/_wE9ERk2XxDDkowdkPWmIlFf-mEgYjtdxcJTAmRF-OXuFSgOByXeR3YS46MJuHfPMy7r9J19Z6tQ

Dejando el tema de Oracle y sus secuaces me centro que quiero manerar el Download the Database and Management Tools.

Me descargué el R2 del SQL 2008 Express 64 bits con el Managenment Tools que puedes descargar aquí.

http://www.microsoft.com/express/Downloads/

Lo he instalado bajo Windows 7 64 Bits.

Al ejecutar Management Tools me pide que introduzca estos datos como puedes ver en la imágen.

Da igual que opción que escoja, no accedo a ninguna base de datos entre por autentificación de SQL Server ni Windows logro entrar, ni introduciendo la contraseña de cuante de usuario de la cuente de inicio de sección de Windows. Nota, tengo zonealarm instalado, ni desintalado funciona.



Estaba buscando tutoriales al menos de como entrar aquí y crear una base de datos llamada info_db , una tabla llamada libros_tb y dentro de la tabla construir la estructura como. ID, TITULO, AUTOR, EDITORIAL, COMENTARIO, ETC...

Capaz de guardar información y luego recuperarlo con el Management Tools Express. Más adelante leeré los datos bajo un ainterfaz creada con C# 2010 Express.

Un cordial saludo.



Edito:


Aquí he encontrado tutoriales pero no me sirve porque no logro de autentificación.

http://webtelematica.wordpress.com/2010/02/16/tutorial-desde-0-crear-base-de-datos-en-sql-server-20052008-usando-sql-server-management-studio-express/

http://www.ivanandrei.com/2010/07/instalar-sql-server-management-studio-2008-express-en-windows-7/

A pesar de estos tutoriales no logro entrar con login y password ni nada con SQL Server 2008 R2 Express.

Ni mirando por aquí.
http://technet.microsoft.com/es-es/library/ms130214.aspx

¡¡¡Ayudaaaa!!!
#393
Scripting / [Python] Listas y números primos.
12 Noviembre 2010, 16:35 PM
Hola:

Ver ejercicio


Aquí se ve muchos juegos de palabras. Me da la impresión que debo mirar algunos ejercicios de muchos temas atrñas sobre números primos.

;)
#394
Scripting / [Python] sustituir listas
12 Noviembre 2010, 13:03 PM
En el ejercicio 226) del libro en pdf página 175 que se puede ver en mi firma abajo...

Por lo que dice debo hacer:
Citar- Crea aualquier lista con algunos números  negativo.
- Sustituir cualquier elemento negativo por 0.

Primer paso:
ta = [0, 1, 2, 3, -4, 5, -6, 8, -9]

Iba a usar for i in lista, pero la idea es sustituirla. Lo iba hacer uno a uno manualmente a modificar los negativos por los 0 y no creo que sea lo recomendado.

Ejemplo:
ta = [0, 1, 2, 3, -4, 5, -6, 8, -9]
ta = [-4] = 0
>>> a
resultado:
lista = [0, 1, 2, 3, 0, 5, -6, 8, -9]
Y así con los demás números negativos. Esto de hacerlo manual no creo que sea lo  correcto, debe haber alguna manera de como hacerlo de una pasada. Por ejemplo:

Si detecta en una lista un número negativo, modificar esa lista sustituyento los números negativos por 0.

Eso es lo que no se si se puede hacer. Por ahora manualmente uno a uno si me sale, aunque así es tedioso.
#395
Scripting / [Python] elevar al cuadrado un rango.
12 Noviembre 2010, 04:46 AM
He intentado hacer el ejercicio 225) de la página 175 de este libro en PDF sobre Python http://marmota.act.uji.es/mtp/pdf/python.pdf

Código (python) [Seleccionar]
n = int(raw_input('Introduce un número entero: '))

a = range(1, n)
a[1] = n ** 2
print a


¿Cómo hago lo de elevar al cuadrado cada rango?

:)
#396
 :D

Ver ejercicio...

¿De qué se trata exactamente de lo que hay que hacer?

::)
#397
Scripting / [Subcadenas] con Python
9 Noviembre 2010, 02:45 AM
Buenas  gente:

Ver ejercicio...

Me he quedado días liados y ahora he vuelto con Python.

No tengo ni papa como resolverlo.

- Me imagino que será que te pide que introduzca una cadella y se almacena en la variable llamada c.
- Un índice i que supuestamente es un entero (int) que también te pide.
Esta parte no lo entiendo.
Citary
#   un número n, muestre la subcadena de c formada por los n
#   caracteres que empiezan en la posición de índice i.

Por ahora sólo he podido poner esto.
Código (python) [Seleccionar]
c = raw_input('Ejemplo')
i = int(raw_input('Introduce un índice: '))
n = int(raw_input('Introduce un entero: '))

for i in c:


#398
Foro Libre / Donaciones Paypal, sugerencia.
4 Noviembre 2010, 12:43 PM
Hola gente:

Cada vez veo mejoras del foro con creces.

Una Web en el cual no recuerdo ahora y si lo vuelvo a localizar no le haré publicidad, me han cogido el PDF de uno de mis tutoriales exactamente este. Esa Web sin cortarse un pelo, publica Proteus y otras cosas con crack incluido. Lo más gracioso que forzosamente tiene mi nombre qu epor una parte lo respeta pero pone Paypal. Hay más cosas de otros autores y desde luego no me puso de buen humor. A partir de ahora pondré que mis tutoriales están prohibida su venta aunque sea por Paypal.

Por un lador estoy tranquilo ya que tiene mi nombre y la web de origen, cosa que no ha modificado.

En otra Wen interesante como de nuestro amigo pone Paypal. Esta Web está cada vez mejor hecha y sus proyecto o manuales incluidos.

http://www.micros-designs.com.ar/

Quiero saber sus experiencias con Paypal. En mi caso vivo en España y no se si será igual al resto del mundo.

Me han contado muchas personas que no vale la pena lo del Paypal, porque me tratan que sólo trabajo por dinero y no por Hobby y esto puede producir rechazo social y no mirarte con buenos ojos. Otros mitivos son, si alguien me ingresa mediante Paypal 1.000.000 $ de norte de América, los bancos me lo bloquean porque puede pensar que ha habido una estafa o fraude de algo, cossas así. Que Paypal quiere un porcentaje de lo que te dan (esto no lo se), que la hacienda se mete por medio y quiere parte de tu tarta.

Los que se han metido en este mundo de Paypal, quiero que me den sus sugerencias y como funciona realmente.

No se si esto de Paypal libre, es decir, que si quiere la persona te puede dar 1 € para el mantenimiento de una Web de hobby. Tampoco se si hay algo de Paypal que sea para clientes en sentido de, me conprar un producto y lo pagas por Paypal y se queda ahí.

Cada vez más veo a gente que antes siempre daba todo libre y ahora están con el tema de Paypal. Como dice el dicho, hay que probar cosas nuevas, luego sacas tus propias conclusiones.

Un cordial saludo.
#399
Scripting / [Python] Leer documentos.
3 Noviembre 2010, 20:11 PM
;)

Este ejercicio si que lo veo todo negro.

Ver ejercicio.

Parace que hay qu ehacer algo de esto.


  • - Introduces el nombre de un fichero. (Por ejemplo, documento.doc).
    - Introducir el nombre de otro fichero. (Por ejemplo, tema.1.tex). (Este tiene dos puntos, ya me lió).
    - Si el fichero no tiene punto, la pantalla avisa que está vacío.
    - Cuando detecte un archivo con un punto, mostrará en pantalla sólo la extensión del archiv. (Por ejemplo, doc, tex).
;)
#400
Scripting / [Python] - Ordenal palabras.
3 Noviembre 2010, 02:54 AM
:)

Ver imagen.

He intentado ordenas las palabras alfabéticamente, al darme cuenta, sólo lo hace por letra.

Código (python) [Seleccionar]
cadena = raw_input('Introduce palabra alfabética o no: ')

dato = ''
for caracter in cadena:
    if (cadena >= 'A' and cadena <= 'Z') or (cadena >= 'a' and cadena <= 'z'):
        print 'Es una palabra alfabética.'
    else:
        print 'No es una palabra alfabética.'


;)
#401
Scripting / [Python] Pasar de decimal a Octal.
2 Noviembre 2010, 18:15 PM
Debo lograr con for in pasar un número que me pide en raw_input de entrada numeros decimales y a su salida números octales.

Por ahora hice esto pero no me sale, es para dar ideas.

Código (python) [Seleccionar]
decimal = int(raw_input('Introduce un número decimal: '))

valor = 0
for bit in decimal:
    valor += valor + int(bit)

print 'Su valor Octal es', valor


# Se que el valor Octal se representa así \000

Hay que hacerlo con for in y cadenas, no como intenté hacer algo sin sentido.

Código (python) [Seleccionar]
decimal = int(raw_input('Introduce un número decimal: '))

print decimal \000
#402
Scripting / [Python] - 0 y 1 enrtre otras cosas.
30 Octubre 2010, 14:09 PM
Buenas:

Ver ejercicio 179)

Lo he hecho así y no se si es correcto o he entendido bien lo qu em e ha dicho.
Código (python) [Seleccionar]
cadena = raw_input('Introduce una cadena de números binarios: ')

while cadena != '':
    for i in cadena:
        if ord(i) >= 48 and ord(i) <= 49:
            print 'Binario.'
        else:
            print 'Se ha detectado número no binario.'
 
    cadena = raw_input('Introduce una cadena de números binarios:')


;)
#403
Scripting / [Python] Las constante K.
28 Octubre 2010, 15:18 PM
Hola:

Viendo este ejercicio.
Ver ejercicio

No se si he interpretado bien lo que me pide y siguiendo los ejemplos del PDF he modificado este código.

Código (python) [Seleccionar]
cadena = raw_input('Escribe una frase: ')
while cadena != '':
    cambios = 0
    for i in range(1, len(cadena)):
        if cadena[i] == ' ' and cadena[i-1] != ' ':
            cambios = cambios + 1

    if cadena[-1] == ' ':
        cambios = cambios - 1

    palabras = cambios + 1
    print 'Palabras:', palabras, 'palabras y', i, 'carácteres.'

    cadena = raw_input('Escribe una frase: ')


Su resultado es este.
CitarEscribe una frase: Vale más una imagen, que mil palabras.
Palabras: 7 palabras y 38 carácteres.
Escribe una frase:

¿Qué opinas?

;)
#404
Scripting / [Python] carácteres y espacios
26 Octubre 2010, 17:01 PM
Hola:

Ver ejercicio.

Código (python) [Seleccionar]
a = "Ten a tus amigos cerca, pero mas a tus enemigos."

for i in range(len(a)):
   print a[i]


He intentado y sigo con ello lo de detectar los espacios. Estaba curioseando si esto vale. ord(" ") o el chr(32). 32 decimal es Espacio según la tabla ASCII.

http://es.wikipedia.org/wiki/ASCII

He intentado así pero no, ya que sólo cuenta números y quiero espacio que hay en la cadena.
Código (python) [Seleccionar]
a = "Ten a tus amigos cerca, pero mas a tus enemigos."
contador = 0
for i in range(len(a)):
   print a[i]
   if chr(32) == i:
       contador+=1
   print contador


No me sale nada. ¿Alguna sugerencia?
Código (python) [Seleccionar]
a = "Ten a tus amigos cerca, pero mas a tus enemigos."
contador = 0
for i in range(len(a)):
   print a[i]
if chr(32) == range(len(a)):
   contador+=1
print contador


Lo que entiendo que tengo que hacer es, acumular en una variable += la cantidad de espacios que contenga esa cadena de carácteres.

Saludo.
#405
Hardware / PC de sobremesa.
24 Octubre 2010, 11:56 AM
Buenas:

Tengo un PC de sobremesa con la placa GigaByte P35 Express chipset, con el Q6600 y la RAM 4 x 1 GB a 800 MHz. Mirando la BIOS me dice que su felicidad de la RAM es 667 MHz. He intentado cambiar a 800 MHz pero no encuentro esa opción. Los 4 módulo de RAM son de la misma marca y todos a 800 MHz. ¿Por qué está en 667? ¿Se puede cambiar a 800 MHz?

Saludo.