1. COMENTARIOS
Si queremos
escribir comentarios para aclarar partes del programa deberemos escribirlo del
siguiente modo:2. CONTROL SIMULTÁNEO DE SALIDAS "let pins"
La
instrucción let pins, let dirsB y let pinsC permite controlar todas las salidas en un solo paso.
- Emplearemos let pins =%xxxxxxxx, siendo x las salidas
desde B.7 a B.0.
- Las conexiones se hacen a V+ y
la otra conexión a la salida que corresponda.
- Tener en cuenta que las salidas desde B.4 a B.7 funcionan al contrario, es decir, cuando indicamos "1" están desconectadas y viceversa.
Ejemplo: let pins=00001
Ejemplo: let
dirsB=0000001 (configura las conexiones con 0 como entradas y 1 como salida)
3. CONECTAR O DESCONECTAR SALIDAS "high-low"
Mediante los comandos "high" (nivel alto 1) o "low" (nivel bajo 0) podemos activar o desactivar las salidas B.0-B.7.
Mediante los comandos "high" (nivel alto 1) o "low" (nivel bajo 0) podemos activar o desactivar las salidas B.0-B.7.
Así si indicamos high y el elemento actuador está conectado entre positivo y la salida correspondiente, lo que haremos será activar dicha conexión siempre y cuando sean las conexiones B.0-B.3, ya que las conexiones B.4-B.7 funcionan justo al contrario si hemos incorporado en la placa el chip L293D que sirve para invertir el sentido de giro de motores y por lo tanto en cualquiera de estas, el comando high está indicando que la conexión está apagada o desconectada.
Del mismo modo, lo dicho sirve para el comando low, es decir, desconecta la salida desde B.0-B.3 y la conecta si estamos desde B.4-B.7. Esto es así si conectamos entre positivo y la correspondiente salida.
4. LEER ENTRADA ANALÓGICA Y VER EN PANTALLA "readadc" y "debug"
En muchas ocasiones, cuando estamos programando, nos interesa leer el valor de una entrada y ver el valor de una variable en pantalla para saber cómo se está desarrollando nuestra programación.
En muchas ocasiones, cuando estamos programando, nos interesa leer el valor de una entrada y ver el valor de una variable en pantalla para saber cómo se está desarrollando nuestra programación.
Para ello
utilizamos el comando readadc y debug seguido de la variable
correspondiente que suele ser desde b0 a b12.
En este
ejemplo, leemos el valor de la entrada analógica C.1 y le asignamos una variable b0 que
posteriormente leemos en pantalla con el comando debug.
Con el comando debug deberemos especificar las variables que queremos mostrar en pantalla, siempre después de que tengamos el valor calculado.
al simular puede haber algún problema con el retraso con el que refresca los valores el software.
Con el comando debug deberemos especificar las variables que queremos mostrar en pantalla, siempre después de que tengamos el valor calculado.
al simular puede haber algún problema con el retraso con el que refresca los valores el software.
5. ESPERAS "pause"
Es una
instrucción que se emplea para parar durante un tiempo en milisegundos, para
ello se emplea el comando pause.
En este ejemplo
activamos la salida B.4 durante 2 segundos y tras esto la desconectamos.
6. ETIQUETAS "symbol"
Una etiqueta
podríamos decir que es un cambio de variable que nos permita entender mejor lo
que estamos programando. Esto se hace mediante el comando symbol.
Dicho de
otro modo, podemos tener una entrada cualquiera del tipo Pin5 que vaya asociada a la conexión o desconexión de un pulsador,
por lo tanto en vez de emplear esta entrada, utilizamos un nombre que le
asignemos nosotros. También puede ser una variable del tipo b0 o una salida del tipo B.3.
En este
ejemplo hemos cambiado esa entrada pin5, la variable b1 y la salida B.3 por los
nombres que ahí aparecen.
Un procedimiento o subrutina consiste en crear un subprograma que puede sernos de utilidad a lo largo del programa ya que se utiliza en muchas ocasiones o en varias partes del mismo. Por ello lo podemos “llamar” cuando sea necesario.
La estructura suele consistir en realizar un proceso cualquiera y “saltar”
a otra parte del programa.
En el siguiente ejemplo hemos creado la subrutina "Posicion:" y cuando acaba vuelve a inicio.
En el siguiente ejemplo hemos creado la subrutina "Posicion:" y cuando acaba vuelve a inicio.
8. IR A OTRA PARTE DEL PROGRAMA "goto"
Cuando necesitamos ir hacia otra
parte del código del programa se utiliza la instrucción goto.
9. VARIABLES "b o w"
Las
variables son espacios de memoria del programa que permiten almacenarla en el
programa.
- En estos espacios de memoria se puede meter un número que va desde el 0 al 255.
- Sus nombres por defecto van desde el b0 al b13. Tenemos, por tanto 14 variables independientes.
- También hay otras variables llamadas w0 al w13 que admiten valores superiores al 255, concretamente admiten 4 cifras, por lo tanto hasta el 65335.
En este
ejemplo guardamos el valor de la entrada analógica C.0 en una variable llamada
b0.
10. REPETICIÓN DE UN PROCESO UN Nº DE VECES "for-next"
Un bucle for permite repetir una instrucción
un número de veces.
La sintaxis es : for b1=1 to xx (nº
veces)…--código--..next b1., siendo b1 la variable que incrementa.
En este ejemplo
se repite 10 veces la conexión de un zumbador conectado a la salida b.4 con una
frecuencia de 100 Hz y una duración de 60 ms.
El contador
es una variable (puede ser b0, b1,....b13), el valor inicial será el valor que
tome la variable la primera vez que se hace el bucle y el valor final será el
valor que tome esa variable la última vez que se ejecute el bucle.
Cuando se llega a next, el contador se incrementa en 1 y se vuelve a comenzar en la instrucción 1 del bucle. Por tanto, las instrucciones que hay dentro del bucle se repetirán valor final menos valor inicial veces.
11. BIFURCACIÓN CONDICIONAL "if"
Una de las
estructuras más importantes es la bifurcación condicional. Permite que el
programa haga unas cosas si se cumplen unas condiciones y otras en caso
contrario.
Para ello se emplea el comando if. En estos ejemplos se muestra el empleo de este comando:
12. SELECCIONAR CASOS DIFERENTES "select case"
Esta instrucción se llama select case y sirve para realizar diferentes cosas dependiendo del valor que tenga una variable.
Es un tipo de bifurcación muy potente que nos permite abrir la línea del programa en muchos caminos. Es parecido a un if, pero más potente.
La
sintaxis es del tipo Select
(variable) y posteriormente se proponen los casos de la forma case a, case b,…..end select.
13. VARIAR LA VELOCIDAD DE UN MOTOR "pwmout"
Para variar la velocidad de un motor, emplearemos el comando pwmout. El programa nos ofrece los valores que debemos poner en el código según el porcentaje de velocidad que queramos. Los pasos son los siguientes:
Conectamos el motor a V+ y la salida (B.3 o B.6). Nos metemos en:Picaxe--wizard--Pwmout.
Para parar el motor tras usar el comando, emplearemos pwmout (salida), off.
Este comando es incompatible simultáneamente con servo.
14. CONECTARNOS CON UNA PANTALLA LCD "serout"
Para comunicarnos con una pantalla LCD, emplearemos el comando serout.
15. INCREMENTAR EL VALOR DE UNA VARIABLE "let"
Para
incrementar el valor de una variable en un valor cualquiera, para realizar, por
ejemplo, un contador, se emplea el comando let.
Así, en este
ejemplo, si se cumple una condición, la variable b1 que inicialmente tiene un
valor de 0, se incrementa de valor en 1 unidad cada vez que pasa por el
procedimiento llamado “contador”.
También podemos utilizar variables "w" que permiten contar hasta el 9999.
También podemos utilizar variables "w" que permiten contar hasta el 9999.
16. CONTAR EL NÚMERO DE PULSOS "count"
Existe un
comando que permite contar el número de cambios de estado de “high” a “low”, o
lo que es lo mismo, el número de pulsos en un tiempo determinado, asignando ese
valor a una variable de escritura del tipo “w”. Esto es posible con el comando count.
En este
ejemplo leemos el número de pulsos que nos devuelve la entrada C.2 durante 3
segundos y lo almacena en la variable w1 que muestra en pantalla.
Existe un comando que nos puede mostrar la temperatura
medida mediante un sensor específico para este tipo de casos. Para ello hay que
emplear el comando readtemp.
El proceso es similar al empleado cuando queremos leer
cualquier otra magnitud que se mida con un sensor analógico como el nivel de
luz, la distancia,…
18. LEER LA SEÑAL DE UN MANDO A DISTANCIA "irin"
Existe un comando que se emplea para recibir la señal
enviada por un mando a distancia compatible con picaxe. Para ello hay que
emplear el comando irin.
El proceso es similar al empleado cuando queremos leer
cualquier otra magnitud que se mida con un sensor analógico como el nivel de
luz, la distancia, temperatura…
En este
comando hay que especificar el tiempo de refresco de la señal, la entrada donde
se ha conectado el sensor y la variable donde se almacena el valor leído.
19. ACCIONAR UN SERVO "servo"
En ocasiones se emplean servos por ser muy útiles para
realizar giros muy precisos. En este caso se emplea el comando servo y servopos.
El comando servo se emplea para iniciar la activación del servo.
Posteriormente se recomienda usar el comando servopos para posicionar el servo en el punto requerido.
Para desactivar el comando, si no se va a emplear más, se recomienda servopos x, off.
El comando servo se emplea para iniciar la activación del servo.
Posteriormente se recomienda usar el comando servopos para posicionar el servo en el punto requerido.
Para desactivar el comando, si no se va a emplear más, se recomienda servopos x, off.
El funcionamiento del comando es muy simple ya que
tiene 2 posiciones extremas. Una llamada “75” y la otra “225”. Entre ellas
podemos seleccionar el ángulo de giro que nos interesa.
Hay que conectarlo a las salidas B.4-B.7. De las B.0-B.3 no funciona debido a que pasa a través de los transistores de potencia de la placa, a no ser que se conecte directamente a los pines de la parte central de la placa. En ese caso funcionan todos porque es a la salida directa del chip.
20. GENERAR UN SONIDO "sound"
En ocasiones se emplean zumbadores por ser muy útiles
para producir sonidos. En este caso se emplea el comando sound.
El funcionamiento del comando consiste en definir la
salida empleada, la frecuencia del sonido y su duración. sound B.x (frecuencia, tiempo ms).
21. REALIZAR UN PROCESO MIENTRAS NO CAMBIE ALGO "Do-Loop while"
Este proceso
permite repetir algo (un subproceso) mientras se cumplan unas condiciones. Si
dejan de cumplirse, seguirá leyendo el código que siga
tras esto. Para ello el comando es: Do –código- loop while (condición).
En este
ejemplo, se va conectar la salida B.6 mientras la entrada pin5 esté activada.
En el momento que la entrada pin5 no esté activada, seguirá leyendo el código
que haya debajo de este como ocurre normalmente.
22. REALIZAR UN PROCESO HASTA QUE CAMBIE ALGO "Do-Loop until"
Este proceso
permite repetir algo (un subproceso) mientras se cumplan unas condiciones. Si
dejan de cumplirse seguirá leyendo el código que siga
tras esto. Para ello el comando es: Do –código- loop until (condición).
23. CONVERTIR SALIDAS EN ENTRADAS "input"
En ocasiones es necesario cambiar una salida por entrada debido al tipo de automatización que realizemos.
Para ello debemos emplear el comando input seguido de la salida que queremos cambiar a entrada.
La salida que hemos convertido en entrada tenemos que sacarla directamente de los pines "machos" de la parte central de la placa, ya que si los obtenemos directamente de las salidas no funcionará debido a que unas son amplificadas y otras pasan por el L293D (inversor).
Ejemplo:
24. RECIBIR Y EMITIR PULSOS "pulsin y pulsout"
Se emplea en sensores de ultrasonidos como el HC-SR04, este utiliza el sonar para determinar la distancia a un objeto. Ofrece una precisión excelente y lecturas estables. Su funcionamiento no se ve afectado por la luz solar o materiales oscuros.
Conexión a la placa Picaxe
La conexión a la placa Picaxe es muy simple. Sólo es necesario:
- Vcc: Positivo de la placa. 5V
- GND: Negativo de la placa. 0V
- Trigger: necesitamos una conexión que sea reversible (Input y Output) y analógica. En este caso hemos tomado C.1.
- Echo: Está conectada indirectamente a través de la resistencia de 10KOhm.
- Cambiar la frecuencia a 8MHz. (La frecuencia habitual de Picaxe es 4MHz).
- Enviar un pulso de 2ms mediante pulsout (Trigger).
- Recibir el pulso durante 1ms (Echo) y almacenar el valor capturado en una variable w0.
- Operar para transformar ese valor en la distancia al objeto en cm.
- Visualizarlo en pantalla, si fuera necesario.
25. SONAR CANCIÓN "PLAY"
El comando se emplea con el siguiente formato:
PLAY pin, tono
Pin: Es la salida donde está conectado el zumbador.
Tono: Es una variable (0-3) que especifica el tono que queremos hacer sonar.
0 - Happy Birthday
1 - Jingle Bells
2 - Silent Night
3 - Rudolph the Red Nosed Reindeer
0 - Happy Birthday
1 - Jingle Bells
2 - Silent Night
3 - Rudolph the Red Nosed Reindeer
26. TAREAS O PROCESOS EN PARALELO "start"
El sistema Picaxe permite programar realizando tareas que se realicen de forma simultánea, para ello se emplea el comando "start".
Así, lo único que debemos hacer es utilizar este comando añadiendo los números 0, 1, 2... sucesivamente hasta 7, que son las tareas que puede realizar al mismo tiempo.
En este ejemplo va a controlar simultáneamente 2 led conectados a las salidas B.0 y B.1, cada uno con una frecuencia de parpadeo diferente.
27. MÓDULO BLUETOOTH CON SMARTPHONE "serin"
La comunicación con un módulo Bluetooth para recibir la información e introducirla en la placa Picaxe a través de un Smartphone se realiza a través del comando "serin" y habitualmente cambiando la frecuencia a 8MHz.
El código requerido es:
setfreq m8 'Cambiamos la frecuencia a 8MHz
inicio:
serin C.0, T9600_8, b1 'recibimos en C.0 el dato y lo almacenamos en b0
pause 50
debug b0
goto inicio
28. CONSTANTES.
Ejemplos: 100 es el número 100 en decimal
El sistema PICAXE da soporte a las siguientes variables:
La comunicación con un módulo Bluetooth para recibir la información e introducirla en la placa Picaxe a través de un Smartphone se realiza a través del comando "serin" y habitualmente cambiando la frecuencia a 8MHz.
El código requerido es:
setfreq m8 'Cambiamos la frecuencia a 8MHz
inicio:
serin C.0, T9600_8, b1 'recibimos en C.0 el dato y lo almacenamos en b0
pause 50
debug b0
goto inicio
28. CONSTANTES.
Las constantes declaradas pueden ser de cuatro tipos: decimal, hexadecimal, binario y ASCII.Los números decimales se escriben directamente sin ningún prefijo.Los números hexadecimales se preceden del símbolo dólar ($).Los números binarios de preceden del símbolo tanto por ciento (%).Los valores ASCII se colocan tre comilla (“…”).
Ejemplos: 100 es el número 100 en decimal
$64 es el número 64 en hexadecimal
%01100110 ‘ número binario: 01100110
“A” es la letra “A” en código ASCII (65)
“Hello” ‘ ”Hello” equivalente a “H”, “e”, “l”, “l”, “o”B1 = B0 ^ $AA ‘ operación XOR entre la variable B0 com AA en hex.
29. VARIABLES.
- Words: W0, W1, W2, W3, W4, W5, W6 (Valores:0-65335)
- W0=B1:B0, W1=B3:B2, W2=B5:B4,... (Ej: W0=2317, B1=23 y B0=17)
- Bytes: DIRS, PINS (solo PICAXE-08), INFRA, KEYVALUE
- B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 (Valores: 0-255)
- Bits: PIN0, PIN1, PIN2, PIN3, PIN4, PIN5, PIN6, PIN7 (conjuntamente igual PINS)
- BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7 (conjuntamente igual B0)
- BIT8, BIT9, BIT10, BIT11, BIT12, BIT13, BIT14, BIT15 (conjuntamente igual B1)
- In/Out añade los pseudo nombres:
- INPUT0, INPUT1, etc. puede usarse en lugar de PIN0, PIN1, tec.
- OUTPUT0, OUTPUT1, etc. puede usarse en lugar de 0, 1, 2, etc.
hay alguna manera de cambiar la velocidad de 9600 a 57600 cuando trabajamos con bluetooth? tengo un dispositivo que trabaja a esa velocidad y necesito saber si puedo hacer algo en la programación para utilizarlo, gracias
ResponderEliminarHola: Con el chip 18M2+ se puede llegar hasta 32MHz con una velocidad desde 4800-38400. Le velocidad que tú necesitas está por encima pero puedes probar a ver que tal.
EliminarUn saludo