sshpass -p
Etiquetas
555
74HC04
74HC14
74HC165
74LS04
acentos
ADC10
Amstrad
archivo
arduino
aristóteles
armbian
array
ass
at
backup
base64
bash
Basho
bc
beethoven
Biblia
blog
bucle
c
c++
c++11
c++17
C005
cadena
Carmina Burana
casting
CD4017
CD4040
Cine
clases
Colores
connect
Consolación a Helvia
Consolación a Marcia
Consolación a Polibio
constante
corsair
CPC
Cristal 32Khz
css
cursor mouse
cut
daemon
date
dead keys
Debian
directorio
disco duro
DS32kHz
electricidad
Electrónica
ensamblador
entryList
epicureismo
Estadística
estoicismo
felicidad
ffmpeg
filePath
filosofia
Filosofía
firefox
flac
for
fstab
funcion
Gargantúa
gastronomía
gilgamesh
Ginott
gmp
gpt
grep
gtts
Hobbes
hotkeys
html
imagemagick
inline
Javascript
kde
kernel modulos
latex
ldr
lib-notify
Linux
Literatura
ludoteca
macro
mapa de bits
Matroska
mega
Microsoft Word
Milan Kundera
mkvextract
mkvinfo
mount
mp3
mplayer
MSP430
msp430F5529
MSP432
Multimedia
Musica
oop
orange_pi
pato
PIR
PL9823
Platón
poesía
POO en C++
pulseaudio
puntero
PWM
pygame
pyqt
python
QAction
qApp
QApplication
QByteArray
QDialog
Qdir
QFile
QFileDialog
QImage
qlabel
QList
QListWidget
QMessagebox
QMouseEvent
qpainter
QPalette
QPixmap
QProcess
QRegularExpression
QRegularExpressionMatchIterator
QString
QStringList
Qt
qt5
QToolbar
quijote
QVector
qwidget
R
Rabelais
ratón
relé
Resonador cerámico
samba
San Agustín
screen
Séneca
signal
slot
smart
smartctl
sox
srt
static const
stdarg.h
subtítulos
Symbian
tar
teléfonos móviles
temperatura
temperatura cpu
Temporizador
tesseract
Timer
timestamp
Trigonometría
tts
tutorial
uid
unicode
user
USI
va_arg
va_end
va_list
va_start
velocidad ventilador
Voltaire
wallpaper
xboxdrv
xinput
xrandr
Z80
zip
sábado, abril 08, 2017
lunes, abril 03, 2017
Añadir un usario a la Orange Pi Zero
1. Crear el usuario
adduser
2. Si algo falla:
2a. Borrar el usuario
userdel -r
2b. Añadir el usuario a un grupo:
adduser
2c. Ver los grupos disponibles:
cat /etc/group
adduser
2. Si algo falla:
2a. Borrar el usuario
userdel -r
2b. Añadir el usuario a un grupo:
adduser
2c. Ver los grupos disponibles:
cat /etc/group
martes, marzo 21, 2017
Screen en la orange pi zero
La conexion por ssh con la OPI Zero se puede interrumpir. Para mantener la sesión abierta aunque la conexión se pierda hay una utilidad de linux llamada screen.
Para empezar:
screen
Para recomenzar tras la perdida de la conexión:
screen -r
Para ver la misma sesión desde dos dispositivos
screen -x
Crear nueva ventana:
Ctrl+A "C"
Cerrar una ventana desde bash
exit
Siguiente ventana:
Ctrl+A "N"
Previa ventana:
Ctrl+A "P"
Más info aquí: https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
Para empezar:
screen
Para recomenzar tras la perdida de la conexión:
screen -r
Para ver la misma sesión desde dos dispositivos
screen -x
Crear nueva ventana:
Ctrl+A "C"
Cerrar una ventana desde bash
exit
Siguiente ventana:
Ctrl+A "N"
Previa ventana:
Ctrl+A "P"
Más info aquí: https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
lunes, marzo 20, 2017
Lectura de la temperatura de la CPU de la Orange Pi Zero desde python
#Esta función retorna un int con la temperatura de la CPU
def getTemperature():
file = open("/sys/class/thermal/thermal_zone0/temp","r")
t = file.read()
file.close()
return int (t)
def getTemperature():
file = open("/sys/class/thermal/thermal_zone0/temp","r")
t = file.read()
file.close()
return int (t)
Etiquetas:
orange_pi,
python,
temperatura
viernes, marzo 10, 2017
GPIO en Orange Pi Zero
GPIO
Instalar orangepi_PC_gpio_pyH3.
Aquí lo explican: http://www.akirasan.net/sensor-de-movimientos-hc-sr501-conectado-por-gpio/
Los ejemplos están aquí: https://github.com/duxingkei33/orangepi_PC_gpio_pyH3/tree/master/examples
Blink:
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
import sys
from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
led = port.PG6
gpio.init()
gpio.setcfg(led, gpio.OUTPUT)
print "Comenzando"
for n in range (100):
#print "Encendido"
gpio.output(led,1)
sleep(0.1) # 100ms
#print "Apagado"
gpio.output(led,0)
sleep(0.1) # 100ms
print "Terminado"
Boton:
Encender y apagar un led con un switch.
El led va en PG6
El switch va en PA14
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
import sys
from time import sleep
from time import time
from pyA20.gpio import gpio
from pyA20.gpio import port
# los pines que se van a usar.
led = port.PG6
button = port.PA14
#Inicializar el módulo es lo primero.
gpio.init()
gpio.setcfg(led, gpio.OUTPUT)
gpio.setcfg(button, gpio.INPUT)
gpio.pullup(button, 0) # clear pullup
gpio.pullup(button, gpio.PULLUP) #enable pull-up
#funciones
def smallPause ():
sleep(0.1) #100 ms
def longPause ():
sleep(0.5) # 500 ms
def ledOn():
gpio.output(led,1)
def ledOff ():
gpio.output(led,0)
def welcome():
for n in range (2):
ledOn ()
smallPause()
ledOff()
#longPause()
ledOn()
#longPause()
ledOff()
longPause()
print "Comenzando"
welcome()
lastTime=0
estado = 0
while True:
if gpio.input(button) == gpio.LOW:
# rutina anti-rebote del pulsador.
t = time() - lastTime
if (t > 0.5 ): #no permite pulsaciones con menos de 0.5 Segs de intervalo
if estado == 1:
ledOff()
estado = 0
else:
ledOn()
estado = 1
lastTime = time()
sleep(0.1) # Una pausa de 100 ms dentro del bucle para no poner la cpu 100%)
print "Terminado"
Instalar orangepi_PC_gpio_pyH3.
Aquí lo explican: http://www.akirasan.net/sensor-de-movimientos-hc-sr501-conectado-por-gpio/
Los ejemplos están aquí: https://github.com/duxingkei33/orangepi_PC_gpio_pyH3/tree/master/examples
Blink:
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
import sys
from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
led = port.PG6
gpio.init()
gpio.setcfg(led, gpio.OUTPUT)
print "Comenzando"
for n in range (100):
#print "Encendido"
gpio.output(led,1)
sleep(0.1) # 100ms
#print "Apagado"
gpio.output(led,0)
sleep(0.1) # 100ms
print "Terminado"
Boton:
Encender y apagar un led con un switch.
El led va en PG6
El switch va en PA14
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
import sys
from time import sleep
from time import time
from pyA20.gpio import gpio
from pyA20.gpio import port
# los pines que se van a usar.
led = port.PG6
button = port.PA14
#Inicializar el módulo es lo primero.
gpio.init()
gpio.setcfg(led, gpio.OUTPUT)
gpio.setcfg(button, gpio.INPUT)
gpio.pullup(button, 0) # clear pullup
gpio.pullup(button, gpio.PULLUP) #enable pull-up
#funciones
def smallPause ():
sleep(0.1) #100 ms
def longPause ():
sleep(0.5) # 500 ms
def ledOn():
gpio.output(led,1)
def ledOff ():
gpio.output(led,0)
def welcome():
for n in range (2):
ledOn ()
smallPause()
ledOff()
#longPause()
ledOn()
#longPause()
ledOff()
longPause()
print "Comenzando"
welcome()
lastTime=0
estado = 0
while True:
if gpio.input(button) == gpio.LOW:
# rutina anti-rebote del pulsador.
t = time() - lastTime
if (t > 0.5 ): #no permite pulsaciones con menos de 0.5 Segs de intervalo
if estado == 1:
ledOff()
estado = 0
else:
ledOn()
estado = 1
lastTime = time()
sleep(0.1) # Una pausa de 100 ms dentro del bucle para no poner la cpu 100%)
print "Terminado"
Puesta en marcha de la Orange pi Zero
1. Descargar Armbian
Leer la página de getting started: https://docs.armbian.com/User-Guide_Getting-Started/
El sistema operativo tiene que instalarse en una microSD.
La página de descarga para la Orange Pi Zero: https://www.armbian.com/orange-pi-zero/
Voy a instalar la imagen de Debian Jessie: https://www.armbian.com/donate/?f=https://dl.armbian.com/orangepizero/Debian_jessie_default.7z
Para Guardar la imagen en la tarjeta microSD se utiliza este programa: https://etcher.io/
La versión para Linux se ejecuta como root y funciona sin problemas.
2. Primer arranque.
Para el primer arranque instalo la tarjeta microSD en la Orange Pi. Conecto el cable de red y la alimentación en el puerto micro USB. Para la alimentación un cargador de movil de 5V y 1.0A.
Esperar unos minutos .
La Orange pi se conecta al Router y recibe una IP por DHCP. Lo siguiente es conectar a la Orange pi por ssh (ssh root@
3. Repasar la página de getting started: https://docs.armbian.com/User-Guide_Getting-Started/
Actualizar el sistema:
apt-get update
apt-get upgrade
4. Configurar el wifi
Para configurar el wifi se utiliza un programa llamado nmtui
Red Hat tiene una magnífica documentación: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Networking_Config_Using_nmtui.html
También la getting started de armbian tiene información, pero lo mejor es:
a) ejecutar nmtui
b) En el menú seleccionar edit a connection
c) Editar la conexión que nos interesa.
d) Conectar: nmtui connect
e) Activar el wifi al arranque: editar el archivo /etc/rc.local y añadir la linea nmtui connect
Ejecutar shudown -h now, Retirar la alimentación y el cable de red. Al volver a encenderse, la conexión por SSH debería funcionar por wifi.
5. Arreglando las locales:
Aquí explican la solución: http://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue
Sería algo así:
$ sudo locale-gen "en_US.UTF-8"
Generating locales...
es_ES.UTF-8... done
Generation complete.
$ sudo dpkg-reconfigure locales
Generating locales...
es_ES.UTF-8... up-to-date
Generation complete.
6. Cambio de nombre
El nombre original del host, "orangepizero" me parece un poco largo. Para cambiarlo: https://wiki.debian.org/HowTo/ChangeHostname
Más cosas
Lectura de la temperatura de la cpu: http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=287
Crear un comando cpuTemp. Añadir esto a .bashrc
alias cpuTemp="echo \"Temperatura de la CPU:\" && cat /sys/class/thermal/thermal_zone0/temp"
Montar una samba shared:
aptitude install cifs-utils
mount -t cifs //192.168.1.100/tmp /mnt/samba
miércoles, octubre 05, 2016
Módulo temporizador C005
Function and Design
1. The circuit according to claim connected and set a good time resistance and supply voltage;
2. Before the power not trigger output is high;
3. Trigger terminal "falling" trigger effective immediately after the trigger output terminal goes low at the same time start the timer circuit;
4. Set the timer time to recover after the output terminal is high, wait for the next "falling" trigger;
5. The chip is not repeated triggered, meaning that continue to trigger in the period after the trigger chip output low if the trigger is invalid;
6. The trigger end of "falling" Trigger refers to the instantaneous change from high level to a low level;
7. General refers to VCC high voltage, low means 0-0.3v or GND, provided that they meet the level requirements can be;
8. trigger terminal can be connected to touch switch or microcontroller IO port or other digital circuits have a "falling" can effectively trigger;
9. The trigger can be designed to power, only to trigger a short circuit to ground, power is triggered, the time to recover after the output to a high level, waiting for the next Falling edge trigger again.
Jumpers
Consumo en standby a 3.3V, < 1mA
1. The circuit according to claim connected and set a good time resistance and supply voltage;
2. Before the power not trigger output is high;
3. Trigger terminal "falling" trigger effective immediately after the trigger output terminal goes low at the same time start the timer circuit;
4. Set the timer time to recover after the output terminal is high, wait for the next "falling" trigger;
5. The chip is not repeated triggered, meaning that continue to trigger in the period after the trigger chip output low if the trigger is invalid;
6. The trigger end of "falling" Trigger refers to the instantaneous change from high level to a low level;
7. General refers to VCC high voltage, low means 0-0.3v or GND, provided that they meet the level requirements can be;
8. trigger terminal can be connected to touch switch or microcontroller IO port or other digital circuits have a "falling" can effectively trigger;
9. The trigger can be designed to power, only to trigger a short circuit to ground, power is triggered, the time to recover after the output to a high level, waiting for the next Falling edge trigger again.
P1 in short circuit (two small solder short circuit)
timing time is equal to the resistance meter in the time multiplied by 8
times
P2 in short circuit (two small solder
short circuit) timing time is equal to the resistance meter in the time
multiplied by 64 times
P1, P2 and short
circuit (two small solder short circuit) timing time is equal to the
resistance meter in the time multiplied by 512 times
Consumo en standby a 3.3V, < 1mA
Etiquetas:
C005,
Electrónica,
Temporizador,
Timer
sábado, julio 02, 2016
martes, junio 07, 2016
Dividir un archivo FLAC y convertirlo a MP3
Este es un script en bash para dividir un archivo FLAC siguiendo las indicaciones del archivo CUE. Por último convierte los archivos FLAC a MP3
#!/bin/bash CUE_FILE="CDImage.cue" FLAC_FILE="CDImage.flac" # let's make the script a little more robust set -u # exit if the script tries to use an unbound variable set -e # exit we a command fails set -o pipefail # exit if a command in a pipe fails # Comprobaciones iniciales if [ ! -f $CUE_FILE ]; then echo "${CUE_FILE} no existe!" exit 1 fi if [ ! -f $FLAC_FILE ]; then echo "${FLAC_FILE} no existe!" exit 1 fi # dividir cuebreakpoints $CUE_FILE | shnsplit -o flac $FLAC_FILE # comprueba resultado. if [ ${PIPESTATUS[1]} -eq 0 ]; then echo OK else echo "Problema!!" exit 1 fi # metadatos cuetag $CUE_FILE split-track*.flac # rename files for a in *.flac; do if [ "$a" != "$FLAC_FILE" ]; then ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g` TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g` TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g` mv "$a" "`printf %02g $TRACKNUMBER` - $ARTIST - $TITLE.flac" fi done # Convertir a mp3 mkdir mp3 for a in *.flac; do if [ "$a" != "$FLAC_FILE" ]; then TITLE=`metaflac --show-tag=TITLE "${a}" | sed 's/.*=//'` ARTIST=`metaflac --show-tag=ARTIST "${a}" | sed 's/.*=//'` ALBUM=`metaflac --show-tag=ALBUM "${a}" | sed 's/.*=//'` DATE=`metaflac --show-tag=DATE "${a}" | sed 's/.*=//'` TRACK=`metaflac --show-tag=TRACKNUMBER "${a}" | sed 's/.*=//'` GENRE=`metaflac --show-tag=GENRE "${a}" | sed 's/.*=//'`
flac -cd "$a" | lame -b 320 --tt "${TITLE}" \ --ta "${ARTIST}" --tl "${ALBUM}" \ --ty "${DATE}" \ --tn "${TRACK}" \ --tg "${GENRE}" - "mp3/${a%.*}".mp3 fi done
domingo, enero 10, 2016
Como desbloquear el MSP432P401R Launchpad
Como desbloquear el MSP432P401R Launchpad desde VirtualBox.
Paso 1: Actualizar el firmware.
1. Enumerar los dispositivos
2a. Poner el dispositivo en modo DFU
2b. En el menú de dispositivos de Virtual Box volver a seleccionar el Launchpad, que ahora a cambiado de descripción.
3. Actualizar el firmware
4. Volver a seleccionar el Launchpad en el menú de dispositivos de Virtual Box
Paso 2: restaurar la configuración de fábrica.
1. En el menu View seleccionar Target Configurations
2. Aparece una pestaña "Target Configurations. En ella buscar el proyecto, targetConfigs, MSP432P401R.CCXML. Con el botón derecho del ratón abrir el menú y hacer click en "Launch Selected Configuration".
3. En la vista Debug, abrir el menú contextual y
a) "Show all cores"
b) Connect Target
4. En el menú Scripts, default, MSP432_Factory_Reset
Y con un poco de suerte ya funciona.
Paso 1: Actualizar el firmware.
1. Enumerar los dispositivos
2a. Poner el dispositivo en modo DFU
2b. En el menú de dispositivos de Virtual Box volver a seleccionar el Launchpad, que ahora a cambiado de descripción.
3. Actualizar el firmware
4. Volver a seleccionar el Launchpad en el menú de dispositivos de Virtual Box
Paso 2: restaurar la configuración de fábrica.
1. En el menu View seleccionar Target Configurations
2. Aparece una pestaña "Target Configurations. En ella buscar el proyecto, targetConfigs, MSP432P401R.CCXML. Con el botón derecho del ratón abrir el menú y hacer click en "Launch Selected Configuration".
3. En la vista Debug, abrir el menú contextual y
a) "Show all cores"
b) Connect Target
4. En el menú Scripts, default, MSP432_Factory_Reset
Y con un poco de suerte ya funciona.
martes, noviembre 17, 2015
PL9823 RGB Leds con controlador integrado y MSP430
Timing
El micro funciona a 16 Mhz.
#define LONG_DELAY __delay_cycles(14);
#define SHORT_DELAY __delay_cycles(1);
#define BIT_HIGH P1OUT |=BIT0; LONG_DELAY; P1OUT &= ~BIT0; SHORT_DELAY;
#define BIT_LOW P1OUT |=BIT0; SHORT_DELAY; P1OUT &= ~BIT0; LONG_DELAY;
int main(){
while(1){
sendColor(red1);
sendColor(red2);
sendColor(green1);
__delay_cycles(100000000);
sendColor(green1);
sendColor(red1);
sendColor(red2);
__delay_cycles(10000000);
}
}
El micro funciona a 16 Mhz.
#define LONG_DELAY __delay_cycles(14);
#define SHORT_DELAY __delay_cycles(1);
#define BIT_HIGH P1OUT |=BIT0; LONG_DELAY; P1OUT &= ~BIT0; SHORT_DELAY;
#define BIT_LOW P1OUT |=BIT0; SHORT_DELAY; P1OUT &= ~BIT0; LONG_DELAY;
Datos
Los datos son un array de 24 bits RGB
// (MSB.........LSB)
unsigned char red1[]={1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char red2[]={0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char red3[]={0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char green1[]={0,0,0,0,0,0,0,0, 1,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char red1[]={1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char red2[]={0,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char red3[]={0,0,0,1,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0};
unsigned char green1[]={0,0,0,0,0,0,0,0, 1,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,0};
Una función para que recibe como parametro el array con los datos del color.
void sendColor(unsigned char *color){
int n;
for (n=0; n<24 br="" n=""> if (color[n]) {
BIT_HIGH
} else {
BIT_LOW
}
}
}24>
int n;
for (n=0; n<24 br="" n=""> if (color[n]) {
BIT_HIGH
} else {
BIT_LOW
}
}
}24>
El bucle principal envia datos a tres leds conectados en serie.
int main(){
while(1){
sendColor(red1);
sendColor(red2);
sendColor(green1);
__delay_cycles(100000000);
sendColor(green1);
sendColor(red1);
sendColor(red2);
__delay_cycles(10000000);
}
}
lunes, noviembre 02, 2015
Ejecutar un script a la salida de KDE
Los scripts que se ejecutan al salir de KDE se guardan en ~/.kde/shutdown. Si el directorio no existe hay que crearlo.
Una vez guardado el script en el directorio, no olvidar hacerlo ejecutable.
Una vez guardado el script en el directorio, no olvidar hacerlo ejecutable.
jueves, agosto 06, 2015
Instalación del equalizador de pulseaudio en Debian
- apt-get install swh-plugins ladspa-sdk
- Descargar de aquí el archivo más reciente, p.j: pulseaudio-equalizer_2.7.0.2-5~webupd8~vivid0_all.deb
- dpkg -i /tmp/pulseaudio-equalizer_2.7.0.2-5~webupd8~vivid0_all.deb
- Tal vez haya que ejecutar esto: aptitude install python-gnome2
- Como usuario, ejecutar: pulseaudio-equalizer-gtk
lunes, julio 27, 2015
Instalación del resaltado de sintaxis de Arduino en Kate
1. Descargar el archivo de sintaxis
2a. Existe ~/.kde/share/apps/katepart/syntax. Copiarlo
2b. No existe:
Menu "Preferencias/Configurar kate..."
Sección "Abrir/guardar"
Pestaña "Modos y tipos de archivo"
Botón "Descargar archivos de realce"
Botón "Instalar"
Esto crea el directorio ~/.kde/share/apps/katepart/syntax con los archivos de sintaxis.
Copiar el archivo descargado.
3. Abrir un archivo ino con Kate. Si no se ve resaltado, probar a modificarlo y guardarlo.
2a. Existe ~/.kde/share/apps/katepart/syntax. Copiarlo
2b. No existe:
Menu "Preferencias/Configurar kate..."
Sección "Abrir/guardar"
Pestaña "Modos y tipos de archivo"
Botón "Descargar archivos de realce"
Botón "Instalar"
Esto crea el directorio ~/.kde/share/apps/katepart/syntax con los archivos de sintaxis.
Copiar el archivo descargado.
3. Abrir un archivo ino con Kate. Si no se ve resaltado, probar a modificarlo y guardarlo.
miércoles, junio 24, 2015
Acceso a los puertos de 16 bits del MSP430F5529
PCDIR = 0xFFFF; // Todos los pines de p5 y p6 como salida
PCSEL = 0; // seleccionada función io
PCOUT = 0; // todo a 0
//
// ... algo de codigo ...
//
PCOUT = unIntDe16Bits;
PCSEL = 0; // seleccionada función io
PCOUT = 0; // todo a 0
//
// ... algo de codigo ...
//
PCOUT = unIntDe16Bits;
martes, junio 16, 2015
viernes, febrero 27, 2015
Crear un Long a partir de 3 bytes, en C
// Guardo tres bytes en un array como unsigned char
unsigned char values[] = {0,0,0};
unsigned long number;
number = values[0] + ((unsigned int) values[1] << 8) +
((unsigned long) values[2] << 16);
unsigned char values[] = {0,0,0};
unsigned long number;
number = values[0] + ((unsigned int) values[1] << 8) +
((unsigned long) values[2] << 16);
viernes, febrero 06, 2015
EG 11 Rotary encoder conectado al osciloscopio
El circuito:
Giro en el sentido horario:
Giro en el sentido anti-horario:
La imagen del circuito la he sacado de aquí
Giro en el sentido horario:
Giro en el sentido anti-horario:
La imagen del circuito la he sacado de aquí
Suscribirse a:
Entradas (Atom)

















