elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Temas
Páginas: [1] 2 3 4
1  Informática / Electrónica / [DUDA]¿Por qué un amplificador de guitarra suena cuando le pones el dedo? en: 12 Febrero 2011, 17:11 pm
Esa es la pregunta que quería haceros.

¿Por qué cada vez que se toca la punta del cable de entrada un amplificador con los dedos emite ese sonido tan sucio?

He estado intentando investigarlo por mi cuenta, pero no he podido llegar a ninguna conclusión satisfactoria.

Gracias.
2  Foros Generales / Foro Libre / Temas "comerciales" de ciencia. en: 23 Enero 2011, 17:14 pm
¿Cuáles creen que son los temas más comerciales de la ciencia? (con comercial me refiero a que llamen la atención en los medios de comunicación por ejemplo)

Voy a decir dos : biotecnología e inteligencia artificial.
3  Programación / Ingeniería Inversa / Pequeña introducción a la ingeniería inversa en linux en: 2 Enero 2011, 17:55 pm
Hola, comparto este documento que he escrito con ustedes :

Capítulo 1:
https://docs.google.com/document/d/174fkSJdIA_X9idjL1MkWOtpO92McHpLSI0mruh41oBM/edit?hl=es

Capítulo 2:
http://alfffa.wordpress.com/2011/01/03/introduccion-a-la-ingenieria-inversa-en-linux-ii/

Espero que lo disfruten. Si tienen alguna duda pueden preguntar aquí.
4  Programación / Java / [Android][duda] Llamar a tu propia activity en: 4 Diciembre 2010, 17:06 pm
Bueno, estoy programando una app para android y me están saliendo algunos problemas.

Tengo la actividad principal que se llama Alfffa_Chart que es así:
Código
  1. package alfffa.Chart;
  2.  
  3.  
  4.  
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.Menu;
  10. import android.view.MenuItem;
  11.  
  12.  
  13.  
  14. public class Alfffa_Chart extends Activity {
  15.  
  16. /** Called when the activity is first created. */
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21.  
  22. }
  23. public boolean onCreateOptionsMenu(Menu mimenu)
  24. {
  25. super.onCreateOptionsMenu(mimenu);
  26. mimenu.add(0,0, 0, "Hola, llama a mi otra activity");
  27. return true;
  28. }
  29. public boolean onMenuItemSelected(int featuredId, MenuItem item)
  30. {
  31. try
  32. {
  33. super.onMenuItemSelected(featuredId, item);
  34.  
  35. switch(item.getItemId()){
  36. case 0:
  37. menu();
  38. break;
  39. }
  40. return true;
  41. }
  42. catch (Exception e)
  43. {
  44. Log.d("ASADFASD",e.toString());
  45. return false;
  46. }
  47. }
  48.  
  49. private void menu()
  50. {
  51. try
  52. {
  53.        Intent intento = new Intent();
  54.        intento.setClassName(this, "alfffa.Chart.Menu1");
  55. startActivity(intento);
  56. }
  57. catch (Exception e)
  58. {
  59. Log.d("ASDFASDFAErrore",e.toString());
  60. }
  61. }
  62.  

Y luego tengo la clase Menu1 que es así:
Código
  1. package alfffa.Chart;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class Menu1 extends Activity {
  7.  
  8. /** Called when the activity is first created. */
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.menu1);
  13.  
  14. }
  15. }
  16.  
Y aquí la porción del android_manifest en la que hay que poner las actividades :
Código
  1. <activity android:name=".Alfffa_Chart"
  2.                  android:label="@string/app_name">
  3.            <intent-filter>
  4.                <action android:name="android.intent.action.MAIN" />
  5.                <category android:name="android.intent.category.LAUNCHER" />
  6.            </intent-filter>
  7.        </activity>
  8.       <activity android:name="alfffa.Chart.Menu1"
  9.                  android:label="Menu1" >
  10.            <intent-filter>
  11.                <action android:name="android.intent.action.MENU1" />
  12.                <category android:name="android.intent.category.DEFAULT"/>
  13.            </intent-filter>
  14.        </activity>
  15.  

