Dec 24, 2010

Photosynth

Photosynth. Una virgueria 3D.



o bé Segueix l'enllaç:

Dec 15, 2010

Problema amb WMP12. Baixa Qualitat de imatge en fer 'Play To' Sony Bravia

Un dels avantatges de Windows Media Player 12, es la posibilitat de ordenar a un dispositiu DLNA (en el meu cas un Televisor Bravia) que reprodueixi determinat medi.

En la configuració per defecte del WMP12 i amb el meu televisor, quan feia 'Play To' d'un fitxer de video en format .wmv o be .mp4 la qualitat era molt baixa. Per el cotrari, en reproduir aquest mateix fitxer des del menú del televisor, la qualitat era correcta.

El problema és que WMP12 i el televisor no es posen d'acord en quins formats pot reproduir el televisor, i per tant WMP12 fa un transcoding dels fitxers (i sempre a pitxor qualitat).

En espera que Sony actualitzi el firmware (si es que ho fa) vaig trobar aquest article:


In order to workaround the problem, you have to modify some registry key (I would make a back-up or something because I do not know if this will have any side effects). However, this will -remove completely the capability of your WIn7 machine to transcode to MP3. Here is what you need to do:

- Type regedit in an elevated command prompt or in the search box in your Start menu. By doing that you get to the Windows registry

- navigate in that tree to the following path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Media Player NSS\3.0\Transcode

- remove the MP3 entry.

- reboot your machine and give it another try to your scenario.

These steps will remove the MP3 transcoding capability from Win7 DMS. Unless you put the keys back, your machine will never transcode to MP3 again. If your device now prefers WMA (cause we transcode WAV to WMA also), do the same thing for the WMA key. I hope this will help you. Let me know if it does not. It worked on my side...


En el meu cas, he modificat les claus que fan referència als formats de video. I JA FUNCIONA!!

Malgrat tot encara tinc um problema amb el pre-buffer d'audio ...  El tema DLNA encara està una mica verd.

Dec 1, 2010

Problemes amb la Time Capsule i Windows 7

Revisat el 17-12-2010. amb la verssió 7.5.2 ja han corregit el roblema que hi havia amb la 7.4.2


En conectar una Time Capsule a Windows 7, era imposible utilitzar-la des de l'administrador de fitxers.
El problema és la verssió 7.4.2 del firmware. Per tant he instal·lat la verssió 7.3.2 que si que funciona.
Per fer-ho:
  Carrega la utilitat AirPort (preferiblement des de OSX)
  Selecciona la TimeCapsule i prem 'Configuració Manual'
  Al menú 'Estació Base' selecciona 'Carregar Firmware'
  Finalment selecciona la verssió 7.3.2
i Problema resolt.

Nov 16, 2010

IR Shutter for Canon EOS 400D with Arduino

Per fer un disparador infraroig per la canon EOS 400D muntem aquest circuit amb arduino:


i carreguem el seguent programa:

/*

Arduino sketch for simulating a Canon RC-1 IR remote control
http://controlyourcamera.blogspot.com/
Huge thanks go to http://www.doc-diy.net/photo/rc-1_hacked/index.php for figuring out the IR code.
*/


const int irLED = 10;
const int statusLED = 13;
const int pushBUTTON = 3;

void setup() {
  pinMode(irLED, OUTPUT);
  pinMode(statusLED, OUTPUT);
  pinMode(pushBUTTON, INPUT);
}

void loop() {
  if (digitalRead(pushBUTTON) == HIGH) {
    digitalWrite(statusLED, HIGH);
    ShuttCanon();
    delay(10);
    digitalWrite(statusLED, LOW);
  }
}

