Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 1

Estructura del codi

Hem dividit en el nostre codi en diverses funcions per a facilitar la seva programació i
lectura, a més de millorar la seva eficiència i evitar repeticions:
- Llibreries i variables globals.
- Void fan() -> Configuració del CCP, PWM.
- Void CCP_ADC() -> Configuració de ADCONX.
- Void configPIC() -> configuració dels registres necessaris per fer funcionar: la
GLCD, les interrupcions i el Timer 0, l’USART, el PWM i els registres A, B, C, D i E
del PIC. A part d’incloure les funcions de fan() i CCP_ADC().
- Void temperatura_medir() -> Tornant a utilitzar CCP_ADC(), calculem el duty cycle
del ventilador depenent de la temperatura escollida per l’usuari i la temperatura
mesurada pel sensor de temperatura amb NTC.
- Void buffer() -> Lectura de la Virtual Terminal.
- Void writeTxt(byte page, byte y, char *s) -> Escriure const char *
- Void segunda_pantalla() -> Escriu el menú d’opcions en la pantalla.
- Void barra_inicial() -> Pinta el termometro de la temperatura, la barra del temps i
truca a segunda_pantalla().
- Void splash_screen() -> Pinta la pantalla splash.
- Void water() -> Llegeix el nivell de l'aigua (potenciòmetre) i ens avisa si no n’hi ha.
- Void interrupt RSI() -> Ens trobem amb dues interrupcions: La de RC1, que ens
permet amb buffer(), el fet de llegir la terminal; i la de TMR0, que permet amb el
Timer0 fer el compte enrere del que tardi en fer-se el cafè seleccionat, activar el
ventilador con temperatura_medir() i el torna a la pantalla del cafè con barra_inicial()
i water().
- Void error_handler() -> S’encarrega de veure si s’ha provocat un error de handler.
- Void visual_terminal(char *data) -> Escriu en la Virtual terminal.
- Void inicio() -> Pinta la pantalla de inicio en la GLCD.
- Void loading() -> Pinta la pantalla d’espera en estar fent-se el cafe.
- Void alarm() -> Pinta una alarma quan no hi ha aigua suficient.
- Void main(void) -> Utilitzem configPIC() i splash_screen() per a continuació esperar
dos segons, buidar-ho i escriure els noms dels autors del projecte. Aquí ja
utilitzaríem inicio() i barra_inicial() a continuació. Finalment, dins del while
controlarem els botons, l’error_handler(), i el loading() un cop l’usuari seleccioni el
seu cafè.
Problemes i solucions
Durant la programació del projecte, encara que no ens hem trobat amb massa dificultats, sí
que ens hem topat amb un parell de problemes:
- A causa de la gran quantitat de línies de codi que s’han anat acumulant, trobar petits
errors que fan saltar un munt d’altres, com ara un punt i coma que no s’ha posat,
s’ha tornat més difícil del que esperàvem.
- Programar que cadascun dels elements funcioni per separar ha sigut una tasca fàcil,
el problema ve quan hem volgut combinar-ho tot, ja que uns feien que els altres no
poguessin funcionar amb normalitat. Fet que ens ha fet canviar al codi diverses
vegades per buscar maneres que tot funciones de cop.
- Pel que fa a en els diferents dibuixos, hem trobat dificultats per exemple a l’hora de
fer els botons, si ho fèiem amb dos bytes, com que ho teníem implementat perquè
s’escrigui individualment, se’ns ho feia malament. Finalment, hem optat per fer els
botons d’un sol byte.

You might also like