|
6 | 6 | * e o Arduino via porta serial sobre USB, utilizando a classe `SerialProtocol` para cuidar da transmissão dos quadros. |
7 | 7 | * |
8 | 8 | * @section features_sec Funcionalidades |
9 | | - * - Exibição de mensagens em _display_ LCD de 4 linhas. |
10 | | - * - Emissão de sinais sonoros via _buzzer_. |
11 | 9 | * - Recepção de comandos da TV-Box por meio de protocolo serial sobre USB. |
| 10 | + * - Exibição das mensagens no _display_ LCD de 4 linhas. |
| 11 | + * - Emissão de sinais sonoros via _buzzer_. |
| 12 | + * - Ajuste e leitura do RTC. |
12 | 13 | * |
13 | 14 | * @section arch_sec Arquitetura |
14 | 15 | * O sistema é dividido em: |
15 | 16 | * - `CristalLiq-serial.ino`: ponto de entrada e lógica principal. |
16 | 17 | * - `frame.h/.cpp`: implementação da classe SerialProtocol. |
17 | | - * - `SerialProtocol`: abstração do protocolo de comunicação. |
| 18 | + * - `SerialProtocol`: protocolo de comunicação _master/slave_ por serial sobre USB. |
18 | 19 | * |
19 | 20 | * @section usage_sec Uso |
20 | | - * 1. Carregue o código no Arduino Nano com o Arduino IDE. |
21 | | - * 2. Conecte o _display_ LCD de 4 linhas e o _buzzer_. |
| 21 | + * 1. Carregar o código no Arduino Nano com o Arduino IDE. |
| 22 | + * 2. Conectar o _display_ LCD de 4 linhas, o _buzzer_ e o RTC. |
22 | 23 | * |
23 | 24 | * @section img_sec Máquina de Estado do protocolo |
24 | 25 | * ! |
25 | 26 | */ |
26 | 27 |
|
27 | 28 | /** |
28 | 29 | * @file CristalLiq-serial.ino |
29 | | -* @brief O Arduino Nano gerencia tanto a exibição no Display de quatro linhas quanto o buzzer. |
| 30 | +* @brief O Arduino Nano gerencia a exibição no Display de quatro linhas, o acionamento do _buzzer_ e o ajuste e leitura do RTC. |
30 | 31 | * |
31 | 32 | * O Arduino Nano comunica-se por via serial sobre USB com a TV-Box. O protocolo de comunicação está na classe SerialProtocol. |
32 | | -* São mensagens de quadro encapsuladas com os caracteres '<' e '>'. No interior do quadro é possível usar o caracter de escape para '\<', '\>' e '\\'. |
| 33 | +* São mensagens de quadro encapsuladas com os caracteres '<' e '>'. No interior do quadro é possível usar o caracter de escape para: '\<', '\>' e '\\'. |
33 | 34 | * A semântica das mensagens é específica para a aplicação IFSPresente. |
34 | 35 | * Há seis tipos de mensagens. |
35 | 36 | * * <100,0,0> --> PING |
|
38 | 39 | * * <400,TEXTO,TIMEOUT> --> SPEAKER (Linha 2, para nome do palestrante) |
39 | 40 | * * <500,TEXTO,TIEMOUT> --> ATTENDEE (Linha 3, aponta participante registrado |
40 | 41 | * * <600,0,0> --> SUCCESS (Beep de sucesso no registro) |
41 | | -* * <601,0,0> --> FAIL (Beep de falha no registro) |
42 | | -
|
| 42 | +* * <601,0,0> --> FAIL (Beep de falha no registro) |
| 43 | +* * <700,HH:MM:SS,0> --> SETTIME (Define a hora do RTC) |
| 44 | +* * <701,0,0> --> GETTIME (Recebe a hora do RTC) |
43 | 45 | * Outras aplicações podem definir outros modelos de mensagens nos quadros do protocolo. |
44 | 46 | */ |
45 | 47 |
|
46 | | - |
47 | | - |
48 | 48 | #include <Wire.h> // Biblioteca utilizada para fazer a comunicação com o I2C |
49 | 49 | #include <LiquidCrystal_I2C.h> // Biblioteca utilizada para fazer a comunicação com o display 20x4 |
50 | | -#include "frame.h" |
| 50 | +#include "frame.h" // Implementação da classe SerialProtocol |
51 | 51 |
|
52 | 52 | #define PING 100 |
53 | 53 | #define TIME 200 |
|
56 | 56 | #define ATTENDEE 500 |
57 | 57 | #define SUCCESS 600 |
58 | 58 | #define FAIL 601 |
| 59 | +#define SETTIME 700 |
| 60 | +#define GETTIME 701 |
59 | 61 |
|
60 | 62 | #define BUZZER 2 // Pino digital ligado ao buzzer |
61 | 63 |
|
|
64 | 66 | #define ADDRESS 0x27 // Serve para definir o endereço do display. |
65 | 67 | #define DISPLAY_UPDATE_DELAY 500 |
66 | 68 | #define LOOP_DELAY 10 |
67 | | -#define KEEP_AT_ZERO 1 |
68 | | -#define KEEP_AT_LAST 1 |
| 69 | +#define KEEP_AT_ZERO 1 |
| 70 | +#define KEEP_AT_LAST 1 |
69 | 71 |
|
70 | 72 | struct ProtocolMessage { |
71 | 73 | int code; |
|
0 commit comments