void ShuttCanon() {                     // When the camera is in BULB mode,
  for(int i=0; i<16; i++) {              //        the first call to ShutCanon() opens the shutter
    digitalWrite(irLED, HIGH);      //       and a scond one closes the shutter
    delayMicroseconds(11);          // delay de 15 us (11 més el temps d'execució)
    digitalWrite(irLED, LOW);
    delayMicroseconds(11);
  }

/*






*/
  delayMicroseconds(7330);      // 7330 fa la foto inmediatament. 5360 fa la foto amb un delay de 2 s
  for(int i=0; i<16; i++) {           //           i en alguns models começa el video recording
    digitalWrite(irLED, HIGH);
    delayMicroseconds(11);
    digitalWrite(irLED, LOW);
    delayMicroseconds(11);
  }
}


Quan premem el pulsador es dispara la càmera. És important notar que si la càmera es en modus 'BULB', la primera crida a la funció ShuttCanon obre l'obturador i la segona el tanca (cosa la qual pot esser especialment útil).

Home Made Shutter for Canon EOS 400D

Nov 9, 2010

Capacitive sensing w/ Arduino

Aquest és el meu sensor capacitiu pensat per nesurar la humitta del terra (i per aquest motiu és estanc):




Nov 2, 2010

Focs Artificials


Fes Click amb el mouse

Oct 25, 2010

Oct 21, 2010

HDR, High Dynamic Range

En una fotografia amb gran contrasto de llum, la imatge final (si no la tractem) ha d'esser un compromís entre les zones clares i les fosques.
Afortunadament moltes càmeres actuals ens permeten fer fotografies amb contrast intel·ligent, però si volem un control més acurat del resultat podem usar la següent tècnica:

Programem la càmera de tal manera que automàticament ens faci 3 fotografies, la primera seria la 'correcta' la següent
 -2EV i la tercera +2EV (mireu-vos el manual de la vostra càmera, si és porfesional o prouser, segur que  trobeu com fer-ho i si no ho podeu fer a mà).

Així doncs, tenim 3 fotografies una 'correcta' un altre 'clara' i un altre 'fosca'. La fotografia ideal seria una composició de les 3. De la 'correcta' agafem les mitges llums, de la 'clara' les penombres i de la 'fosca' les zones d'alta lluminositat.

Finalment, per obtenir la foto ideal, usem internet on, gràcies a la feina de genis altruistes, trobem eines com el següent programa: EnfuseGUI.

Properament publicaré exemples. De moment podeu veure aquest de HDR a Wikipedia


A la Canon EOS 400D/Rebel XT podem canviar aquest ajust al menú AEB (Exp. Sec. en castellà) i si a més posem la càmera en modus ràfega (Continuous shooting), quan premem el disparador tindrem una ràfega de 3 (i només 3) fotografies cada una exposada tal com hem definit al menú AEB.

Informació Exif de les fotografies

Usant el programa ExifTool podem consultar i modifica la informació Exif de les fotografies.
Per usar-lo, només cal reneombrar el fitxer '.exe' amb els paràmetres que volguem. Per exemple:
  si renombrem el fitxer ExifTool.exe a:

      ExifTool(-k).exe                       Presenta les instruccions de funcionament
      ExifTool(-a -u -g1 -k).exe       Presenta totes les etiquetes Exif del fitxer
      ExifTool(-all= -k).exe              Esborrem totes les etiquetes Exif del fitxer

Un cop renombrat el ExifTool, arrosseguem amb el mouse les fotografies sobre l'executable (en Windows, en altres sistemes operatius ho desconec), i ens presentarà una finestra DOS amb el resultat (amb altres paràmetres podem fer que escrigui el resultat sobre un fitxer de text).