Es decir, la actividad principal tiene un menú con un elemento y ese elemento se encarga de cargar una actividad llamada Menu1. El error está en que cuando hago click sobre ese elemento me da error y la aplicación tiene que cerrarse. Una cosa extraña es que no me caza ninguna excepción.

¿Alguien sabe qué es lo que estoy haciendo mal ?

Aclaro que el layout menu1 existe y está bien escrito.
5  Informática / Electrónica / Nuevo pequeño proyecto con arduino y dos servos en: 14 Julio 2010, 18:54 pm
Bueno, he hecho otro proyecto que puede ser minimamente interesante y lo voy a colgar.

Ver foto aqui (el proxy ese de las imágenes me ha jodido el ponerla directamente)

El proyecto consiste en que si tapas el ldr (no tengo más sensores) los servos se mueven en una dirección y si no lo tapas gira en la otra dirección.
Aquí una demostración :



Y el código :
Código
  1. #include <Servo.h>
  2.  
  3. Servo myservo;  
  4. Servo myservoc;                
  5.  
  6. int pos = 0;  
  7. int umbral = 200;// variable to store the servo position
  8. int ldrPin = 5;
  9. void setup()
  10. {
  11.  Serial.begin(9600);
  12.  myservo.attach(9);
  13.  myservoc.attach(10);
  14. }
  15.  
  16.  
  17. void loop()
  18. {
  19.  int valor = analogRead(ldrPin);
  20. if (valor < umbral)
  21. {
  22.  
  23. myservo.write(40);
  24. myservoc.write(540);
  25. delay(100);
  26. }
  27. else
  28. {
  29.  
  30.  myservo.write(540);
  31.  myservoc.write(40);
  32.  delay(100);
  33.  
  34. }
  35. Serial.println(valor);
  36. }
  37.  

A los servos que compré les tuve que hacer una modificación para que girara mas de 360º así que no vale con cualquier servo.
6  Informática / Electrónica / Mi pequeño proyecto con arduino y dos ldr. en: 4 Julio 2010, 15:03 pm
Bueno, os voy a mostrar el pequeño proyecto que hice en un momento de aburrimiento.



Eso de arriba es el circuito de arduino, consta de dos ldr que en la imagen aparecen a la izquierda y a la derecha , y un botón. Están conectados a entradas de arduino y lo que hace el programa de arduino es mandar información sobre el estado de las ldr (solo manda un 0 o un 1 dependiendo de que la entrada analógica supere un límite o no) y el botón (si está pulsado o no).

Ya en el ordenador he hecho dos programas en python que reciben información del puerto de arduino.


Por ahora os enseño el segundo que hice con ayuda de pygame. Consiste en que crea una ventana con un cuadrado en su interior y dependiendo de si tapas o no los ldr (si le dejas de dar luz) se moverá hacia un lado u otro, el botón sirve para cambiar el color del cuadrado.

Os muestro un vídeo :


Se pueden usar las dos manos a la vez, pero como estaba grabando tenía una mano ocupada.

Os dejo los códigos :

El de arduino :
Código
  1. int ldrD = 0;
  2. int ldrI = 5;
  3. int boton = 3;
  4. int umbral = 150;
  5. void setup()
  6. {
  7.  Serial.begin(9600);
  8. }
  9. void loop()
  10. {
  11.  int luzD = analogRead(ldrD);
  12.  int luzI = analogRead(ldrI);
  13.  if (digitalRead(boton) == HIGH)
  14.  {
  15.    Serial.print("1");
  16.  }
  17.  else
  18.  {
  19.    Serial.print("0");
  20.  }
  21.  if (luzD < umbral)
  22.  {
  23.    if (luzI< umbral)
  24.    {
  25.      Serial.println("11");
  26.    }
  27.    else
  28.    {
  29.      Serial.println("01");
  30.    }
  31.  }
  32.  else
  33.  {
  34.    if (luzI < umbral)
  35.    {
  36.      Serial.println("10");
  37.    }
  38.    else {
  39.      Serial.println("00");
  40.    }
  41.  }
  42.  delay(100);
  43. }
  44.  

