Programació amb diagrames de flux
De El raconet d'en Jordi
Contingut |
Introducció
Un dels avantatges d'aquests PICs és la possibilitat de programar-los directament amb un diagrama de flux. L'editor de programació ens permet treballar d'una forma molt còmode i ràpida. Només cal clicar a la segona icona de la barra d'eines per a treballar en un nou diagrama.
Molt important! Quan seleccionem un mode de treball (BASIC, diagrama de flux, portes lògiques) només podrem obrir arxius d'aquest tipus. Es a dir, si volem carregar un diagrama de flux ja fet primer hem de clicar la segona icona per treballar amb diagrames de flux, i després clicar a la quarta icona per a obrir l'arxiu.
També és molt important quan comencem seleccionar el tipus de PICAXE amb que treballem a Ver->Opciones. Segons el model tindrem unes opcions i comandes habilitades o no.
L'editor
Trobarem a l'editor dues barres d'eines. La primera, com ja hem dit, permet seleccionar el mode de treball (BASIC, diagrama de flux, portes lògiques) així com les operacions típiques d'arxiu (obrir, desar, imprimir ...). Finalment dues fletxes ens permeten simular el programa (fletxa groga) o bé carregar-lo al PICAXE (fletxa blava).
La segona barra d'eines és pròpia del mode de treball que utilitzem. En el nostre cas ens permet seleccionar objectes, fer zoom (amb una interfície poc intuïtiva, desplaçant el ratolí canviarem el factor de zoom), moure el diagrama. A continuació tres icones molt importants: unir símbols amb fletxes, posar connectors per continuar diagrames en una altra columna i posar etiquetes per comentar el diagrama. Finalment el accés als diferents blocs de símbols: sortides, moviment, decisions en funció de l'estat de les entrades o del valor dels registres, esperes, subrutines i altres símbols. Quan accedim a un d'aquest blocs una fletxa al final ens permet tornar a aquest menú principal.
Molt interessant és l'opció Archivo -> Exportar organigrama como figura, que ens permet generar un arxiu gràfic amb el nostre diagrama de flux i utilitzar-lo per a documentar guions de pràctiques i memòries.
Els símbols de flux
Aquests diagrames, com el seu nom indica, especifiquen el flux del programa, les tasques que es realitzen, segons les decisions que pren el programa. Això ho fem amb símbols com els següents:
Inici de programa: indica on comença el programa quan encenem el PIC Decisió: en funció d'una comparació decideix per on anirà el flux en cas que es compleixi (sortida Y) o en cas contrari (sortida N) Sortida: modifica l'estat de les sortides del PIC (high el posa a 1, low a 0). Procés: càlculs entre les variables, fer conversions ADC, temps de retard ...
En aquest xips les decisions permeten llegir les entrades. Per exemple a la figura veiem un bucle que espera que l'entrada al pin3 sigui 1.
Edició del programa
Una vegada seleccionat el símbol a inserir, cliquem amb el botó esquerra del ratolí per ubicar-lo. Podem seguir col·locant altre vegada el mateix símbol, o clicar amb el botó dret del ratolí per seleccionar un símbol ja inserit i modificar els seus paràmetres, que veurem a la part inferior de la finestra. Només podrem seleccionar els paràmetres vàlids per al PICAXE actiu.
Quan seleccionem un paràmetre de tipus byte, els registres b0, b1 ... els trobarem al final de la llista desplegable després dels números 0, 1, 2 ... 255. Podeu accedir ràpidament a aquests registres prement la tecla b al desplegable.
Simulació del programa
La fletxa groga a la primera barra d'eines engega la simulació del programa. Veurem en diferent color el pas pels diferents símbols del programa, i una finestra ens permetrà modificar les entrades i monitoritzar els registres.
Plaques virtuals
Si abans d'engegar la simulació activem qualsevol de les plaques virtuals existents a Simulate ->Simulation Panels -> Product Sims podrem verificar el funcionament del nostre diagrama amb la placa seleccionada.
Disposem de virtualització de la placa experimental AXE092, així com de les diferents plaques de projectes econòmiques (mascota electrònica, alarma, dau ...). Tenint en compte que el programari és gratuït, això ens permet que els nostres alumnes puguin treballar a casa millorant els seus programes, sense cap cost per al nostre centre.
Conversió a BASIC
Podem convertir a llenguatge BASIC el nostre diagrama de flux amb PICAXE -> Convertir organigrama a BASIC. Aquest és un bon exercici pels alumnes per facilitar la seva migració des de la programació en diagrames de flux, molt intuïtiva però no tant potent com la pr ogramació en llenguatge BASIC.
Conjunt d'instruccions
Veiem uns exemples dels símbols disponibles
| high 2 | posa a nivell lògic 1 (es a dir, aplica la tensió d'alimentació) a la sortida pin2 |
| low 2 | posa a nivell lògic 0 (es a dir, connecta a 0 V) a la sortida pin2 |
| let pins = 18 | configura les sortides p4 i p1 a nivell 1 i la resta a 0, utilitzant els bits que representen a cada sortida (16 + 2 = 18) |
| sound 7, (160,50) | genera per la sortida 7 un soroll blanc (valors 128 a 255) durant un temps de 50 |
| sound 2, (49,100) | genera per la sortida 2 un soroll semblant a la nota LA (49) durant un temps 100. L'equivalència entre els valors 1-127 i les notes musicals és, aproximadament: LA(49), LA#(51), SI(54), DO(57), DO#(61), RE(65), RE#(71), MI(78), FA(88), FA#(101), SOL(119) |
| serout 4, T2400, (#b1) | Envia per la sortida 4 a 2400 bauds sense invertir (T2400) el valor del registre b1 en ASCII (#b1) |
| play 1,0 | Fa sonar la melodia 1 (incorporada a la ROM pel fabricant) sense acompanyar-la amb llums (0). |
| tune ... | Música amb les notes que van a continuació. Veure l'exemple de la Capsa de música, on es mostra un exemple amb la banda sonora de la sèrie Doraemon. |
A cada menú trobarem a l'inici la icona d'una fletxa per seleccionar un símbol i
modificar els seus paràmetres, i al final una altra fletxa circular per tornar al
menú principal. També trobarem un símbol amb punts suspensius amb el que
podem inserir qualsevol ordre BASIC.
| forward | Marxa endavant |
| back | Marxa enrere |
| left | Gira a l'esquerra |
| right | Gira a la dreta |
| halt | Atura la marxa |
| speed 128, 128 | Fixa la velocitat (esquerra, dret). Posant valors diferents podem compensar diferències mecàniques dels motors, o generar girs suaus. |
| ultra b0 | Desa a b0 la distància en cm al següent obstacle |
| infra b0 | Espera un codi de comandament d'infrarojos i el desa al registre b0. |
Aquests símbols faciliten la programació del microrobot.
| if pin3 = 0 | Continua per la via Y si el pin3 és igual a 0 (detecta 0V), per la via N en cas contrari. |
| if b1 > 34 | Continua per la via Y si el registre b1 és més gran que 34, per la via N en cas contrari. |
| if b1 <> b0 | Continua per la via Y si el registre b1 és diferent del registre b0, per la via N en cas contrari. |
Fixeu-vos que tenim dos grans famílies de símbols, segons si en la comparació utilitzem o no una entrada. cada família presenta 4 formes alternatives de posicionar les vies Y i N.
| pause 500 | Espera 500 ms |
| wait 2 | Espera 2 s |
| sleep 20 | Desconnecta 20 s. Es redueix molt el consum en l'espera. |
Els temps son aproximats si utilitzen el rellotge intern, cas habitual a secundària.
| stop | Atura el programa. |
| sub | Defineix una subrutina. |
| int | Defineix la subrutina d'interrupcions. |
| return | Torna de la subrutina. |
| gosub | Executa la subrutina. |
| setint | Defineix les condicions d'interrupció. |
El nombre de subrutines està limitat segons el PICAXE utilitzat.
| let | Assigna un valor a un registre. |
| readadc 1, b0 | Llegeix l'entrada analògica del pin1 i desa el resultat com a un byte a b0 (0 → 0V, 255 → Vcc) |
| infra | Llegeix codis de comandaments d'infrarojos. |
| debug | Envia els regsitres pel canal sèrie de programació al PC. |
| random w0 | Genera un word (2 bytes) aleatoris |
| read | Llegeix de la memòria FLASH. |
| write | Escriu a la memòria FLASH. |
| peek | Llegeix de la memòria RAM. |
| poke | Escriu a la memòria RAM. |
| readtemp 1, b0 | Llegeix la temperatura d'un xip DS18B20 connectat al pin1 i desa el valor al registre b0. |
L'ordre readadc és la més utilitzada, i de vegades els alumnes no la troben al estar situada en aquest calaix de sastre.







