/* Includes ---------------------- */ #include #include SoftwareSerial SWSerial(7, 6); //D2, D1 : Será usada a serial por software para comunicar com o EndDevice para deixar livre a serial do monitor serial char lerSerial(); char TrataRX(byte indice); char inData[255]; // Buffer com tamanho suficiente para receber qualquer mensagem char inChar=-1; // char para receber um caractere lido byte indice = 0; // índice para percorrer o vetor de char = Buffer char flag= false; //flag usada para avisar que a serial recebeu dados char inDataSerialMonitor[255]; // Buffer com tamanho suficiente para receber qualquer mensagem char inCharSerialMonitor=-1; // char para receber um caractere lido byte indiceSerialMonitor = 0; char flagMonitorSerial = false; char str_counter[128]; char flag_timer = false; int tempo = 0; int counter = 0; int acumula_erros = 0; void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); /* Initialize monitor serial */ Serial.println("Initializing..."); delay(500); SWSerial.begin(9600); delay(500); //timer // Configuração do timer1 TCCR1A = 0; //confira timer para operação normal pinos OC1A e OC1B desconectados TCCR1B = 0; //limpa registrador TCCR1B |= (1< 0) // Don't read unless// there you know there is data { if(indice < 254) // One less than the size of the array { inChar = SWSerial.read(); // Read a character inData[indice] = inChar; // Store it delay (10); indice++; // Increment where to write next inData[indice] = '\0'; // Null terminate the string } } if(indice>0) { return(1); //retorno da função avisando que recebeu dados na serial } else { return (0); } } char LerSerialMonitor( ) { indiceSerialMonitor=0; while (Serial.available() > 0) // Don't read unless// there you know there is data { if(indiceSerialMonitor < 254) // One less than the size of the array { inCharSerialMonitor = Serial.read(); // Read a character inDataSerialMonitor[indiceSerialMonitor] = inCharSerialMonitor; // Store it delay (10); indiceSerialMonitor++; // Increment where to write next inDataSerialMonitor[indiceSerialMonitor] = '\0'; // Null terminate the string } } if(indiceSerialMonitor>0) { return(1); //retorno da função avisando que recebeu dados na serial } else { return (0); } } ISR(TIMER1_OVF_vect) //interrupção do TIMER1 { TCNT1 = 0xC2F7; // Renicia TIMER digitalWrite(LED_BUILTIN, digitalRead(LED_BUILTIN) ^ 1); //inverte estado do led flag_timer = true; tempo++; }