Y el de python :
Código
  1. import pygame,serial,random
  2. ser = serial.Serial('/dev/ttyUSB4',9600) # Modificar por vuestro puerto
  3. pygame.init()
  4.  
  5. x,y = 500,500
  6. avance = 5
  7. class cosa(pygame.sprite.Sprite):
  8.  def __init__(self,screen):
  9.    self.color = 255
  10.    self.me = pygame.Surface([50,50])
  11.    self.me.fill((self.color,self.color,self.color))
  12.    self.positionx = 0
  13.    self.positiony = 0
  14.    self.screen = screen
  15.  def update(self):
  16.    leido = ser.readline()
  17.    if leido[1] == '1' :
  18.      self.positiony+=avance
  19.    else :
  20.      self.positiony-=avance
  21.    if leido[2] == '1':
  22.      self.positionx+=avance
  23.    else :
  24.      self.positionx-=avance
  25.    if leido[0] == '1': self.colorear()
  26.    self.comprobarcoordenadas()
  27.    self.screen.blit(pygame.Surface([x,y]),(0,0))
  28.    self.screen.blit(self.me,(self.positionx,self.positiony))
  29.    pygame.display.flip()
  30.  def comprobarcoordenadas(self):
  31.    if self.positionx > x : self.positionx-=avance
  32.    if self.positionx < 0 : self.positionx+=avance
  33.    if self.positiony > y : self.positiony-=avance
  34.    if self.positiony < 0 : self.positiony+=avance
  35.  def colorear(self):
  36.    self.color = (self.color+1)%255
  37.    self.me.fill(((self.color+random.randint(0,255))%255,(self.color+random.randint(0,255))%255,self.color))  
  38. screen = pygame.display.set_mode([x, y])
  39. caja = cosa(screen)
  40. while 1:
  41.  caja.update()
  42.  

Quien quiera usar el de python tendrá que instalar pygame y pyserial.

Aquí os dejo otro que sirve para mover el ratón con el mismo circuito :

Código
  1. #!/usr/bin/python
  2.  
  3. import serial
  4. import Xlib.display
  5. from Xlib.ext import xtest  
  6. from Xlib import X
  7.  
  8. class MouseControl:
  9.  def __init__(self):
  10.    self.display = Xlib.display.Display()
  11.    self.screen = self.display.screen()
  12.    self.root = self.screen.root
  13.    self.mousex = 500
  14.    self.mousey = 500
  15.  def arriba(self):
  16.    self.mousey += 10
  17.    if self.mousey > 780 : self.mousey-=10
  18.    self.root.warp_pointer(self.mousex,self.mousey)
  19.    self.display.sync()
  20.  def abajo(self):
  21.    self.mousey -= 10
  22.    if self.mousey<0 : self.mousey +=10
  23.    self.root.warp_pointer(self.mousex,self.mousey)
  24.    self.display.sync()
  25.  def izquierda(self):
  26.    self.mousex -= 10
  27.    if self.mousex < 0 : self.mousex+=10
  28.    self.root.warp_pointer(self.mousex,self.mousey)
  29.    self.display.sync()
  30.  def derecha(self):
  31.    self.mousex += 10
  32.    if self.mousex > 1020 : self.mousex-=10
  33.    self.root.warp_pointer(self.mousex,self.mousey)
  34.    self.display.sync()
  35.  def click(self):
  36.    xtest.fake_input(self.display, X.ButtonPress, 1)  
  37.    xtest.fake_input(self.display, X.ButtonRelease, 1)
  38.    self.display.sync()
  39. ser = serial.Serial('/dev/ttyUSB4',9600) #Modificar por vuestro puerto
  40. mouse = MouseControl()
  41. while 1 :
  42.  leido = ser.readline()
  43.  print mouse.mousex ," ", mouse.mousey
  44.  if leido[0] == '1':
  45.    mouse.click()
  46.  if leido[1] == '1':
  47.    mouse.arriba()
  48.  else :
  49.    mouse.abajo()
  50.  if leido[2] == '1':
  51.    mouse.derecha()
  52.  else : mouse.izquierda()
  53.  

El que quiera usar este tendrá que instalar además Xlib para python.

Solo funciona en linux.
 