Una aplicació especialment útil (sobre tot si en l'arxiu hi tenim fotografies de diferents càmeres), és renombrar les fotografies amb la data de creació:

     exiftool "-FileName<createdate" %y%m%d_%h%m%s%%-c.%%e="" -d="" dir
         Rename all images in "dir" according to the CreateDate date and
         time, adding a copy number with leading '-' if the file already
         exists ("%-c"), and preserving the original file extension (%e).
         Note the extra '%' necessary to escape the filename codes (%c and
         %e) in the date format string.

Cal notar que el format aaaa-mm-dd hh:mm:ss és a més ideal per endreçar alfabèticament els fitxers
(Si el format fos dd-mm-aaaa, les primeres fotografies serien les del dia 1 de qualsevol mes i any).

Oct 20, 2010

Fotografia del Guggenheim de Bilbo

A vegades hi ha fotografies vulgars que et donen sorpreses. La original és del 2008, i 2 any i escaig després, revisant l'arxiu fotogràfic de Picassa va sortir això (i ja posats en vaig revisar altres).



Prova de Adobe Lightroom 3.2

Detall del fons original del blog al 200%:



Després de tractar-lo amb una demo de Adobe Lightroom 3.2
Ajustant l'enfocament i la reducció de soroll


Realment és una passada

Modificació de la plantilla del blog al Blogger de Google

Aquesta es la meva modificació de la plantilla del blog:

Primer cal fer una còpia de seguretat del blog:
      Disseny - Modifica l'HTML - Baixar la plantilla completa

A Disseny de la plantilla - Avançat - CSS, he afegit:

.tabs-inner .widget ul            {                                                  background: rgba(   0,   0,  0,    0);         }
.tabs-inner .widget li a          { border: rgba(   0,   0,   0, 0.3)  solid 1px;    background: rgba( 255, 150,  50, 0.2);         }
.tabs-inner .widget li.selected a { border: rgba(   0,   0,   0, 0.5)  solid 1px;    background: rgba( 255, 150,  50, 0.4);         }
.tabs-inner .widget li a:hover    { border: rgba(   0,   0,   0, 0.6)  solid 1px;    background: rgba( 255, 150,  50, 0.6);         }
.post           {                                                font-size: 80%;                                                       }
.post-header    {                                                font-size: 90%;                                                       }
.post-outer     { border: rgba(   0,    0,    0, 0.5) solid 1px; border-radius: 7px; background: rgba(   0,   0,   0, 0.5);         }
.sidebar        { border: rgba(   0,    0,    0,   0) solid 5px; border-radius: 7px; background: rgba(   0,   0,   0, 0.6);         }
.widget ul      {                                                                    background: rgba(   0,   0,   0, 0.1);         }
.widget-content   {                                              font-size: 90%;                                                    }
.content-outer  {                                                                    background: rgba(   0,   0,   0, 0.7);         }
'.fauxcolumn-inner {                                                                  background: rgba(   0,   0,   0, 0.3);         }
'.body-fauxcolumns {                                                                  background: rgba(   0,   0,   0, 0.3);         }
'.date-header {font-size: 120%; background: rgba(100, 1000, 1000, 0.4); text-align: center; max-width: 15%;  border:solid 20px rgba(100, 1000, 1000, 0.3); border-radius: 20px; 'height: 50px;}

Les 3 darreres línies estan comentades i per tant no s'apliquen.
i el resultat és:
Abans


Després


Oct 3, 2010

MS-Acces

Runtime:

Convert Twips to Píxeles
'''''''''''' Per convertir twips a pixels
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public Const WU_LOGPIXELSX = 88
Public Const WU_LOGPIXELSY = 90
Public Const X_HOR    As Long = &H0
Public Const X_VERT   As Long = &H1
'''''''''''' Per convertir twips a pixels


Public Function TwipsToPixels(lngTwips As Long, lngDirection As Long) As Long
   'Handle to device
   Dim lngDC As Long
   Dim lngPixelsPerInch As Long
   Const nTwipsPerInch = 1440
   lngDC = GetDC(0)


   Select Case lngDirection
    Case X_HOR                  ' els pixels no son quadrats
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Case X_VERT
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
   End Select
   lngDC = ReleaseDC(0, lngDC)
   TwipsToPixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch
End Function


Public Function PixelsToTwips(lngTwips As Long, lngDirection As Long) As Long
   'Handle to device
   Dim lngDC As Long
   Dim lngPixelsPerInch As Long
   Const nTwipsPerInch = 1440
   lngDC = GetDC(0)


   Select Case lngDirection
    Case X_HOR                  ' els pixels no son quadrats
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Case X_VERT
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
   End Select
   lngDC = ReleaseDC(0, lngDC)
   PixelsToTwips = (lngTwips / lngPixelsPerInch) * nTwipsPerInch
