Paso 16: Haga un sonido alegre.
Para nuestra siguiente serie de experimentos, necesitamos conectar la bocina. Siguiendo el diagrama anterior, añadir uno más cable de puente desde Puerto B.3. El diagrama muestra este nuevo cable de color morado. Una vez más, la belleza de un kit de desarrollo que es más del altavoz circuitos ya está ahí; para añadir el circuito de altavoces todo, todo lo que necesitas es un cable puente simple.
Considerar, por un minuto, el electroimán que hiciste cuando eras un niño (si no recuerda que el imán se hace envolviendo un alambre alrededor de un clavo. Mira el diagrama de arriba. Cuando conecte los extremos del cable a una batería, la uña se magnetiza y usted puede recoger cosas como clips de papel.) Un altavoz es muy parecido a un electroimán; al realizar el flujo de corriente y parada que fluye a través de la bobina de un altavoz, produce una membrana que vibra, hacer el sonido.
Ahora, mira el diagrama esquemático del circuito altavoz. Ahora, manteniendo nuestro precedente de utilizar puerto B de salida y puerto D para la entrada, B.3 Puerto de control del altavoz. Echa un vistazo en el esquema arriba. Cuando B.3 de puerto está establecido en alto, la corriente fluirá de la tierra a través del altavoz y el pin de salida. Esto actuará igual que cuando usted conecta los extremos del cable en el electroimán a una batería y activa el electroimán dentro del altavoz. Cuando imprima un bajo en el Pin B.3, no habrá ningún punto positivo en el circuito, por lo que ninguna corriente fluirá y se desactivará el electroimán.
De la misma manera que utilizamos bucles para encender los LEDs y apagar repetidamente, nos nuevo utilizará bucles para magnetizar y se magnetice el electroimán dentro del altavoz. La principal diferencia será que vamos a utilizar mucho más corto tiempo dentro de nuestros lazos. Utilizando tu plantilla, agregue el siguiente programa y luego guardarlo con un nombre como prueba de altavoz.
Config PortB = salida
' Programa principal
Hacer ' alternar línea de altavoces
PortB.3 Set
waitms 1
restablecer PortB.3
waitms 1
Lazo
Una vez más, echa un vistazo a este programa: aquí vemos un circuito estándar, nada nuevo. También, vemos que, dentro del bucle, fijar puerto B.4 (el pin del altavoz) alto, esperar 1millisecond y luego reiniciarlo de nuevo a la baja y esperar a que otro 1 milisegundo. Porque estas declaraciones son dentro de un bucle, esta voluntad de repetición, el imán del altavoz de encendido y apagado en 500 veces por segundo, dos milisegundos encendiendo y apagando y repetido.
Compilar el programa y descargarlo a la 2313. ¿Qué pasa? Con el altavoz activar a 500 Hz (hercios, o veces por segundo) le debe oír un sonido procedente del altavoz. ¿Trate de cambiar los tiempos de retardo, lo que pasa? Ver cuán grande puede llegar el tiempo de retardo antes de que ya no suena como un tono, sino una serie de clics. Trate de usar diferentes valores para los tiempos de dos retardo; ¿Qué hace a los tonos?
Hay un sistema de declaración más que quiero introducir; el lazo de for...next. Este circuito incluye la capacidad para el regulador mantener la cuenta de cuántas veces se ejecuta el bucle. En formato básico, el ciclo comienza con una de declaración y luego termina con una instrucción next. Se puede entender mejor este bucle con un ejemplo:
Para cntr = 1 a 100
Set PortB.4
waitms 1
restablecer PortB.4
waitms 1
Siguiente cntr ' alternar línea de altavoces 100 veces
Observe la semejanza con otros lazos que ya hemos cubierto; hay un principio para el lazo (la declaración) y fin (la siguiente instrucción) y todo dentro consigue repitieron varias veces. Al principio del bucle, el de instrucción utiliza un área especial de la memoria, llamado una variable que contenga un número. La variable se da el nombre de "centro", y en primer lugar se encuentra igual al primer número de la declaración (en este caso 1). Entonces se ejecutan los comandos dentro del lazo de for...next. Al final del bucle, con la siguiente instrucción, suceden dos cosas: en primer lugar la variable se compara con el número más alto en la declaración (en este caso 100), si el número es igual (o superior) luego la instrucción next sale del bucle, y el programa continúa después del bucle. En segundo lugar, si la variable, "centro", es menor que el límite de número (100), luego "cntr" se incrementa, y flujo de programa lazos a la declaración.
Para poder utilizar una variable, debe configurar la zona especial de memoria. Para hacer esto usted tendrá que añadir una nueva declaración de configuración. Después de la declaración de la configuración de salida, agregue la siguiente línea:
Cntr DIM como byte
Esto anulará un byte de memoria (ubicación de una memoria) para mantener el número que llamamos cntr. Un byte puede contener cualquier número entero entre 0 y 255. Utilizamos esta extraña ortografía del contador porque el contador de la palabra sí mismo está reservado para que básica a utilizar. Tan sólo cambiar su nombre y todo funciona bien. Si durante tu experimentación, desea utilizar más de 255 en su ciclo de for...next, Recuerde cambiar el parámetro byte – trate de usar durante mucho tiempo. (Fijate en el manual BASCOM para más información sobre variables y el byte y tipos largos.)
Por lo tanto, la primera vez por el bucle, la variable "cntr" llevará a cabo el número uno. Al final del bucle, la siguiente instrucción comprobará y ver que "cntr" es menos de 100 (el límite establecido por la declaración,) se incrementan "cntr" a 2, y luego tener el programa loop a la declaración.
La próxima vez a través del lazo, todo se repite, excepto que "cntr" contiene el número 2. Esto se repite, con la variable "cntr" se incrementa cada vez, hasta llegar a 100. Cuando "cntr" es igual a 100, entonces la siguiente instrucción dirá "que es suficientes veces a través del lazo, ir la próxima declaración."
Como se puede ver, esto es una manera de repetir algunos pasos un cierto número de veces. ¿¿Que nos ayuda a aquí? ¿Qué tal si escribimos un bucle para cambiar el imán del altavoz encendido y apagado un número específico de veces? Ya que sabemos cuánto tiempo deja el imán en y cuánto dejar el imán, podemos calcular cuánto tiempo durará el tono. Tomar otra mirada en el bucle de arriba; ¿Cuánto tiempo duran? Si tenemos en cuenta que el imán es de 1 milisegundo y se apaga para otro 1 milisegundo, y luego coloca para 100 veces, nos encontramos con que el tono debería durar 200 milisegundos o 1/5 th de un segundo. En realidad, tendrá una duración de unos 200 milisegundos ya que cada una de las declaraciones, incluyendo las declaraciones de bucle, se toma una pequeña cantidad de tiempo. Sin embargo, para los efectos de esta clase, podemos ignorar la sobrecarga de tiempo – apenas mantener en su mente, en caso de necesitar más tiempo más adelante.
Sugerencia: para frecuencias de mayor tono, mira el BASCOM-AVR manual bajo la declaración waitus.
Creo que mi vieja linterna apenas escapó con vergüenza!