7  Informática / Electrónica / Duda sobre transistores NPN para aumentar intensidad. en: 30 Junio 2010, 00:05 am
Antes de nada, tengo que decir que siento postear la duda y no  haber encontrado la información que buscaba. Las cosas que he encontrado no las he entendido y de verdad, siento postearlo.

Miren, tengo un motor de 3.5 V conectado a una salida de PWM de arduino y aunque lo ponga a 5 voltios no funciona, por lo que la culpa es de la intensidad.

Tengo un transistor NPN y no estoy muy seguro de como conectarlo, tengo estas ideas :
 
  • Quiero hacer que la salida sea el colector.
  • Supongo que los pulsos de arduino van a la base.
  • No tengo ni idea de que hacer con el emisor, pero como la tensión de colector a emisor tiene que ser positiva supongo que debería conectar el emisor a masa no? (repito que no tengo ni idea, posiblemente esté diciendo una tontería)
  • Supongo que el V de la base tiene que ser mayor que el del colector

Ya no tengo más ideas, a ver si alguien me puede orientar y muchas gracias.
8  Informática / Electrónica / Problema con motores CC. en: 18 Junio 2010, 17:20 pm
Hola,
a la espera de una placa arduino y unos cuantos servos para un proyecto me puse a jugar con unos motores de CC.
Al empezar con ellos me dí cuenta de que tengo un problema que me parece algo extraño, os comento.

Hice un circuito muy simple para probar los motores que contaba con :
  • Fuente de 9 V
  • Resistencia de 56 ohms
  • Motor (3.5 V)

Probé con esa resistencia por que con una resistencia de doble valor no funciona.
 Vale, hasta ahí todo correcto, pero cuando lo conectaba todo, a veces no funcionaba, y para hacerlo funcionar tenía que conectar la fuente directamente al motor sin la resistencia durante un momento y luego conectarlo a la resistencia.

¿Alguien sabe por qué no funciona directamente?
Gracias.
9  Seguridad Informática / Desafíos - Wargames / [Problema de geometría] Pentagono dentro de pentagono. en: 16 Abril 2010, 15:32 pm
A ver si sois capaces de resolver este reto:
Tenéis que hacer una función que tome como parametro la longitud de un lado de un pentagono y devuelva el area del pentagono que se formaría en su interior al trazar las diagonales :

Yo lo intentaré también, a ver como os va.
10  Programación / Scripting / [python][pygame] Programa que realiza la grafica de funciones. en: 21 Febrero 2010, 14:04 pm
Pues pongo este programa para los que les interese esto de pygame. Cualquier duda pregunten.
Para probarlo necesitan tener pygame instalado.
Os pongo una captura de pantalla de como va :

Código
  1. #!/usr/bin/python
  2. import pygame,random
  3. xp,yp = 400,400
  4. pantalla = pygame.display.set_mode((xp,yp))
  5. pantalla.fill((255,255,255))
  6. for x in range(0,xp,20):
  7.  pygame.draw.line(pantalla, (0,0,0) , (x, 1), (x, 800))
  8. for y in range(0,yp,20):
  9.  pygame.draw.line(pantalla, (0,0,0) , (1, y), (800, y))
  10. pygame.draw.line(pantalla,(0,0,0), (yp/2,0),(yp/2,xp),4)
  11. pygame.draw.line(pantalla,(0,0,0), (0,xp/2),(yp,xp/2),4)
  12. pygame.draw.circle(pantalla, (0,0,0), (xp/2,yp/2),5)
  13. pygame.display.flip()
  14. #### La pantalla esta cargada totalmente a partir de aqui
  15. while 1:
  16. colora,colorb,colorc = random.randint(0,250),random.randint(0,250),random.randint(0,250)
  17. funcion = raw_input("f(x)= ")
  18. listacoordenadas = []
  19. for x in range(-6,7):
  20.  listacoordenadas.append((x*20+xp/2,yp/2-eval(funcion)*20))
  21. for indice in range(len(listacoordenadas)-1):
  22.  pygame.draw.line(pantalla,(colora,colorb,colorc), listacoordenadas[indice],listacoordenadas[indice+1],4)
  23. pygame.display.flip()
  24. raw_input()
  25.  
 
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines