compra de la placa arduino duemilanove
Re: compra de la placa arduino duemilanove
Muchísimas gracias por la aportación!!!
El caso es que no sé como mover un servomotor 90 grados.
Pensaa que sería algo tan simple com decire pin 3 escribir 90 pero creo que falta esta función:
attach(int)
Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
(sacado de arduino.cc).
Es muy complicado portarla a autoit?
Saludos
El caso es que no sé como mover un servomotor 90 grados.
Pensaa que sería algo tan simple com decire pin 3 escribir 90 pero creo que falta esta función:
attach(int)
Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
(sacado de arduino.cc).
Es muy complicado portarla a autoit?
Saludos
Re: compra de la placa arduino duemilanove
Adolfito121 escribió:Muchísimas gracias por la aportación!!!
El caso es que no sé como mover un servomotor 90 grados.
Pensaa que sería algo tan simple com decire pin 3 escribir 90 pero creo que falta esta función:
attach(int)
Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
(sacado de arduino.cc).
Es muy complicado portarla a autoit?
Saludos
humm...Adolfito121 escribió:Muchísimas gracias por la aportación!!!
El caso es que no sé como mover un servomotor 90 grados.
Pensaa que sería algo tan simple com decire pin 3 escribir 90 pero creo que falta esta función:
attach(int)
Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
(sacado de arduino.cc).
Es muy complicado portarla a autoit?
Saludos
esque yo no soy muy entendido en este tema.. por eso cree estas funciones en autoit..
pero los servos no podian moverse simplemente con un analogwrite?
si no quizas se podria implementar esta funcion.
prueba y me dices.
x cierto.. que tal te van las demas funciones?
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
Re: compra de la placa arduino duemilanove
Gracias por responder.
El caso en que para lo que quiero la placa sólo compré servos y la Arduino Uno
Así que no he podido probar el tema de los leds :(
he probado con tus archivos au3 y la dll a modificar el arduinotest.au3 que habías colgado:
pero nada. En todos los tutoriales ue he leído los servos tienen un pin que ha de ir conectado a una entrada digital PWM (yo en este caso uso la 3) y la placa a tengo en el puerto COM4, pero no hay manera de que me haga caso
(me imagino que si no se hace el paso...
...la placa no sabe que ese pin debe pilar valores de 0 a 180 (ni idea, soy MUY novato).
Alguna idea? Saludos
El caso en que para lo que quiero la placa sólo compré servos y la Arduino Uno
Así que no he podido probar el tema de los leds :(
he probado con tus archivos au3 y la dll a modificar el arduinotest.au3 que habías colgado:
Código: Seleccionar todo
#include <libreriav2.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("PRUEBAS ARDUINO", 240, 165, -1, -1)
$Button2 = GUICtrlCreateButton("90", 20, 25, 200, 50, $WS_GROUP)
$Button3 = GUICtrlCreateButton("0", 20, 85, 200, 50, $WS_GROUP)
GUISetState(@SW_SHOW)
conecta(4,'9600')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button2
digitalwrite(3,"90")
Case $button3
digitalwrite(3,"0")
EndSwitch
WEnd
(me imagino que si no se hace el paso...
Código: Seleccionar todo
attach(int)
Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
Alguna idea? Saludos
Re: compra de la placa arduino duemilanove
prueba a en vez de hacer digitalwrite() analogwrite() a el pin pwm.Adolfito121 escribió:Gracias por responder.
El caso en que para lo que quiero la placa sólo compré servos y la Arduino Uno
Así que no he podido probar el tema de los leds :(
he probado con tus archivos au3 y la dll a modificar el arduinotest.au3 que habías colgado:
pero nada. En todos los tutoriales ue he leído los servos tienen un pin que ha de ir conectado a una entrada digital PWM (yo en este caso uso la 3) y la placa a tengo en el puerto COM4, pero no hay manera de que me haga casoCódigo: Seleccionar todo
#include <libreriav2.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PRUEBAS ARDUINO", 240, 165, -1, -1) $Button2 = GUICtrlCreateButton("90", 20, 25, 200, 50, $WS_GROUP) $Button3 = GUICtrlCreateButton("0", 20, 85, 200, 50, $WS_GROUP) GUISetState(@SW_SHOW) conecta(4,'9600') While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $button2 digitalwrite(3,"90") Case $button3 digitalwrite(3,"0") EndSwitch WEnd
(me imagino que si no se hace el paso...
...la placa no sabe que ese pin debe pilar valores de 0 a 180 (ni idea, soy MUY novato).Código: Seleccionar todo
attach(int) Turn a pin into a servo driver. Calls pinMode. Returns 0 on failure.
Alguna idea? Saludos
con digitalwrite() o mandas 5V o mandas 0V. por lo que solo tiene dos posiciones el servo. que no se mueva, y vuelta completa.
si lo haces con analogwrite() puedes mandarle una señal intermedia. 5V tendrias que mandarle 255 y para 0V 0 por lo que tienes que hacer la equivalencia para saver que tendrias que mandarle.
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
Re: compra de la placa arduino duemilanove
Gracias por la ayuda.
Con analogwrite no he conseguido nada
Con este ejemplo:
Cuando le doy al botón $button2 en la aruino se ilumina un segundo una lucecita que tiene al lado marcado RX y acto seguido otra que pone TX, pero no se mueve ni un ápice :(
Con analogwrite no he conseguido nada
Con este ejemplo:
Código: Seleccionar todo
#include <libreriav2.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("PRUEBAS ARDUINO", 240, 165, -1, -1)
$Button2 = GUICtrlCreateButton("90", 20, 25, 200, 50, $WS_GROUP)
$Button3 = GUICtrlCreateButton("0", 20, 85, 200, 50, $WS_GROUP)
GUISetState(@SW_SHOW)
conecta(4,'9600')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button2
analogwrite(3,"240")
Case $button3
analogwrite(3,"0")
EndSwitch
WEnd
Re: compra de la placa arduino duemilanove
la funcion analogwrite() no me acabo de funcionar del todo bien..Adolfito121 escribió:Gracias por la ayuda.
Con analogwrite no he conseguido nada
Con este ejemplo:
Cuando le doy al botón $button2 en la aruino se ilumina un segundo una lucecita que tiene al lado marcado RX y acto seguido otra que pone TX, pero no se mueve ni un ápice :(Código: Seleccionar todo
#include <libreriav2.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("PRUEBAS ARDUINO", 240, 165, -1, -1) $Button2 = GUICtrlCreateButton("90", 20, 25, 200, 50, $WS_GROUP) $Button3 = GUICtrlCreateButton("0", 20, 85, 200, 50, $WS_GROUP) GUISetState(@SW_SHOW) conecta(4,'9600') While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $button2 analogwrite(3,"240") Case $button3 analogwrite(3,"0") EndSwitch WEnd
analiza los codigos y intenta solucionar el problema, cuando yo tenga tiempo intentare crear otras funciones mejores..
dejam tu correo para poder contactar contigo cuando lo aga o azte un usuario en el foro.
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
Re: compra de la placa arduino duemilanove
Gracias por la ayuda.
La verdad es que es un tema que me apasiona este de mover servos y motores pero soy nulo :(
La verdad es que es un tema que me apasiona este de mover servos y motores pero soy nulo :(
Re: compra de la placa arduino duemilanove
He encontrado una libreria llamada Firmata que ya pone al arduino esperando comandos por el puerto com y configuarado para mover servos (o eso he creído entender).
Este es el .pde que hay que subir al arduino:
En principio ahora deberíamos poder mandar directamente los valores al puerto COM donde este el arduino y al pin que queramos.
Voy a hacer pruebas con la CommMG.au3, pero sigo sin tener ni pajolera idea. Encuentro muchísimos ejemplos de como pasar un pde a la arduino y que ella vaya haciendo un loop con el mismo movimiento todo el rato y ninguno que diga como hacer una gui con un botón y mandar el servo a na posición
Saludos
Este es el .pde que hay que subir al arduino:
Código: Seleccionar todo
/* This firmware supports as many servos as possible using the Servo library
* included in Arduino 0017
*
* TODO add message to configure minPulse/maxPulse/degrees
*
* This example code is in the public domain.
*/
#include <Servo.h>
#include <Firmata.h>
Servo servos[MAX_SERVOS];
void analogWriteCallback(byte pin, int value)
{
if (IS_PIN_SERVO(pin)) {
servos[PIN_TO_SERVO(pin)].write(value);
}
}
void setup()
{
byte pin;
Firmata.setFirmwareVersion(0, 2);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
for (pin=0; pin < TOTAL_PINS; pin++) {
if (IS_PIN_SERVO(pin)) {
servos[PIN_TO_SERVO(pin)].attach(PIN_TO_DIGITAL(pin));
}
}
Firmata.begin(57600);
}
void loop()
{
while(Firmata.available())
Firmata.processInput();
}
Voy a hacer pruebas con la CommMG.au3, pero sigo sin tener ni pajolera idea. Encuentro muchísimos ejemplos de como pasar un pde a la arduino y que ella vaya haciendo un loop con el mismo movimiento todo el rato y ninguno que diga como hacer una gui con un botón y mandar el servo a na posición
Saludos
- BasicOs
- Site Admin
- Mensajes: 2090
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: compra de la placa arduino duemilanove
Gracias por compartir el código para enviarlo al Arduino,
Si comentas tu experiencia con la librería Au3 CommMG.au3 son bienvenidas,
Salu22:)
Si comentas tu experiencia con la librería Au3 CommMG.au3 son bienvenidas,
Salu22:)
Re: compra de la placa arduino duemilanove
en estos momentos estoy enfrascado con el tema...Ado121 escribió:He encontrado una libreria llamada Firmata que ya pone al arduino esperando comandos por el puerto com y configuarado para mover servos (o eso he creído entender).
Este es el .pde que hay que subir al arduino:
En principio ahora deberíamos poder mandar directamente los valores al puerto COM donde este el arduino y al pin que queramos.Código: Seleccionar todo
/* This firmware supports as many servos as possible using the Servo library * included in Arduino 0017 * * TODO add message to configure minPulse/maxPulse/degrees * * This example code is in the public domain. */ #include <Servo.h> #include <Firmata.h> Servo servos[MAX_SERVOS]; void analogWriteCallback(byte pin, int value) { if (IS_PIN_SERVO(pin)) { servos[PIN_TO_SERVO(pin)].write(value); } } void setup() { byte pin; Firmata.setFirmwareVersion(0, 2); Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); for (pin=0; pin < TOTAL_PINS; pin++) { if (IS_PIN_SERVO(pin)) { servos[PIN_TO_SERVO(pin)].attach(PIN_TO_DIGITAL(pin)); } } Firmata.begin(57600); } void loop() { while(Firmata.available()) Firmata.processInput(); }
Voy a hacer pruebas con la CommMG.au3, pero sigo sin tener ni pajolera idea. Encuentro muchísimos ejemplos de como pasar un pde a la arduino y que ella vaya haciendo un loop con el mismo movimiento todo el rato y ninguno que diga como hacer una gui con un botón y mandar el servo a na posición
Saludos
as provado el programa de ejemplo? http://firmata.org/wiki/Main_Page
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- BasicOs
- Site Admin
- Mensajes: 2090
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: compra de la placa arduino duemilanove
Hola,
No tengo la Arduino para probarlo.
Felicidades por el proyecto, parece interesante, lo de conectar el hard del arduino con varios programas,
Salu22:)
No tengo la Arduino para probarlo.
Felicidades por el proyecto, parece interesante, lo de conectar el hard del arduino con varios programas,
Salu22:)
Re: compra de la placa arduino duemilanove
Bueno, a mi de momento me funiona pero de manera un poco limitada.
El .pde que he subido a la arduino no es el mismo que os he colgado anteriormente.
El nuevo .pde que he encontrado es este:
Con este código cargado en la arduino cada vez que le mandemos por el puerto com un número y el signo + o el - ("90+") la placa moverá el servomotor al ángulo nueo (osea, la posición actual más el dato enviado).
Todo esto es posible gracias a la CommMG.au3 y a la libreria de Xapu (muchísimas gracias por tu aportación!!!).
Yo me he hecho un script de prueba:
Fijaros que he incrustado en mi miniscript la libreria de xapu (no me gusta el tema de que un script llame a otro que a su vez llame a otro).
Para que funcione hay que tener en la carpeta include el CommMG.au3.
Para mi ejemplo yo tengo la commg.dll en el mismo directorio que el programa.
Yo preferiría poder decirle a la placa que envíe el servo al ángulo 120, sin tener que depender del punto en el que me encuentre en ese momento, pero imagino que ya sería cosa de tocar el .pde que se sube a la arduino o tirar de analogread().
Aunque probé a hacer:
(no así, pero para que entendais qué quería hacer), aunque no funcionó.
Alguien más está probando cositas?
Saludos
El .pde que he subido a la arduino no es el mismo que os he colgado anteriormente.
El nuevo .pde que he encontrado es este:
Código: Seleccionar todo
#include <Servo.h>
Servo myServo;
const int servoPin = 9; // the pin the servo is connected to
int val = 0; // a value accumulated from data on the serial port
int angle = 90; // the current angle of the servo
void setup()
{
Serial.begin(9600);
myServo.attach(servoPin);
myServo.write(angle); // center the servo
}
void loop()
{
if ( Serial.available())
{
char ch = Serial.read();
if(ch >= '0' && ch <= '9') // is ch a number?
val = val * 10 + ch - '0'; // yes, accumulate the value
else if(ch == '-') // is this the minus sign?
{
angle = angle - val;
if(angle < 0)
angle = 0;
myServo.write(angle); // write the new angle
val = 0;
}
else if(ch == '+') // is this the plus sign?
{
angle = angle + val;
if(angle > 180)
angle = 180;
myServo.write(angle); // write the new angle
val = 0;
}
}
}
Todo esto es posible gracias a la CommMG.au3 y a la libreria de Xapu (muchísimas gracias por tu aportación!!!).
Yo me he hecho un script de prueba:
Código: Seleccionar todo
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=ico.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Language=1027
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <CommMG.au3>
#include <Misc.au3>
_CommSetDllPath(@ScriptDir & "\commg.dll")
conecta(4, '9600')
GUICreate("Mover servo", 400, 500, -1, -1)
GUISetState(@SW_SHOW)
$boton1 = GUICtrlCreateButton("DERECHA", 100, 200, 100, 200)
$boton2 = GUICtrlCreateButton("IZQUIERDA", 200, 200, 100, 200)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $boton1
analogwrite(9, "+90")
Case $msg = $boton2
analogwrite(9, "-90")
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
;### Tidy Error -> "wend" is closing previous "case" on line 25
WEnd
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func conecta($port, $baud)
If $baud = "" Then $baud = 9600
Local $sportSetError
ConsoleWrite(_CommListPorts(0))
_CommSetPort($port, $sportSetError, 9600, 8, "none", 2, 1)
If $sportSetError = '' Then
Return 1
ConsoleWrite("using " & _CommGetVersion(1))
Else
ConsoleWrite("error")
Return $sportSetError
EndIf
EndFunc ;==>conecta
;=====================================================================================
;
; Function Name: analogwrite($pin,$stat)
; Description: le da un valor analogico $stat al pin $pin
; Parameters: $pin : el pin al que se envia el valor
; $stat : el valor analogico a enviar al pin
;
; Returns: on success- 1
; on failure - @error llamando a la Dll del commMG.au3
;======================================================================================
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func analogwrite($pin, $stat)
Dim $valorx, $valores
If $pin > 13 Then SetError(1, "pin no existe", -1)
If $stat < 0 Or $stat > 255 Then SetError(2, "valor mallor que 255 o menor que 0", -2)
If $pin > 9 Then
$pin = cambia($pin)
EndIf
_CommSendstring("b" & $pin & $stat)
Return 1
EndFunc ;==>analogwrite
;=====================================================================================
;
; Function Name: analogread($pin)
; Description: lee el valor analogico del pin $pin
; Parameters: $pin : pin del arduino del que se va a leer el valor
;
; Returns:
; on success- el valor
; on failure - @error llamando a la dll del commMG.au3
;======================================================================================
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func analogread($pin)
If $pin > 13 Then SetError(1, "pin no existe", -1)
If $pin > 9 Then
$pin = cambia($pin)
EndIf
_CommSendstring("a" & $pin)
Sleep(100)
$valu = _CommGetstring()
Return $valu
EndFunc ;==>analogread
;=====================================================================================
;
; Function Name: digitalread($pin,$stat)
; Description: lee el valor analogico de un pin del arduino
; Parameters: $pin: el pin a leer
;
; Returns:
; on success- el valor analogico del pin 1 o 0
; on failure - @error set to -2 si el valor de stat no es low o high
; on failure - @error llamando a la dll del commMG.au3
;======================================================================================
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func digitalread($pin)
If $pin > 13 Then SetError(1, "pin no existe", -1)
If $pin > 9 Then
$pin = cambia($pin)
EndIf
_CommSendstring('c' & $pin)
Sleep(125)
Return _CommGetstring()
EndFunc ;==>digitalread
;=====================================================================================
;
; Function Name: digitalwrite($pin,$stat)
; Description: activa o desactiva un pin de arduino
; Parameters: $pin: suma de dos numeros menores que 9 que sumen el numero de tu Ping
; ejemplo: mi pin es el 12 pues $pin sera = a 6+6 o 7+5
; $stat- 0:desactiva 1:activa
; Returns: always 1
; on success- 1
; on failure - @error set to -2 si el valor de stat no es low o high
; on failure - @error llamando a la dll del commMG.au3
;======================================================================================
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func digitalwrite($pin, $stat)
Dim $valorx, $valores
If $pin > 13 Then SetError(1, "pin no existe", -1)
If $stat <> 1 Or $stat <> 0 Then SetError(2, "digital write no es HIGH o LOW", -2)
If $pin > 9 Then
$pin = cambia($pin)
EndIf
$stat = 'd' & $pin & $stat
_CommSendstring($stat)
Return 1
EndFunc ;==>digitalwrite
;funcion para enviar el numero de pin en un solo bit
;### Tidy Error -> while Not closed before "Func" statement.
;### Tidy Error -> "func" cannot be inside any IF/Do/While/For/Case/Func statement.
Func cambia($let)
Switch ($let)
Case 10
Return "a"
Case 11
Return "b"
Case 12
Return "c"
Case 13
Return "d"
EndSwitch
EndFunc ;==>cambia
;### Tidy Error -> while is never closed in your script.
Para que funcione hay que tener en la carpeta include el CommMG.au3.
Para mi ejemplo yo tengo la commg.dll en el mismo directorio que el programa.
Yo preferiría poder decirle a la placa que envíe el servo al ángulo 120, sin tener que depender del punto en el que me encuentre en ese momento, pero imagino que ya sería cosa de tocar el .pde que se sube a la arduino o tirar de analogread().
Aunque probé a hacer:
Código: Seleccionar todo
$posicionactualdelservo = analogread(9)
$input=GUICtrlCreateInput($servo,10,10,50,40)
GUICtrlSetData($input,$posicionactualdelservo)
Alguien más está probando cositas?
Saludos
- BasicOs
- Site Admin
- Mensajes: 2090
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: compra de la placa arduino duemilanove
Aquí mando un link con un HOw to para empezar con Arduino, cuesta unos +-22€ más gastos de envio.
Tutorial de Arduino
Salu22:)
edit:
Otro con discusiones sobre montaje y precios
Tutorial de Arduino
Salu22:)
edit:
Otro con discusiones sobre montaje y precios
Re: compra de la placa arduino duemilanove
se que lo mejor seria traspasar la libreria firmata para el arduino.. pero como no tengo ni ganas ni mucha idea de como hacerlo..
podemos segir creando pequeños programas con intenciones predeterminadas ^^
os presento un programilla que usa el sensor de humedad y temperatura para crear una grafica con la tª ke nos saca el arduino.
colgare los codigos i el eskema del circuito lo antes posible.. pero eske aora mismo lo tengo todo desordenado jeje
espero ke os sirva de algo :P
podemos segir creando pequeños programas con intenciones predeterminadas ^^
os presento un programilla que usa el sensor de humedad y temperatura para crear una grafica con la tª ke nos saca el arduino.
colgare los codigos i el eskema del circuito lo antes posible.. pero eske aora mismo lo tengo todo desordenado jeje
espero ke os sirva de algo :P
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: compra de la placa arduino duemilanove
Jejejeje....que chulo .
Muy bueno. La proxima vez utiliza un capturador de video de lo que hay en pantalla y así se ve mejor todo lo del ordenador.
Saludos.
Muy bueno. La proxima vez utiliza un capturador de video de lo que hay en pantalla y así se ve mejor todo lo del ordenador.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).