Internet de les coses amb ESP32 i ESP8266

Exemples Referència Plaques   Recursos CITCEA
Projectes Programació Perifèrics   Inici

Monitor sèrie

El monitor sèrie ens permet comunicar l'ordinador i la placa del microcontrolador mentre estem fent programes de prova.

Per obrir el monitor cal picar sobre la icona Monitor sèrie

En el nostre programa, haurem d'inicialitzar la comunicació sèrie amb Serial.begin indicant la velocitat (normalment 9600 baud).

Si el nostre programa necessita una segona comunicació sèrie per comunicar-se amb algun sensor o altres dispositius disposem també del Serial1. Amb la majoria de les plaques no podem obrir més de dos canals sèrie ni tampoc fer-ho amb noms diferents.

void setup() {
	Serial.begin(9600);
	...
}

Per enviar coses al monitor sèrie podem fer servir Serial.print i ens anirà posant les coses una al costat de l'altra. Si fem servir Serial.print enviarà un salt de línia al final i així la següent cosa que s'enviï quedarà a la línia següent.

	...
	Serial.print("a = ");
	Serial.println(a);
	...

El següent programa envia a l'ordinador els números de l'1 al 10 i els seus quadrats.

	int a;
void setup() {
	Serial.begin(9600);
}
void loop() {
	delay(1000);  // Espera 1 segon
	for (a=1; a <= 10; a++) {
		Serial.print("a = ");
		Serial.print(a);
		Serial.print("               a*a = ");
		Serial.println(a*a);
	}
		Serial.println();
		Serial.println();
}

El resultat que apareixerà a la pantalla del monitor sèrie serà:

a = 1               a*a = 1
a = 2               a*a = 4
a = 3               a*a = 9
a = 4               a*a = 16
a = 5               a*a = 25
a = 6               a*a = 36
a = 7               a*a = 49
a = 8               a*a = 64
a = 9               a*a = 81
a = 10              a*a = 100


a = 1               a*a = 1
a = 2               a*a = 4
...

Important: Alguns dels programes d'exemple dels sensors d'Adafruit tenen al començament del setup unes línies similars a les següents:

...
	while (!Serial);
		delay(500);
	Serial.begin(9600);
...

Aquestes dues línies equivalen a:

...
	while (!Serial){
		delay(500);
	}
	Serial.begin(9600);
...

Les claus no són necessàries quan la sentència té una única línia dins però ajuden a entendre millor el programa.

Aquestes línies bloquegen el programa fins que la connexió sèrie està disponible. Si no hi fossin ens trobaríem amb un petit problema amb les plaques Flora i Micro. Aquestes plaques triguen una mica des que es carrega el programa fins que la connexió sèrie està disponible. Si no fessim res la instrucció begin fallaria i no ens funcionaria la comunicació amb el monitor sèrie.

El problema apareix quan alimentem la placa amb una bateria ja que llavors la comunicació sèrie no està disponible i el programa queda bloquejat. En aquest cas tenim dues opcions. Una és substituir les dues línies marcades en taronja per un retard prou llarg. L'altra és suprimir aquestes línies i totes les vegades que es fa servir el canal sèrie quan el nostre programa ja no s'hagi de comunicar amb l'ordinador.

Format de les dades

Quan fem servir les funcions print i println si el que hi posem com a paràmetre són variables de text (o un text entre cometes) s'enviarà el ext corresponent com a caràcters ASCII. Si hi posem una variable numèrica, convertirà les xifres en caràcters ASCII per tal que es mostri correctament un nombre decimal.

En aquestes funcions, podem posar un segon caràcter que indica en quin format es mostren les dades. Els formats possibles són:

Paràmetre Format Exemple
Instruccions Sortida al monitor sèrie
No ho indiquem Decimal int n = 90;
print(b);
90
DEC Decimal int n = 90;
print(b, DEC);
90
HEX Hexadecimal int n = 90;
print(b, HEX);
5A
OCT Octal int n = 90;
print(b, OCT);
132
BIN Binari int n = 90;
print(b, BIN);
1011010
BYTE Caràcter que correspon
al codi ASCII indicat
int n = 90;
print(b, BYTE);
Z

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Licencia de Creative Commons
Esta obra de Oriol Boix está licenciada bajo una licencia no importada Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0.