End Function

Imprimir texto a la impresora predeterminada con Access Basic (1.x/2.0)
    'Obre el canal de la impressora
    Open "\\estacio4\zebra" For Output As #1
  
    'Configuració de la impressora
    Print #1, "^XA~TA-008~JSN^LT0^MMT^MNW^MTT^PON^PMN^LH0,0^JMA^PR4,4^MD0^JUS^LRN^CI27^XZ"
  
    'Nou format d'etiqueta i Llargada Etiqueta
    Print #1, "^XA^LL0200"
  
    'Amplada
    Print #1, "^PW639"
  
    'Codi de Barres de la 1ª Etiqueta
    Print #1, "^BY2,3,32^FT133,118^BCN,,N,N"
    Print #1, "^FD>;" & Ref_Imprimir & "^FS"
  
    'Codi de Barres de la 2ª Etiqueta
    Print #1, "^BY2,3,32^FT357,118^BCN,,N,N"
    Print #1, "^FD>;" & Ref_Imprimir & "^FS"
  
    'Referència 1ª etiqueta
    Print #1, "^FT162,139^A0N,23,24^FD" & Ref_Maca & "^FS"
  
    'Referència 2ª etiqueta
    Print #1, "^FT386,139^A0N,23,24^FD" & Ref_Maca & "^FS"
  
    'Imprimeix el nobre necessari d'etiquetes (Sortida de 2)
    Print #1, "^PQ" & CStr(Q2) & "," & CStr(Q2) & ",1,N^XZ"
  
    'Tanca el canal de la Impressora
    Close #1

.NET Framework Solutions—In Search of the Lost Win32 API
Per moure una finestra clicant el botó 'BotoDesp' (p.65)

'Constantes para SendMessage
Public Const WM_LBUTTONUP = &H202
Public Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF010
Public Const MOUSE_MOVE = &HF012
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Boolean


Private Sub BotoDesp_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    BotoDesp.Picture = DirectoriRecursos & "P" & Right(BotoDesp.Picture, 9)
    Clicat = True
    Call SendMessage(Me.hwnd, WM_SYSCOMMAND, MOUSE_MOVE, 0)
End Sub

Private Sub BotoDesp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Clicat And Button = 1 Then
        Call SetWindowPos(Application.hWndAccessApp, HWND_TOP, -200, -200, 10, 10, 0)
        Call ReleaseCapture
        Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End If
End Sub


Private Sub BotoDesp_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    BotoDesp.Picture = DirectoriRecursos & Right(BotoDesp.Picture, 9)
    Clicat = False
End Sub

Espais de color HSL and HSV

Arduino Exemples

Arduino + Processing – Make a Radar Screen to Visualise Sensor Data

Arduino Sleep

Reduir la freqüència
Arduino Interrupts
Sleep at Arduino Playground
avr/power.h
AVR® Fuse Calculator
Arduino Sleep_Watchdog_Battery
Save power in SquidBee - sleep mode
How to save energy in the WSN sleeping the motes
Trackuino
Sleep.cpp
Really powering down this time
Power Save Mode at Arduino Forum

Reg Automàtic, Arduino

Water Level
12V Lead-Acid Monitor
12V Battery Tester
LM3914 12V Battery monitor
12V Battery
IRFZ44N: El MOS-FET de batalla para PWM
Opto-Isolated Transistor Drivers for Micro-Controllers
Controlador per panel solar
Regulador de càrrega per panel solar
Bombes

Arduino Bootloader

Installing Optiboot
Using an Arduino as an AVR ISP

Oct 2, 2010

Electrònica Tutorial

Practical Electronics and Electricity for Learning and Fun

PS2, Arduino

Practical Arduino

Software Electrònica

