<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Push The Button</title>
	<atom:link href="http://pushthebutton.es/feed" rel="self" type="application/rss+xml" />
	<link>http://pushthebutton.es</link>
	<description>Worklog de electronica, DIY, e informática de Alwar</description>
	<lastBuildDate>Thu, 10 Nov 2011 16:28:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CAN Sniffer con Arduino + Secuduino</title>
		<link>http://pushthebutton.es/archivos/can-sniffer-con-arduino-secuduino</link>
		<comments>http://pushthebutton.es/archivos/can-sniffer-con-arduino-secuduino#comments</comments>
		<pubDate>Fri, 06 May 2011 18:20:55 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Vehiculos]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=286</guid>
		<description><![CDATA[Para quien no conozca que es el CAN-bus, copio de la wikipedia CAN (acrónimo del inglés Controller Area Network) es un protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en entornos distribuidos. Lee la entrada completa Y para que quiero yo esto? [...]]]></description>
			<content:encoded><![CDATA[<div align="justify">Para quien no conozca que es el CAN-bus, copio de la <a href="http://es.wikipedia.org/wiki/Bus_CAN">wikipedia</a> </p>
<blockquote><p>CAN (acrónimo del inglés Controller Area Network) es un protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en entornos distribuidos.</p></blockquote>
<div id="attachment_287" class="wp-caption aligncenter" style="width: 310px"><a href="http://pushthebutton.es/wp-content/uploads/2011/05/cansniffer.jpg"><img src="http://pushthebutton.es/wp-content/uploads/2011/05/cansniffer-300x300.jpg" alt="Analizar del bus CAN" title="cansniffer" width="300" height="300" class="size-medium wp-image-287" /></a><p class="wp-caption-text">Can Sniffer</p></div>
<p><a href="http://pushthebutton.es/archivos/can-sniffer-con-arduino-secuduino">Lee la entrada completa</a><br />
<span id="more-286"></span><br />
Y para que quiero yo esto? Pues desde hace unos cuantos años, el aumento de electrónica en los coches ha obligado a los fabricantes a implantar una red dentro del vehículo para poder comunicar todos los sensores, actuadores y cpus del coche sin tener que tirar metros y metros de cables para conectarlos todos. Con este bus, podemos comunicar toda la electrónica del coche <strong>¡¡¡con solo dos hilos!!!</strong> (Cosas de la transmision diferencial y el <a href="http://es.wikipedia.org/wiki/Carrier_sense_multiple_access">CSMA</a>). Aunque en la realidad, por ejemplo en los coches del grupo Volkswagen cada vehículo tiene tres buses, el de Tracción, el de Confort, y el de &#8220;Infotaiment&#8221;.  Como es de esperar, las comunicaciones mas vitales del coche van por el de tracción, lo referente a los asientos, el climatizador, puertas, ventanas luces etc va por el de confort, y por último la información del cuadro de instrumentos (<a href="http://en.wikipedia.org/wiki/Aka">a.k.a</a> Cockpit) la radio, el navegador &#8230; va por el de &#8220;infotaiment&#8221;. Y aquí es donde me interesa el sniffer, ya que en mi coche, la radio se puede comunicar con el Cockpit para mostrar información en el FIS, incluso en coches con mandos en el volante (manos libres, control de la radio&#8230;) puedes a través de este bus saber cuando se pulsa un botón. Todo esto enfocado a algún día llevar en el coche un CarPC/TabletPC y dotarlo de funcionalidades añadidas.</p>
<p>El cacharro en si es bien sencillo.</p>
<ul>
<li><a href="http://secuduino.blogspot.com/">Un controlador del CAN-BUS</a></li>
<li>Arduino </li>
<li>Software adecuado (Do It Yourself)</li>
</ul>
<p>En principio solo vamos a analizar una parte de las comunicaciones, ya que por el bus  viaja mucha información, y solo una parte nos interesa, ademas esta va codificada (que no cifrada) a su manera, ya que aunque el CAN es un estándar, cada fabricante pone los datos en el bus como le da la gana. </p>
<p>Una vez tengamos la información que necesitemos, podemos reprogramar arduino para que simplemente conecte el pc con el CAN-BUS.</p>
<p>Aquí dejo la foto del caos-cableado que une todo. La idea es que también lleve su tarjeta SD/microSD para que almacene todos los mensajes durante los viajes y después analizarlos sin necesidad del PC siempre en el coche.<br />
<div id="attachment_288" class="wp-caption aligncenter" style="width: 310px"><a href="http://pushthebutton.es/wp-content/uploads/2011/05/cansniffer2.jpg"><img src="http://pushthebutton.es/wp-content/uploads/2011/05/cansniffer2-300x203.jpg" alt="CAN Sniffer sin LCD" title="cansniffer2" width="300" height="203" class="size-medium wp-image-288" /></a><p class="wp-caption-text">CAN Sniffer sin LCD</p></div></div>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/can-sniffer-con-arduino-secuduino/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La ley sinde es mucho mas peligrosa de lo que creen&#8230;</title>
		<link>http://pushthebutton.es/archivos/la-ley-sinde-es-mucho-mas-peligrosa-de-lo-que-creen</link>
		<comments>http://pushthebutton.es/archivos/la-ley-sinde-es-mucho-mas-peligrosa-de-lo-que-creen#comments</comments>
		<pubDate>Wed, 22 Dec 2010 21:30:08 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=278</guid>
		<description><![CDATA[Después de ser rechazada, ves que la gente o masa borreguera no se da cuenta de lo que implica si se llega a aprobar esa ley (que al parecer todavía no estamos a salvo&#8230;) El caso es que ayer, y hoy, he visto en la TV como reducían el problema de la ley sinde a [...]]]></description>
			<content:encoded><![CDATA[<div align="justify">Después de ser rechazada, ves que la gente o masa borreguera no se da cuenta de lo que implica si se llega a aprobar esa ley (que al parecer todavía no estamos a salvo&#8230;)</p>
<p>El caso es que ayer, y hoy, he visto en la TV como reducían el problema de la ley sinde a que nos iban a impedir descargar material protegido por derechos de autor. NO, NO y NO!! El problema de la ley sinde es que quieren que el gobierno a través de una comisión decida que webs se pueden cerrar automáticamente. Ya no solo las webs de descargas &#8220;ilegales&#8221;, si no que por ejemplo, podrían censurar esta o cualquier página de internet que considerasen oportuno. Es verdad que el proceso es mas complejo, pero a groso modo es así. Porque lo primero que hacen es cerrarte la web de manera cautelar, y luego llamamos al juez, y ya sabemos como es la justicia, te puedes tirar años, y mientras están de pleitos, tu página web está cerrada, y una web que cierra por un periodo largo, (de entre unos meses a varios años) es una web que muere automáticamente. </p>
<p><b>NO SE DEJEN ENGAÑAR POR LA CORTINA DE HUMO BASADA EN LA PIRATERÍA</b></p>
<p>No se si están equivocados ellos, o yo, porque creo que toda (o una gran parte) la gente que a través de internet se ha movilizado sabe lo que nos jugamos realmente. Esta ley es propia de una dictadura / tiranía a lo China, Cuba o <a href="http://alt1040.com/2010/12/la-ley-resorte-en-venezuela-una-ley-para-controlar-internet">Venezuela</a>. Esto demuestra lo podridos que están los políticos de este país.</p>
<p>A si que estad atentos a próximos movimientos del gobierno, que ahora con las navidades tienen tiempo de negociar con los independentistas para que les ayuden a cambio de favores&#8230;.</p>
<p>Nota: Yo no estoy a favor de la piratería (tampoco estoy a favor del modelo de negocio de la industria de la cultura), pero para cerrar cualquier tipo de web, aunque sea de forma cautelar, primero tiene que haber la autorización de un juez, al igual que para que la policía registre tu casa necesita primero una orden de registro.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/la-ley-sinde-es-mucho-mas-peligrosa-de-lo-que-creen/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Matriz de diodos &#8211; Test 3</title>
		<link>http://pushthebutton.es/archivos/matriz-de-diodos-test-3</link>
		<comments>http://pushthebutton.es/archivos/matriz-de-diodos-test-3#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:29:45 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=258</guid>
		<description><![CDATA[Está hecho con Arduino, un array de pares darlington (ULN2003A) y un shift register 74HC595. Solo falta montarlo en una placa, soldarlo con unos cuantos mas shift registers y tendremos una marquesina. Esuqema de conexion de la matriz de 8&#215;8: Las resistencias que hay entre los integrados y la matriz, a mi me ha funcionado [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/XnqpI_hctaU&amp;hl=es_ES&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/XnqpI_hctaU&amp;hl=es_ES&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Está hecho con Arduino, un array de pares darlington (ULN2003A) y un shift register 74HC595. Solo falta montarlo en una placa, soldarlo con unos cuantos mas shift registers y tendremos una marquesina. Esuqema de conexion de la matriz de 8&#215;8:<br />
<a href="http://img193.imageshack.us/img193/6409/matrixl.png"><img class="aligncenter" title="8x8 Led matrix" src="http://img193.imageshack.us/img193/6409/matrixl.png" alt="8x8 Led matrix" width="640" /></a></p>
<p>Las resistencias que hay entre los integrados y la matriz, a mi me ha funcionado con resistencias de entre 0,5K Ohm y 1k Ohm<br />
El codigo está <a href="http://pushthebutton.es/archivos/matriz-de-diodos-test-3"> aquí</a>.<br />
<span id="more-258"></span></p>
<pre name="code" class="c">
// 8*8 LED matrix with ULN2003A &amp; 74HC595
// Made by Vadim S.
//On 25.06.2009
// Mod by Alwar
//On 13.06.2010
///Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
int x;
int y;
// here the definion of all the letter(big ans small) and numbers
#define A     {B00111100,B01000010,B01000010,B01000010,B01111110,B01000010,B01000010,B01000010}
#define B     {B01111100,B01000010,B01000010,B01111100,B01000010,B01000010,B01000010,B01111100}
#define C     {B00111110,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B00111110}
#define D     {B01111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B01111100}
#define E     {B01111110,B01000000,B01000000,B01111100,B01000000,B01000000,B01000000,B01111110}
#define F     {B01111110,B01000000,B01000000,B01111100,B01000000,B01000000,B01000000,B01000000}
#define G     {B00111100,B01000010,B01000010,B01000000,B01000111,B01000010,B01000010,B00111100}
#define H     {B01000010,B01000010,B01000010,B01111110,B01000010,B01000010,B01000010,B01000010}
#define I     {B00111000,B00010000,B00010000,B00010000,B00010000,B00010000,B00010000,B00111000}
#define J     {B00011100,B00001000,B00001000,B00001000,B00001000,B01001000,B01001000,B00110000}
#define K     {B01000100,B01001000,B01010000,B01100000,B01010000,B01001000,B01000100,B01000010}
#define L     {B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01111110}
#define M     {B01000100,B10101010,B10010010,B10010010,B10000010,B10000010,B10000010,B10000010}
#define N     {B01000010,B01100010,B01010010,B01001010,B01001010,B01001010,B01000110,B01000010}
#define O     {B00111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00111100}
#define P     {B00111100,B01000010,B01000010,B01000010,B01111100,B01000000,B01000000,B01000000}
#define Q     {B00111100,B01000010,B01000010,B01000010,B01000010,B01000110,B00111110,B00000001}
#define R     {B00111100,B01000010,B01000010,B01000010,B01111100,B01000100,B01000010,B01000010}
#define S     {B00111100,B01000010,B01000000,B01000000,B00111100,B00000010,B01000010,B00111100}
#define T     {B11111110,B00010000,B00010000,B00010000,B00010000,B00010000,B00010000,B00010000}
#define U     {B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00111100}
#define V     {B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000}
#define W     {B10000010,B10000010,B10000010,B10000010,B10010010,B10010010,B10101010,B01000100}
#define X     {B01000010,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B01000010}
#define Y     {B10000010,B01000100,B00101000,B00010000,B00010000,B00010000,B00010000,B00010000}
#define Z     {B01111110,B00000010,B00000100,B00001000,B00010000,B00100000,B01000000,B01111110}
#define lit_a {B00000000,B00000000,B00000000,B00111000,B01000100,B01000101,B01000101,B00111010}
#define lit_b {B00000000,B00100000,B00100000,B00100000,B00111100,B00100010,B00100010,B00111100}
#define lit_c {B00000000,B00000000,B00000000,B00111100,B01000000,B01000000,B01000000,B00111100}
#define lit_d {B00000000,B00000100,B00000100,B00000100,B00111100,B01000100,B01000100,B00111100}
#define lit_e {B00000000,B00000000,B00111000,B01000100,B01000100,B01111000,B01000000,B00111100}
#define lit_f {B00011000,B00100100,B00100000,B00100000,B01110000,B00100000,B00100000,B00100000}
#define lit_g {B00011100,B00100010,B00100010,B00011110,B00000010,B00000010,B00010010,B00001100}
#define lit_h {B01000000,B01000000,B01000000,B01000000,B01111000,B01000100,B01000100,B01000100}
#define lit_i {B00000000,B00010000,B00000000,B00010000,B00010000,B00010000,B00010000,B00010000}
#define lit_j {B00000000,B00010000,B00000000,B00010000,B00010000,B00010000,B01010000,B00110000}
#define lit_k {B00000000,B00000000,B01001000,B01010000,B01100000,B01100000,B01010000,B01001000}
#define lit_l {B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000}
#define lit_m {B00000000,B00000000,B00110100,B01001010,B01001010,B01001010,B01001010,B01001010}
#define lit_n {B00000000,B00000000,B01111000,B01000100,B01000100,B01000100,B01000100,B01000100}
#define lit_o {B00000000,B00000000,B00000000,B00011100,B00100010,B00100010,B00100010,B00011100}
#define lit_p {B00000000,B00000000,B00011100,B00100010,B00100010,B00111100,B00100000,B00100000}
#define lit_q {B00000000,B00000000,B00111000,B01000100,B01000100,B00111100,B00000100,B00000100}
#define lit_r {B00000000,B00000000,B00111000,B01000000,B01000000,B01000000,B01000000,B01000000}
#define lit_s {B00000000,B00111000,B01000100,B01000000,B00111000,B00000100,B01000100,B00111000}
#define lit_t {B00100000,B00100000,B00100000,B01111000,B00100000,B00100000,B00100010,B00011100}
#define lit_u {B00000000,B00000000,B00000000,B01000100,B01000100,B01000100,B01000100,B00111000}
#define lit_v {B00000000,B00000000,B01000100,B01000100,B01000100,B01000100,B00101000,B00010000}
#define lit_w {B00000000,B00000000,B00000000,B01000100,B01000100,B01010100,B01010100,B00101000}
#define lit_x {B00000000,B00000000,B00000000,B00000000,B00100100,B00011000,B00011000,B00100100}
#define lit_y {B00000000,B01000100,B01000100,B00111100,B00000100,B00000100,B00000100,B00111000}
#define lit_z {B00000000,B00000000,B00000000,B01111100,B00001000,B00010000,B00100000,B01111100}
#define space {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000}
#define num_0 {B00111100,B01000110,B01001010,B01001010,B01001010,B01010010,B01100010,B00111100}
#define num_1 {B00001000,B00011000,B00001000,B00001000,B00001000,B00001000,B00001000,B00011100}
#define num_2 {B00111100,B01000010,B00000100,B00001000,B00010000,B00100000,B01000000,B01111110}
#define num_3 {B01111110,B00000010,B00000010,B00011100,B00000010,B00000010,B01000010,B00111100}
#define num_4 {B00000100,B00001100,B00010100,B00100100,B01000100,B01111110,B00000100,B00000100}
#define num_5 {B01111110,B01000000,B01000000,B00111100,B00000010,B00000010,B00000010,B01111100}
#define num_6 {B00111100,B01000000,B01000000,B01111100,B01000010,B01000010,B01000010,B00111100}
#define num_7 {B01111110,B00000010,B00000100,B00001000,B00010000,B00010000,B00010000,B00010000}
#define num_8 {B00111100,B01000010,B01000010,B00111100,B01000010,B01000010,B01000010,B00111100}
#define num_9 {B00111100,B01000010,B01000010,B01000010,B00111110,B00000010,B00000010,B00111100}
#define times {B00000000,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B00000000}
// Signals for shift register, go over al cols, one each time
byte barrido[8] = { B00000001,B00000010,B00000100,B00001000,B00010000,B00100000,B01000000,B10000000 };
const int numPatterns = 15;//this is the number of patterns you want to display
// the patterns order
byte patterns[numPatterns][8]={space,M,A,D,E,space,B,Y,space,A,L,W,A,R,space};
void setup(){
  // this is a commed that makes pins 0-7 outputs(see more on the arduino site)
  DDRD=B11111111;
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}
// int loop acts like a delay, it take 8 mSecands to scan all of the rows so int
// loops = 15 is a good time for it
void display_pattern(int loops)
{
   for(x=0;x
   { // loop over the patterns
      for (int z=0;z&lt;8;z++)
      { //scrolls one bite at a time
         for(int t=0;t
         {// the delay we get with loops
            for(y=0;y&lt;8;y++)
            {
               // loops over the array of bytes
               byte temp = patterns[x][y];
               byte temp_2=patterns[x+1][y];
               //writes digital outputs, Z is for how much bites it need to scroll
               PORTD = (temp&lt;&gt;7-z);
               delayMicroseconds(800);// the time every row is one
               PORTD=B00000000;// all pins are low, fixes the ghosting effect
               digitalWrite(latchPin, LOW);
               shiftOut(dataPin, clockPin, LSBFIRST, barrido[y]);
               //return the latch pin high to signal chip that it
               //no longer needs to listen for information
               digitalWrite(latchPin, HIGH);
            }
         }
      }
   }
}
void loop(){
// calls for the display_pattern function and says that int loop = 15
// (if you do more loop the pattern whould scrrol slower).
display_pattern(15);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/matriz-de-diodos-test-3/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Voltimetro para baterias (de airsoft) [Battery Tester]</title>
		<link>http://pushthebutton.es/archivos/voltimetro-para-baterias-de-airsoft-battery-tester</link>
		<comments>http://pushthebutton.es/archivos/voltimetro-para-baterias-de-airsoft-battery-tester#comments</comments>
		<pubDate>Fri, 11 Jun 2010 23:06:59 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=232</guid>
		<description><![CDATA[Lo mejor de esto es el comprender que esa asignatura llamada fundamentos físicos de la informática está sirviendo para algo. Si antes fueron los transistores bipolares, ahora es el &#8220;Divisor de tensión&#8220;. Incomprendido hasta hoy este circuito hace honor a su nombre dividiendo la tensión de entrada dependiendo de los valores de las resistencias: Para [...]]]></description>
			<content:encoded><![CDATA[<div align="justify">Lo mejor de esto es el comprender que esa asignatura llamada fundamentos físicos de la informática está sirviendo para algo. Si antes fueron los transistores bipolares, ahora es el &#8220;<a href="es.wikipedia.org/wiki/Divisor_de_tensión">Divisor de tensión</a>&#8220;. Incomprendido hasta hoy este circuito hace honor a su nombre dividiendo la tensión de entrada dependiendo de los valores de las resistencias:</p>
<div align="center"><a href="http://es.wikipedia.org/wiki/Archivo:Resistive_divider.png"><img alt="Divisor de Tensión" src="http://img809.imageshack.us/img809/1264/resistivedivider.png" title="Divisor de tensión" width="178" height="168" /></a></div>
<p><span id="more-232"></span><br />
Para hallar el valor de salida en relación al de entrada debemos aplicar la siguiente formula:</p>
<div align="center"><img src="http://l.wordpress.com/latex.php?latex=V_%7Bout%7D%3D%5Cfrac%7BR_2%7D%7BR_1%20%2B%20R_2%7D%20V_%7Bin%7D%20&#038;bg=00000&#038;fg=FFFFFF&#038;s=0" title="V_{out}=\frac{R_2}{R_1 + R_2} V_{in} " style="vertical-align:-20%;" class="tex" alt="V_{out}=\frac{R_2}{R_1 + R_2} V_{in} " /></div>
<p>¿Y para uqe nos vale esto? Pues porque el &#8220;<a href="http://es.wikipedia.org/wiki/Conversi%C3%B3n_anal%C3%B3gica-digital">convertidor analógico digital</a>&#8221; que trae Arduino solo acepta hasta 5 voltios, pero si por ejemplo en mi caso queremos utilizar el circuito para comprobar baterías de 8,4 voltios, y puede que también de 9,6 voltios necesitamos reducir el voltaje de entrada para no churruscar nuestra placa de prototipado. Entonces con el divisor de tensión el ADC de arduino ahora acepta hasta 10v con una resolución de 10bits lo que no da una precisión de 9,77 mV. Si quisiéramos baterías mas grandes deberíamos añadir resistencias al divisor de tensión para que en Vout cuando Vin es máximo solo hubiese 5 voltios. No vale poner una resistencia muy grande, necesitamos varias, ya que en mi ejemplo cada resistencia tiene una caída de potencial del 50%. Si po ejemplo quisiéramos medir baterías de hasta 20 voltios, necesitaríamos dividir por 4 la tensión, y lo conseguríamos conectando en vez de dos resistencias, cuatro. Y conectaríamos Vout entre la penúltima y la última resistencia. Como las 4 resistencias serán iguales, pues cada una tendrá una caída de potencial de 1/4 del voltaje de entrada, lo que nos daría como máximo 5 voltios.<br />
<br />
Este es el circuito. Donde el simbolo del voltimetro es la placa arduino usando cualquiera de sus pines de entrada analogicos (A0~A5). La batería de 9 voltios es la que queremos probar. Las resistencias según pueden ser de entre 1K y 10K, yo uso un valor intermedio de 4,7K.<br />
<a href="http://img824.imageshack.us/img824/6564/batterytester.png"><img alt="" src="http://img824.imageshack.us/img824/6564/batterytester.png" title="Circuito battery test" class="aligncenter" width="330" height="425" /></a><br />
<br />
<strong>El código</strong><br />
Es muy sencillo, creo que no hace falta explicarlo.</p>
<pre name="code" class="c">
int sensorPin = 3;
int sensorValue = 0;
float voltaje = 0.0;

void setup()
{
  Serial.begin(9600);
  Serial.println("Battery Tester");
} 

void loop()
{
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  voltaje = ((5*float(sensorValue))/1024);
  Serial.print("Divisor de Tension (Vout): ");
  Serial.println(voltaje,3);
  Serial.print("Voltaje estimado (Vin): ");
  Serial.println(voltaje*2,3);
  delay(1250);

}</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/voltimetro-para-baterias-de-airsoft-battery-tester/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eagle + POV RAY =</title>
		<link>http://pushthebutton.es/archivos/eagle-pov-ray</link>
		<comments>http://pushthebutton.es/archivos/eagle-pov-ray#comments</comments>
		<pubDate>Tue, 08 Jun 2010 22:57:07 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ATmega]]></category>
		<category><![CDATA[AVR]]></category>
		<category><![CDATA[EAGLE]]></category>
		<category><![CDATA[ISP]]></category>
		<category><![CDATA[POV RAY]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/archivos/eagle-pov-ray</guid>
		<description><![CDATA[Ahora me ha dado por buscar un programador de micros ATmega. He visto dos opciones, el USBasp o desde el propio arduino. Me gustaba bastante el USBasp de Olek ya que es como un pendrive pero es casi todo SMD y para mis manos inexpertas no es viable. A si que me decido por la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://img80.imageshack.us/img80/5906/isp2.png"><img class="aligncenter" title="ISP Shield" src="http://img80.imageshack.us/img80/5906/isp2.png" alt="ISP Shield" width="600" /></a></p>
<div align="justify">Ahora me ha dado por buscar un programador de micros ATmega. He visto dos opciones, el <a href="http://www.fischl.de/usbasp/">USBasp</a> o desde el propio <a href="http://drug123.org.ua/mega-isp-shield/">arduino</a>. Me gustaba bastante el <a href="http://olek.tk/en/show_image.php?img=prj_usbasp.jpg">USBasp de Olek</a> ya que es como un pendrive pero es casi todo <a href="http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_de_montaje_superficial">SMD</a> y para mis manos inexpertas no es viable. A si que me decido por la placa <a href="http://en.wikipedia.org/wiki/In-system_programming">ISP</a> para arduino. Viendo lo sencilla que es se me a ocurrido modificarla para que porte un zócalo de 28 pines para no tener que usar cables a la hora de programar, aunque no he eliminado ese conector. Este es el resultado de tener que estar estudiando, que haces de todo menos estudiar. El día que tenga que preparar unas oposiciones seguro que construyo un avión o una central nuclear. A ver si después de exámenes lo llevo a la realidad y vemos si <a href="http://www.nongnu.org/avrdude/">AVRDUDE</a> puede programar a traves de eso.</div>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/eagle-pov-ray/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sustituir un Inverter ó Como reparar la pantalla de un portatil que se ve muy oscuro</title>
		<link>http://pushthebutton.es/archivos/sustituir-un-inverter-o-como-reparar-la-pantalla-de-un-portatil-que-se-ve-muy-oscuro</link>
		<comments>http://pushthebutton.es/archivos/sustituir-un-inverter-o-como-reparar-la-pantalla-de-un-portatil-que-se-ve-muy-oscuro#comments</comments>
		<pubDate>Tue, 27 Apr 2010 13:52:23 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Reparaciones]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=212</guid>
		<description><![CDATA[El otro día llego mi hermano con el portátil estropeado. Al encenderlo no se veía nada en la pantalla. Luego observe que si se veían sombras e imágenes pero muy oscuras. Le faltaba la retro-iluminación o backlight. Como ya tiene unos años el portátil decidí arreglarlo yo y prescindir de los estafadores del pccity o [...]]]></description>
			<content:encoded><![CDATA[<div align="justify">El otro día llego mi hermano con el portátil estropeado. Al encenderlo no se veía nada en la pantalla. Luego observe que si se veían sombras e imágenes pero muy oscuras. Le faltaba la retro-iluminación o backlight. Como ya tiene unos años el portátil decidí arreglarlo yo y prescindir de los <strong>estafadores</strong> del pccity o cualquier otro S.A.T.<br />
<img src="http://img337.imageshack.us/img337/6401/portada600.jpg" alt="Inverter Acer 1350" /><br />
Investigando vi que podía ser que se hubieran fundido las lamparas que iluminan (cosa muy improbable) o que hubiese muerto el <a href="http://en.wikipedia.org/wiki/Inverter_%28electrical%29">inversor</a>. Viendo foros y googleando vi que esto último era algo frecuente, a si que me puse manos a la obra.</div>
<p><span id="more-212"></span></p>
<div align="justify">Desarme la tapa del portátil y saque el inversor, busque el numero de serie y googlee donde podría encontrarlo. Yo lo encontré en dos sitios, en <a href="http://www.dealextreme.com/details.dx/sku.29573">DealExtreme</a> que está agotado, y en <a href="http://www.bestofferbuy.com/lcd-screen-inverter-board-for-acer-13505600300-laptops-p-30897.html">Bestofferbuy</a>. Las dos páginas son muy similares, situadas en hong kong, no cobran por el envió, a si que por 7€ tuve el inversor, eso si ha tardado 3 semanas cuando lo normal (cuando compro cosas en hong-kong) son 1 o 2, pero esto puede haberse debido al jaleo del volcán <a href="http://es.wikipedia.org/wiki/Eyjafjallaj%C3%B6kull">Eyjafjallajökull</a>.</p>
<p><strong>Como desarmarlo</strong>, y esto vale para todos los portátiles (al menos los que he desmontado).<br />
Básicamente hay que quitar los tornillos que suelen estar debajo de las gomas que hacen de almohadillas para la tapa:<br />
<img src="http://img297.imageshack.us/img297/8448/desmontar1.jpg" alt="Desmontar pantalla acer 1350" /><br />
déjalas en algún sitio seguro o pégalas sobre algo liso como hice yo, que utilice la caja metálica de los destornilladores de seguridad para guardarlas. En mi caso la que estaba en la parte superior central del marco no tenía debajo tornillo.</p>
<p>Una vez quitados los tornillos, con cuidado de no partir la carcasa, hay que forzarla por todos los bordes para que salga, ya que estará sujeta con grapas. Es posible que necesites hacer una poca de palanca con un destornillador plano pequeño.<br />
<img src="http://img203.imageshack.us/img203/3966/desmontar2.jpg" alt="Desmontar pantalla acer 1350" /></p>
<h2><span style="color: #ff0000;"><strong>PELIGRO!!! El inversor genera unos 1000 V en su salida. Desconecta cable de alimentación y batería antes de desmontar nada.</strong></span></h2>
<p>Una vez abierta la carcasa de la pantalla solo hay que reemplazar el inversor viejo por el nuevo. En algunos hay que quitar algún tornillo, en otros como era mi caso solo hay que despegarlo y poner el nuevo.<br />
<img src="http://img442.imageshack.us/img442/1456/inversores1.jpg" alt="Inversores acer 1350" /><br />
El que esta conectado es el estropeado y el que esta suelto es el nuevo. Como veis no se ve ningún daño en el inversor, aunque este roto. Según he leído para comprobar si el inversor funciona, Encendemos el portátil, y con la salida del inversor (el conector que son 2 cables) desconectada de la pantalla acercamos (sin tocar ni cortocircuitar) un destornillador que este aislado (si no calambrazo!) y si saltan chispas es que hay corriente por tanto el inversor funciona y nuestro problema se puede deber a las lamparas.</p>
<p>Para volver a montar la carcasa basta con ponerla en su sitio e ir apretando por todas las grapas para que se cierren. Oiremos &#8220;click&#8221; a medida que las vallamos cerrando. Si vemos que no cierra bien, mirar a ver si hay alguna grapa que todavía no ha entrado. Una vez cerrado si vemos que esta bien ponemos los tornillos, ponemos la almohadillas y listo!!</p>
<p><img src="http://img691.imageshack.us/img691/1994/itworks.jpg" alt="Inversor Acer 1350 funcionando" /><br />
Todavía no he conseguido que ninguno de mis hermanos use linux xD
</div>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/sustituir-un-inverter-o-como-reparar-la-pantalla-de-un-portatil-que-se-ve-muy-oscuro/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Empaquetador de practicas para Linux &#8211; PaKetX v0.1</title>
		<link>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1</link>
		<comments>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1#comments</comments>
		<pubDate>Wed, 14 Apr 2010 12:01:59 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=205</guid>
		<description><![CDATA[Este programa está escrito con la intención de proporcionar una solución a los alumnos de la Universidad Rey Juan Carlos I de Madrid, usuarios de Linux que necesitan entregar sus practicas empaquetadas con el programa que proporciona la universidad. Yo no guardo ninguna relación con la universidad, salvo que estudio allí. Su funcionamiento es bien [...]]]></description>
			<content:encoded><![CDATA[<p>Este programa está escrito con la intención de proporcionar una solución a los alumnos de la Universidad Rey Juan Carlos I de Madrid, usuarios  de Linux que necesitan entregar sus practicas empaquetadas con el programa que proporciona la universidad. Yo no guardo ninguna relación con la universidad, salvo que estudio allí.<br />
<img src="http://img683.imageshack.us/img683/6403/paketx.png" alt="PaKetX - Empaquetador de practicas para linux" /><br />
Su funcionamiento es bien sencillo. Lee un archivo XML (que se distribuye en zip con extensión <a href="http://dac.escet.urjc.es/">*.dac</a>) en el cual se especifica que archivos hay que entregar para la realización de la practica, y cuantos miembros puede tener el grupo de trabajo. El programa mira que en el directorio donde se encuentra estén los archivos de la practica, y si están pide los datos de los miembros de grupo (nombre y expediente), lo guarda en un archivo de texto y lo &#8220;zipea&#8221; todo junto. Este zip debería ser totalmente compatible con los que genera la aplicación para windows. Aunque esto todavía no lo he comprobado.</p>
<p>Ademas le he añadido otra funcionalidad (como mola el software libre) y es que si la ejecutas con la opción make (no la de compilar si no &#8220;paketX make&#8221;) pues te crea una carpeta con el nombre de la practica y en ella todos los archivos (en blanco claro) que hay que entregar, así te ahorras el trabajo de crearte la estructura de la practica. Claro que solo funciona con archivos de texto (por ejemplo para los VHDl *.vhd o los sources de Pascal *.pas), si te genera un archivo *.pdf lo puedes borrar porque solo sirve para ver que tienes que entregar.</p>
<p>Es mi primer script serio en bash, y espero que no seáis muy duros con el, ya que hace dos dias, sabía bien poco sobre este lenguaje de scripting. Osea que tendrá sus fallos.<br />
Esta escrito y testado bajo Debian GNU/LINUX squeeze. Que yo sepa solo necesita para funcionar, bash, p7zip y XMLStarlet.</p>
<p>El programa lo podéis bajar desde el <a href="http://alwar.mainfri.com/Downloads/paketX/paketX">archivo de alwar</a></p>
<h2><strong>Actualización v0.2<br />
</strong></h2>
<p>He actualizado el script, ya que antes separaba los nombres con un espacio y el programa para windows lo hace con un tabulador. Ahora el script también mete un tabulador. Estuve comparando una practica empaquetada con ambos programas, y a excepción del tabulador el archivo era idéntico. Solo cambia una cosa, y es que el programa para windows nombra a la practica con los nombres de los expedientes a la inversa de como los escribes, mientras que el script para linux lo pone en el orden que fueron escritos. Esto no creo que sea un problema ya que cuando examinen la practica no creo que sepan en que orden los introdujiste.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scar L + Silenciador + Cañon de Precision</title>
		<link>http://pushthebutton.es/archivos/scar-l-silenciador-canon-de-precision</link>
		<comments>http://pushthebutton.es/archivos/scar-l-silenciador-canon-de-precision#comments</comments>
		<pubDate>Sun, 07 Feb 2010 10:19:11 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Airsoft]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=181</guid>
		<description><![CDATA[No se si ha todo el mundo le pasa con los silenciadores, pero lo normal que he visto, es que las bolas se atasquen al salir, y no le des ni a un elefante a 2 metros. Se chocan con los bordes y paredes y termina saliendo corcho en vez de bolas. Para solucionar esto, [...]]]></description>
			<content:encoded><![CDATA[<p>No se si ha todo el mundo le pasa con los silenciadores, pero lo normal que he visto, es que las bolas se atasquen al salir, y no le des ni a un elefante a 2 metros. Se chocan con los bordes y paredes y termina saliendo corcho en vez de bolas. Para solucionar esto, podría haber quitado directamente el silenciador, pero como el scar anda un poco escaso de FPS y precisión, preferí probar a ponerle un cañón de precisión mas largo, para que asi no se atasquen las bolas en el silenciador, y ademas ganar algo de FPS.</p>
<p>Para ello he utilizado un cañón de 450mm y un diámetro de 6,04mm. Con el silenciador puesto, nos sobran unos 3 cm de cañón que hay que cortar, pulir y redondear para que no queden bordes que puedan modificar la trayectoria de la bola.</p>
<p style="text-align: center;">Aqui una vista de los dos cañones juntos:<br />
<img class="aligncenter" src="http://img96.imageshack.us/img96/6738/comparativa1.jpg" alt="Comparativa cañones" width="392" height="164" /></p>
<p style="text-align: center;">Y aqui los dos cañones, el cañon largo ya perfectamente montado.<br />
<img class="aligncenter" src="http://img96.imageshack.us/img96/4460/comparativa2.jpg" alt="Comparativa cañones y silenciador" width="347" height="95" /></p>
<p>Y aquí el cañon ya cortado:<br />
<img src="http://img515.imageshack.us/img515/2648/scart.jpg" alt="Scar y Silenciador" /></p>
<p>Una vez limado el cañón queda mas metido, mas liso el borde, y podemos limar un poco del interior para hacer la salida cónica y que no entorpezca a la bola al salir. Conviene empezar con una lima de grano gordo, y luego pasar a una fina para un mejor acabado. Y si nos molesta mucho que se vea el cañón dorado, pues podemos pintar la punta.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/scar-l-silenciador-canon-de-precision/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recuperar particion EXT2 o EXT3 (Recuperar SuperBlock)</title>
		<link>http://pushthebutton.es/archivos/recuperar-particion-ext2-o-ext3-recuperar-superblock</link>
		<comments>http://pushthebutton.es/archivos/recuperar-particion-ext2-o-ext3-recuperar-superblock#comments</comments>
		<pubDate>Sun, 07 Feb 2010 09:49:47 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=183</guid>
		<description><![CDATA[¿Cuantas veces nos cargamos una partición? Pues yo ya lo he hecho muchas veces, suerte que siempre consigo arreglarlas xD Introducción Esta vez, (todo por culpa de windows que por arte de birlibirloque se carga el MBR haciendo cualquier SO inarrancable ) intentado restaurar una copiar del MBR, por error, en vez de copiarla al [...]]]></description>
			<content:encoded><![CDATA[<p>¿Cuantas veces nos cargamos una partición? Pues yo ya lo he hecho muchas veces, suerte que siempre consigo arreglarlas xD</p>
<p><strong>Introducción</strong><br />
Esta vez, (todo por culpa de windows que por arte de birlibirloque se carga el <a href="http://es.wikipedia.org/wiki/Master_Boot_Record">MBR</a> haciendo cualquier SO inarrancable ) intentado restaurar una copiar del MBR, por error, en vez de copiarla al inicio del disco, (donde esta mi MBR) la copie al principio de la partición 2 (hd0,1 ó sda2). Al principio el error, no parece tan grave, pero cuando ves que no puedes montar la partición de ninguna manera, te empiezas a mosquear ¬¬</p>
<p><span id="more-183"></span><br />
<a href="#grano">Vamos al Grano</a></p>
<p><strong>&#8220;Tranquilidad y buenos alimentos&#8221;</strong> como se suele decir, lo primero ante un fallo de estos, es no alterarse y no estropearlo mas, intentar arreglarlo precipitadamente nos puede llevar a intentar arreglarlo de alguna forma que solo lo estropeemos mas (o irreversible). Ante todo debemos empezar con un buen diagnostico (En este caso, observando la salida de mount+google hubieramos dado pronto con la solución, sin correr a coger el <a href="http://www.cgsecurity.org/wiki/TestDisk">testdisk</a>)<br />
Una buena practica es hacer backups, así si no tienes datos irrecuperables, puedes directamente formatear y volver a empezar. Pero como yo no lo tenía, y tampoco sabía como arreglarlo, pues antes de estropearlo mas, nos hacemos un backup por ejemplo con <a href="http://clonezilla.org/">clonezilla</a>. Tiene una interfaz hecha con ncurses (intuyo) que es un poco liosa a mi parecer (o que la versión en castellano esta mal traducida) , pero si tenemos espacio en otra particion/disco en el mismo PC donde esta la ext3 en cuestión, pues podemos copiarla a un archivo como yo hice (25 archivos de 2 GB <img src='http://pushthebutton.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ), si no pues buscar otra forma de hacer backup. Esto es importante ya que en mi caso los datos no se había perdido, solo se había sobreescrito los 32 primeros KBytes de sda2, entonces hacer algo inapropiado sobre el disco podría empeorarlo.</p>
<p><strong>Busqueda de los backup del superblock</strong><br />
Una vez hecho el backup (bueno, esto se puede hacer también antes del backup) con <a href="http://www.cgsecurity.org/wiki/TestDisk">testdisk</a> seleccionamos HD, tipo de tabla de particiones, le damos a &#8220;Advanced&#8221; seleccionamos la partición ext2/3 (supongo que con ext2 también vale, son fs identicos, solo que ext3 incluye<a href="http://es.wikipedia.org/wiki/Journaling"> journaling</a> y ext2 no, y no me pregunteis que es que no lo se) y le damos a &#8220;Superblock&#8221;, esto buscara en la partición los &#8220;Superbloques&#8221; de backup que hay esparcidos por todo el disco, por si nos pasa esto xD.<br />
Cuanto termine nos dará una tabla de números, que habrá que copiar para luego indicarle a fsck.ext3 donde puede haber un superbloque de repuesto.<br />
<img src="http://img534.imageshack.us/img534/4858/supeblock.jpg" alt="" /><br />
Para saber mas de como funciona el sistema de ficheros ext2 puedes ver este <a href="http://sopa.dis.ulpgc.es/ii-dso/leclinux/fs/superbloque/superbloque.pdf">PDF [111 Transparencias]</a><br />
Apunta todos los &#8220;superblock&#8221; y el &#8220;blocksize&#8221; (con una vez que apuntes el blocksize es suficiente, ya que debería ser siempre el mismo) que nos hacen falta ahora despues.</p>
<p><strong>Restaurar el superblock</strong><br />
Para restaurar el superblock, solo tienes que ejecutar algún live cd que tenga fsck (digo live cd, porque entiendo que si estas leyendo esto es que te has cargado el sistema de ficheros raiz, si no es así lo puedes hacer desde tu instalación normal de linux)<br />
Una vez tengas una consola funcionando, ejecutamos fsck:<br />
<strong>/sbin/fsck.ext3 -b [superblock] -B [blocksize] /dev/hda1</strong><br />
Donde [superblock] reemplazar por uno de los bloques que nos dio testdisk. Recomiendo uno alto, ya que si te ha pasado como en mi caso, es mas probable que se halla afectad un superblock del principio que del final. Donde [blocksize] el tamaño de cada bloque, normalmente 1024, 2048 o 4096.<br />
<span style="color: #ff0000;"><strong>Donde hda1 reemplazar por la particion a reparar.</strong></span>Ojo con esto, que por no fijarme bien en que unidad ponía me carge el sistema de archivos.<br />
Fsck se pone a trabajar&#8230; nos empezara a sacar errores y nos preguntara que si queremos repararlos, le decimos que si a todo, y cuando termine el sistema de archivos en cuestión se podrá montar con normalidad.</p>
<p><a name="grano"></a><br />
<strong>Resumiendo</strong><br />
Para Recuperar el superblock necesitamos:<br />
- <a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a><br />
- fsck (viene con <a href="http://e2fsprogs.sourceforge.net/">e2fsprogs</a> y con RIP liveCD)<br />
Opcional<br />
- <a href="http://clonezilla.org/">Clonezilla</a> (si queremos hacer backup)<br />
- <a href="http://www.tux.org/pub/people/kent-robotti/looplinux/rip/">RIP liveCD</a> (si no tenemos donde ejecutar testdisk ni fsck)</p>
<p><strong>Procedimiento</strong><br />
- <a href="http://www.cgsecurity.org/wiki/Busqueda_Avanzada_del_Superblock_de_Backup_ext2_ext3">Halla los superbloques con testdisk (en Advanced)</a><br />
- Restauralo con fsck: /sbin/fsck.ext3 -b [superblock] -B [blocksize] /dev/[partición]</p>
<p><strong><span style="color: #ff0000;">Cosas a tener en cuenta</span></strong><br />
HACER BACKUP&#8217;S DE TODO</p>
<p><strong><span style="color: #ff0000;">Como diagnosticar que le pasa a un disco</span></strong><br />
- Ver que dice mount<br />
- Ver que dice fsck<br />
- Ver que dice <a href="http://www.brzitwa.de/mb/gpart/index.html">gpart</a> (sin opciones, solo dispositivo) No tiene nada que ver con gparted.<br />
- Ver que dice TestDisk, pero no escribir cambios, hasta que estemos seguros.<br />
Tomar una decisión precipitada puede llevarnos a empeorarlo mas.<br />
Usar mucho <a href="http://google.es">google</a>, y si hace falta (como es mi caso) buscar información sobre como funciona el FileSystem y así poder averiguar que ha pasado.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/recuperar-particion-ext2-o-ext3-recuperar-superblock/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como cambiar unas teclas por otras (Ahora en Linux)</title>
		<link>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-ahora-en-linux</link>
		<comments>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-ahora-en-linux#comments</comments>
		<pubDate>Sun, 20 Dec 2009 06:59:06 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=174</guid>
		<description><![CDATA[Ya cansado de windows, me puse Debian GNU/Linux en el portátil. La configuración ha sido muy sencilla, no he tenido muchos problemas (relativamente). Ya lo último que me faltaba para estar igual o mejor que en linux era cambiar mis teclas de inicio y fin por re pag y av pag respectivamente. A si que [...]]]></description>
			<content:encoded><![CDATA[<p>Ya cansado de windows, me puse <a href="http://debian.org">Debian GNU/Linux</a> en el portátil. La configuración ha sido muy sencilla, no he tenido muchos problemas (relativamente). Ya lo último que me faltaba para estar igual o mejor que en linux era cambiar mis teclas de inicio y fin por re pag y av pag respectivamente.<br />
A si que investigando por google, hoy di con la solución (llevo varios días tras ello, pero hasta hoy no funcionó).<br />
Gracias a la lista de <a href="http://www.mail-archive.com/debian-user-spanish@lists.debian.org/msg181033.html">debian</a> y a <a href="http://cweiske.de/howto/xmodmap/allinone.html">esta guía</a> lo he conseguido. Como?<br />
<span id="more-174"></span><br />
Primero hay que averiguar cual es el keycode de la tecla(s) en cuestion. Para ello usamos el comando xev:<br />
<code>Vostro:/home/alwar#  xev</code></p>
<p>Este nos abre una ventana y según movamos el ratón por ella o presionemos teclas irán saliendo mensaje en la consola.<br />
Presionamos la tecla que queramos averiguar y no saldrá algo como esto:<br />
<code><br />
KeyPress event, serial 33, synthetic NO, window 0x4000001,<br />
&nbsp;&nbsp;&nbsp;root 0x13b, subw 0x0, time 22797201, (168,-8), root:(173,41),<br />
&nbsp;&nbsp;&nbsp;state 0x0, keycode 105 (keysym 0xff57, End), same_screen YES,<br />
&nbsp;&nbsp;&nbsp;XLookupString gives 0 bytes:<br />
&nbsp;&nbsp;&nbsp;XmbLookupString gives 0 bytes:<br />
&nbsp;&nbsp;&nbsp;XFilterEvent returns: False</code><br />
<code><br />
KeyRelease event, serial 33, synthetic NO, window 0x4000001,<br />
&nbsp;&nbsp;&nbsp;root 0x13b, subw 0x0, time 22797342, (168,-8), root:(173,41),<br />
&nbsp;&nbsp;&nbsp;state 0x0, keycode 105 (keysym 0xff57, End), same_screen YES,<br />
&nbsp;&nbsp;&nbsp;XLookupString gives 0 bytes:<br />
&nbsp;&nbsp;&nbsp;XFilterEvent returns: False<br />
</code><br />
Nos fijamos donde pone keycode 105. Ese es el código que necesitamos asociar a un <a href="http://zator.com/Hardware/H7_1_2bw1.htm">keysym</a><br />
En esa página vienen muchas constantes simbólicas asociadas a un kernel 2.4. Los números en hexadecimal no nos valen para nada, quedaros solo con el nombre de la tecla.</p>
<p>Una vez halláis recopilado los keycodes y keysyms pocederemos a crear un archivo muy sencillo con la estructura:<br />
KEYCODE #keycode = keysym</p>
<p>En mi caso quedó esto:<br />
<code>keycode 99 = Home<br />
keycode 105 = End<br />
keycode 97 = Prior<br />
keycode 103 = Next<br />
</code></p>
<p>Lo guardáis donde queráis (preferiblemente en /home/user/.xmodmap) y lo probamos con:<br />
<code>xmodmap /home/user/.xmodmap</code><br />
E inmediatamente podéis probar si funcionan los cambios sobre el teclado. Si no funciona, revisar el archivo o los keycodes/keysym. Yo al principio usba los keycodes dados por showkey -k y no me funcionaba correctamente (me daba codigos pertenecientes a otras teclas).</p>
<p>Si os funciona, pues añadirlo a algún script de inicio o donde corresponda a vuestro entorno de escritorio (para gnome en Sistema > Preferencias > Sesiones se pueden añadir comandos personalizado para ejecutar al inicio.)</p>
<p>Feliz Navidad!</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-ahora-en-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

