Console Serial IO con display OLED e seriale asincrona

Dependencies:   mbed BufferedSerial AserialIOFuncLib SSD1306 TerminalPlusV2

Fork of SerialIO by Max Scordamaglia

Console Serial IO con display OLED e seriale asincrona

Committer:
MaxScorda
Date:
Thu May 21 00:08:26 2015 +0000
Revision:
1:e17894b4be01
Parent:
0:dd5e64dd6caf
Child:
2:e7915367de83
Implementato config.h e seconda seriale per arduino anche se non funzionante

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MaxScorda 0:dd5e64dd6caf 1 #include "mbed.h"
MaxScorda 1:e17894b4be01 2 #include "config.h"
MaxScorda 1:e17894b4be01 3
MaxScorda 0:dd5e64dd6caf 4 DigitalOut myled1(LED1); //definisce myled
MaxScorda 0:dd5e64dd6caf 5 DigitalOut myled2(LED2); //definisce myled
MaxScorda 0:dd5e64dd6caf 6 InterruptIn mybutton(USER_BUTTON);
MaxScorda 0:dd5e64dd6caf 7 Serial pc(SERIAL_TX, SERIAL_RX); //Apertura della seriale 2
MaxScorda 1:e17894b4be01 8 Serial ardser(D8, D2); //Apertura della seriale 1 *opzionale vedi sotto
MaxScorda 1:e17894b4be01 9
MaxScorda 0:dd5e64dd6caf 10
MaxScorda 0:dd5e64dd6caf 11
MaxScorda 0:dd5e64dd6caf 12 void pressed()
MaxScorda 0:dd5e64dd6caf 13 {
MaxScorda 0:dd5e64dd6caf 14 pc.printf("\f");
MaxScorda 0:dd5e64dd6caf 15 pc.printf("*** Reset Screen ***\n\r\n");
MaxScorda 0:dd5e64dd6caf 16 }
MaxScorda 0:dd5e64dd6caf 17
MaxScorda 0:dd5e64dd6caf 18 void banner()
MaxScorda 0:dd5e64dd6caf 19 {
MaxScorda 0:dd5e64dd6caf 20 pc.printf("\f");
MaxScorda 0:dd5e64dd6caf 21 pc.printf("----- Boot screen -----\n\r");
MaxScorda 0:dd5e64dd6caf 22 pc.printf("--- Nucleo Scorda IO Test ---\n\r\n");
MaxScorda 0:dd5e64dd6caf 23 }
MaxScorda 0:dd5e64dd6caf 24
MaxScorda 0:dd5e64dd6caf 25
MaxScorda 0:dd5e64dd6caf 26 int main()
MaxScorda 0:dd5e64dd6caf 27 {
MaxScorda 0:dd5e64dd6caf 28 char c; // variabile che contiene il carattere appena ricevuto
MaxScorda 0:dd5e64dd6caf 29 char buffer[128]; // buffer di accumulo dei caratteri in sequenza
MaxScorda 0:dd5e64dd6caf 30 char i=0; // variabile di comodo per il conteggio dei caratteri
MaxScorda 1:e17894b4be01 31 //Serial config
MaxScorda 1:e17894b4be01 32 pc.baud(SERIAL1BAUD);
MaxScorda 1:e17894b4be01 33 ardser.baud(SERIALARDBAUD);
MaxScorda 1:e17894b4be01 34 //pc.format(int bits=8, Parity parity=SerialBase::None, int stop_bits=1)
MaxScorda 1:e17894b4be01 35
MaxScorda 1:e17894b4be01 36 int cont=0;
MaxScorda 0:dd5e64dd6caf 37 mybutton.fall(&pressed);
MaxScorda 0:dd5e64dd6caf 38 banner();
MaxScorda 0:dd5e64dd6caf 39
MaxScorda 0:dd5e64dd6caf 40 while(1) {
MaxScorda 1:e17894b4be01 41 ardser.printf("Cont %d\n\r", cont++);
MaxScorda 0:dd5e64dd6caf 42 c=pc.getc(); //legge un carattere dalla seriale
MaxScorda 0:dd5e64dd6caf 43 if (c != 13) {
MaxScorda 0:dd5e64dd6caf 44 buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
MaxScorda 0:dd5e64dd6caf 45 i++; // incrementa il puntatore al buffer
MaxScorda 0:dd5e64dd6caf 46 } else {
MaxScorda 0:dd5e64dd6caf 47 pc.printf("\n\r");
MaxScorda 0:dd5e64dd6caf 48 buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
MaxScorda 0:dd5e64dd6caf 49 i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
MaxScorda 0:dd5e64dd6caf 50 if ((strcmp(buffer,"on")==0) // confronta la stringa ricevuta con le costanti accettate per il comando di accensione del led
MaxScorda 0:dd5e64dd6caf 51 ||(strcmp(buffer,"acceso")==0) //la funzione strcmp fa parte della libreria string standard del C e confronta 2 stringhe
MaxScorda 0:dd5e64dd6caf 52 ||(strcmp(buffer,"apriti sesamo")==0)) { //restituendo 0 se le stringhe sono uguali.
MaxScorda 0:dd5e64dd6caf 53 pc.printf("Led ACCESO \n\r");
MaxScorda 1:e17894b4be01 54 ardser.printf("Led ACCESO \n\r");
MaxScorda 0:dd5e64dd6caf 55 myled1 = 1; //Accende il led
MaxScorda 0:dd5e64dd6caf 56 }
MaxScorda 0:dd5e64dd6caf 57 if ((strcmp(buffer,"off")==0) //Confronto per i comandi di spegnimento del led
MaxScorda 0:dd5e64dd6caf 58 ||(strcmp(buffer,"spento")==0)
MaxScorda 0:dd5e64dd6caf 59 ||(strcmp(buffer,"chiuditi sesamo")==0)) {
MaxScorda 0:dd5e64dd6caf 60 pc.printf("Led SPENTO !\n\r");
MaxScorda 1:e17894b4be01 61 ardser.printf("Led SPENTO! \n\r");
MaxScorda 0:dd5e64dd6caf 62
MaxScorda 0:dd5e64dd6caf 63 myled1 = 0; // spegne il led
MaxScorda 0:dd5e64dd6caf 64 }
MaxScorda 0:dd5e64dd6caf 65 }
MaxScorda 0:dd5e64dd6caf 66 }
MaxScorda 0:dd5e64dd6caf 67 }