Práctica de Módulos Contadores y Aplicaciones de Circuitos
6) Modifique DoReMi.spin para que toque las doce notas de la Tabla 7-1 de la pagina 142.
7) Modifique TwoTonesWithSquareWave.spin para que toque correctamente las notas con un
cristal de 2 MHz.
8) Modifique IrDetector.spin para que trabaje en una escala de 0 a 128 en vez de 0 a 256.
9) Modifique CountEdgeTest.spin para que cuente limites positivos en vez de negativos
10) Modifique 1Hz25PercentDutyCycle.spin para que envíe la señal central a un servo. Esto hará
que el servo estándar se mantenga en la posición del centro de su rango de movimiento o que
un servo de rotación continua se quede sin movimiento. La señal es una serie de pulsos de
1.5ms cada 20ms.
11) Modifique 1Hz25PercentDutyCycle.spin para que haga que la salida del servo cambia de un
extreme de su rango de movimiento al otro en 1.5 segundos. Para un servo estándar de 180
grados, la duración del pulso deberá cambiar nominalmente de 0.5 ms a 2.5 ms y de regreso.
El pulso deberá entregarse aun a 20ms. En la práctica es bueno asegurarse que el servo no
trate de moverse más allá de sus topes mecánicos. Para los servos estándar Parallax un rango
seguro esta en el rango de 0.7 a 2.2 ms.
12) Modifique TestDualPwm para que cambia dos servos entre sus extremos opuestos de
movimiento en un periodo de 1.5 segundos.
Proyectos
1) Escriba un objeto DAC modo DUTY de dos canales modo terminación sencilla que le
permita crear y reclamar canales contadores DAC (Contador A y Contador B). Cada canal
DAC deberá tener su propia resolución en términos de bits. El DAC deberá soportar el código
prueba y documentación mostrada abajo. Si va a altas resoluciones recuerde dejar algo de
espacio en los niveles bajos y altos. Vea claves para programar DUTY en la pagina 133.
CODIGO PRUEBA
''Test DAC 2 Channel.spin
''DAC 2 canales.
OBJ
dac : "DAC 2 Channel"
PUB TestDuty | level
dac.Init(0, 4, 8, 0)
dac.Init(1, 5, 7, 64)
repeat
repeat level from 0 to 256
dac.Update(0, level)
dac.Update(1, level + 64)
waitcnt(clkfreq/100 + cnt)
DOCUMENTACION DE OBJETO
Object "DAC 2 Channel" Interface:
PUB Init(channel, ioPin, bits, level)
PUB Update(channel, level)
PUB Remove(channel)
Program:
Variable:
______________________________________
PUB Init(channel, ioPin, bits, level)
Pagina 186 · Kit Educativo de Prácticas Propeller: Fundamentos
20 Longs
2 Longs
' Ch0, P4, 8-bit DAC, inicia a 0 V
' Ch1, P5, 7-bit DAC, inicia a 1.65 V
' DAC salida automáticamente reducida a 128