Programació amb diagrames de flux

De El raconet d'en Jordi

Dreceres ràpides: navegació, cerca

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.

Imatge:Picaxe022.jpg

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).

Imatge:Flux02.png

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.

Imatge:Flux01.png

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:

Imatge:Simbols.GIF

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.

Imatge:Espera.GIF

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.

Imatge:Editor5.jpg

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.

Imatge:Editor6.jpg

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.

Imatge:Editor7.jpg

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.

Imatge:Editor8.jpg

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.


Imatge:Editor9.jpg

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

Imatge:Flux03.png Imatge:Simbols01.jpg

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.


Imatge:Flux04.jpg Imatge:Simbols02.jpg

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.


Imatge:Flux05.jpg Imatge:Simbols03.jpg

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.


Imatge:Flux06.jpg Imatge:Simbols04.jpg

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.


Imatge:Flux07.jpg Imatge:Simbols05.jpg

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.


Imatge:Flux08.jpg Imatge:Simbols06.jpg

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.










Tornar a l'índex