Pad2Pad - Online PCB Manufacturer

OpenFrameworks

Open FrameWorks
OpenFrameworks WiKi
OpenFrameworks Wikipedia

Wii, Arduino Links

Motion Plus y Nunchuck juntos en el Arduino
Wii MotionPlus + Arduino
Wii Remote WiKi
Wiimote from Willi
WiiMote
Wii Motion Plus + Arduino = Love from Random Hacks
Motion Plus and Nunchuck together on the Arduino from Random Hacks
Wiimote/Extension Controllers. Data format and connection
A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications
Arduino code for simplified Kalman filter. Using a 5DOF IMU (accelerometer and gyroscope combo)
Arduino Wire Library (I2C)
Kalman Filtered Nunchuck & Wii Motion Plus on Arduino Forum

Mètode dels mínims quadrats
float[ ] x = {x,x,x,...}, y = {y,y,y,...};
int n = x.length;              // = y.length;
float sumx=0, sumy=0, sumxy=0, sumx2=0;
for (int i = 0; i  <  n; i++){
    sumx += x[i];
    sumy += y[i];
    sumx2 += x[i] * x[i];
    sumxy += x[i] * y[i];
}
float denominador = sumx*sumy - n*sumx2;
float m = (sumx*sumy-n*sumxy) / denominador;
float b = (sumx*sumxy-sumx2*sumy) / denominador;
println(m +" "+ b);                              // y = m·x + b (si substituim x per t (temps)


WiiMote WiKi Bluetooth Conection
Filtering Sensor Data with a Kalman Filter
How to: Arduino and Nintendo Nunchuck for pan and tilt camera interface on DIY Drones

Tracking Your Fingers with the Wiimote by Johnny Chung Lee
Friday, December 21, 2007
Wiimote Finger Tracking -FAQ and Adv Discussion

Read wii nunchuck data into arduino
Wii Nunchuck Mouse
Wii Nunchuck Mouse Code Breakdown
Wiimote light follower with servo
Winscape (virtual Window) - The Making Of

Open Source Software

InkScape Vector Graphics
Virtual BreadBoard (Arduino Virtual)
Fritzing
                                       

Osciloscopis
Blender 3D
MeshLab 3D
Epoch

Software

Osciloscopis

Arduino Programació

Firmata w/ Visual Basic
Making the most of Arduino memory
8x8 RGB Matrix
Arduino Cheat Sheet
Hacking VGA lines with Arduino
Firmata
Using an Arduino as an AVR ISP (In-System Programmer)
GEM
ModKit: Entorno de programación gráfica para arduino!

Electrònica Shoping

Electan

CNC

Contraptor
ReplicatorG. A simple, open source 3D printing program

WiFi, Arduino

Configuració WiFi
“WiiChuck” Wii Nunchuck Adapter Available

CNC Sohping

eMachineShop

Tech

Optical Mouse Cam
Stepper Control
Drawdio
Johnny Chung Lee (i like it)
Winscape (Finestra virtual)

Arduino Tutorials

Tutorial Arduino
Adafruit Tutorials

RFID, Arduino

Arduino RFID ID-12
Arduino RFID ID-12
RFID Reader Detector and Tilt-Sensitive RFID Tag
Visible and Controllable RFID Tags
RFID WebBlog
Mifare
Rethinking RFID
Rethinking RFID at Microsoft Research
Rethinking RFID at Vimeo

CNC, Arduino

Motor Shield

Arduino

Arduino Home
Tinker it! Blog
The World Famous Index of Arduino & Freeduino Knowledge
Arduino listens to electret microphone
Blogs: Open-source Arduino Clock
           t r o n i x s t u f f
           Paul's Electronics
           Physical Computing
           Random Hacks Of Boredom/Genius
           Robot Room
           TodBot Blog (Bionic Arduino – Introduction to Microcontrollers with Arduino)
           VR Urban

Domòtica

Domòtica

Arduino Recursos

Amarino
Interrupcions
74XX151 Multiplexer