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 11:59:14 2015 +0000
Revision:
2:e7915367de83
Parent:
1:e17894b4be01
Child:
3:2f32e34d820c
Con i nuovi pin dialoga

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 2:e7915367de83 8 Serial ardser(SERIAL_TX, SERIAL_RX); //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 2:e7915367de83 41 pc.printf("xxxxx\n\r");
MaxScorda 1:e17894b4be01 42 ardser.printf("Cont %d\n\r", cont++);
MaxScorda 0:dd5e64dd6caf 43 c=pc.getc(); //legge un carattere dalla seriale
MaxScorda 0:dd5e64dd6caf 44 if (c != 13) {
MaxScorda 0:dd5e64dd6caf 45 buffer[i]=c; // se il carattere è diverso da CarriageReturn (ASCII 13) lo memorizza nel buffer
MaxScorda 0:dd5e64dd6caf 46 i++; // incrementa il puntatore al buffer
MaxScorda 0:dd5e64dd6caf 47 } else {
MaxScorda 0:dd5e64dd6caf 48 pc.printf("\n\r");
MaxScorda 0:dd5e64dd6caf 49 buffer[i]=0; //se è un CR inserisci un carattere nullo nel buffer per delimitare la stringa
MaxScorda 0:dd5e64dd6caf 50 i=0; //azzera la posizione del puntatore del buffer pronto per la ricezione di una nuova stringa
MaxScorda 0:dd5e64dd6caf 51 if ((strcmp(buffer,"on")==0) // confronta la stringa ricevuta con le costanti accettate per il comando di accensione del led
MaxScorda 0:dd5e64dd6caf 52 ||(strcmp(buffer,"acceso")==0) //la funzione strcmp fa parte della libreria string standard del C e confronta 2 stringhe
MaxScorda 0:dd5e64dd6caf 53 ||(strcmp(buffer,"apriti sesamo")==0)) { //restituendo 0 se le stringhe sono uguali.
MaxScorda 0:dd5e64dd6caf 54 pc.printf("Led ACCESO \n\r");
MaxScorda 1:e17894b4be01 55 ardser.printf("Led ACCESO \n\r");
MaxScorda 0:dd5e64dd6caf 56 myled1 = 1; //Accende il led
MaxScorda 0:dd5e64dd6caf 57 }
MaxScorda 0:dd5e64dd6caf 58 if ((strcmp(buffer,"off")==0) //Confronto per i comandi di spegnimento del led
MaxScorda 0:dd5e64dd6caf 59 ||(strcmp(buffer,"spento")==0)
MaxScorda 0:dd5e64dd6caf 60 ||(strcmp(buffer,"chiuditi sesamo")==0)) {
MaxScorda 0:dd5e64dd6caf 61 pc.printf("Led SPENTO !\n\r");
MaxScorda 1:e17894b4be01 62 ardser.printf("Led SPENTO! \n\r");
MaxScorda 0:dd5e64dd6caf 63
MaxScorda 0:dd5e64dd6caf 64 myled1 = 0; // spegne il led
MaxScorda 0:dd5e64dd6caf 65 }
MaxScorda 0:dd5e64dd6caf 66 }
MaxScorda 0:dd5e64dd6caf 67 }
MaxScorda 0:dd5e64dd6caf 68 }