domingo, 12 de abril de 2015

Sensor Ultrasónico en Arduino sin pulseIn ni Interupciones

Este post es probable que no parezca interesante, pero tiene su gracia.

Arduino cuenta con intrucciones como micros(), millis() y seconds(); las cuales incrementan un contador desde que arranca el programa y de acuerdo a su resolución, el desbordamiento va desde minutos hasta días.

Por lo leido en los foros de Arduino, la función PulseIn, usada por algunos para la lectura de sensor ultrasonico.


El siguiente es un código que hice solo como prueba para no usar PulseIn, pero con la ayuda de la intrucción micros()


int trig = 7;
int echo = 6;
int led = 13;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
  pinMode (led, OUTPUT);
  

}
int count1=0, count2=0;
int valor;
void loop() {
  // put your main code here, to run repeatedly:
  count1 =count2 = 0;
  digitalWrite(trig,LOW);
  delay(1);
  digitalWrite(trig,HIGH);
  delayMicroseconds(10);
  digitalWrite(trig,LOW);
  
  
  while(!digitalRead(echo)){}
    count1 = micros();
  while(digitalRead(echo))
  {
  }
  count2 = micros();
  valor = count2-count1; 
  int cm = (valor/2)/29.1;
  Serial.print(valor);
  Serial.println(" ticks");
  Serial.print(cm);
  Serial.println(" cm");
  
  delay(250);
  digitalWrite(led,LOW);
}
Se realizo un comprativo entre este código y el que usa pulseIn, tal comparativo se utilizó un vaso con agua y en sensor como medido de distancia hacia el agua, la cantidad de muestras para ambos casos fue de 113 y se debe tomar en cuenta que la colocacion del sensor no fue la mas adecuada.

miércoles, 1 de abril de 2015

Manjaro Linux, casi sin problemas por el momento Intel graphics en Gateway Mx6947

Esta laptop viejita, desde la cual estoy escribiendo, aun funciona muy bien y tiene Manjaro Linux desde el 2013 y casi no ha dado problemas, solo uno con la tarjeta de video Intel que trae
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03) ,

ya que marcaba un error con ciertas aplicaciones, entre ellas
  •  scilab 
  • vlc con algunos videos 
  • captura de mi escritorio con gtkRecordMyDesktop 
Pero como hay de todo en el foro de ArchLinux (de donde viene Manjaro) encontre esto
https://wiki.archlinux.org/index.php/Intel_graphics#InstallationSNA issues 

 From man 4 intel: There are a couple of backends available for accelerating the DDX. "UXA" (Unified Acceleration Architecture) is the mature backend that was introduced to support the GEM driver model. It is in the process of being superseded by "SNA" (Sandybridge's New Acceleration). Until that process is complete, the ability to choose which backend to use remains for backwards compatibility. SNA is the default acceleration method in xf86-video-intel. If you are experience issues with SNA, try using UXA instead, which can be done by creating an X configuration file containing the following:
 /etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
 Identifier "Intel Graphics"
Driver "intel"
 Option "AccelMethod" "uxa"
EndSection 

El problema es que mi distro, no tiene en esa dirección el archivo :S

[miguel@casita ~]$ cd /etc/X11/xorg.conf.d/
[miguel@casita xorg.conf.d]$ ls 20-keyboard.conf 90-mhwd.conf@ 

Note que hay un link simbolico en la carpeta referida en el foro, por ello decidí echarme a la mar y navegar entre los directorios del etc

[miguel@casita xorg.conf.d]$ cd /etc/X11/
 [miguel@casita X11]$ ls mhwd.d/ xinit/ xorg.conf.d/
 [miguel@casita X11]$ cd mhwd.d/
[miguel@casita mhwd.d]$ ls intel.conf
[miguel@casita mhwd.d]$ less intel.conf 

 Aquí fue donde encontre el dichoso Option "AceelMethod" "sna" y lo cambie por uxa tal y como lo recomiendan y listo!!!!

incluso ya puedo correr el glxgear de open gl

Finalmente una imagen de mi lap viejita