Skip to content

Commit

Permalink
Add funcao de calcular vel no arquivo do FreeRTOS
Browse files Browse the repository at this point in the history
  • Loading branch information
ielson committed Jul 6, 2018
1 parent 7021184 commit 22c4b47
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 6 deletions.
6 changes: 3 additions & 3 deletions TesteTasks/TesteTasks.ino
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

unsigned long ulIdleCycleCount = 0UL;

void vTaskFunction( void *pvParameters)
void checkVel( void *pvParameters)
{
char *pcTaskName;

Expand Down Expand Up @@ -35,8 +35,8 @@ void setup() {
static const char *pcTextForTask1 = "0\r\n";
static const char *pcTextForTask2 = "1\t\n";
//coloquei as tasks com prioridades diferentes
xTaskCreate(vTaskFunction, "Velocímetro", 128, (void*)pcTextForTask1, 1, NULL);
xTaskCreate(vTaskFunction, "Task 2", 128, (void*)pcTextForTask2, 2, NULL);
xTaskCreate(checkVel, "Velocímetro", 128, (void*)pcTextForTask1, 1, NULL);
xTaskCreate(checkVel, "Task 2", 128, (void*)pcTextForTask2, 2, NULL);

vTaskStartScheduler();

Expand Down
6 changes: 3 additions & 3 deletions XbeeControl/XbeeControl.ino
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ void setup(void)

void loop(void)
{
forward (70,70);
forward (255,255);
rawsensorValueEsq = analogRead(0);
rawsensorValueDir = analogRead(1);
if (rawsensorValueEsq < 600){ //Min value is 400 an
Expand Down Expand Up @@ -78,8 +78,8 @@ void loop(void)
if (velocidadedir<3){
velocidadedir=0;
}
Serial.print("Velocidade direita(cm/s) ");
Serial.println(velocidadedir);
//Serial.print("Velocidade direita(cm/s) ");
Serial.println(rawsensorValueEsq);
inicioVoltadir = fimVoltadir;
}
}
Expand Down
93 changes: 93 additions & 0 deletions carroFreeRTOS/carroFreeRTOS.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#include <Arduino_FreeRTOS.h>
//#include <semphr.h>
//#include <task.h>

unsigned long ulIdleCycleCount = 0UL;

// declarações de pinos
int E1 = 6; //M1 Speed Control
int E2 = 5; //M2 Speed Control
int M1 = 8; //M1 Direction Control
int M2 = 7; //M2 Direction Control

long fimVoltaEsq;
long inicioVoltaEsq;
int countEsq;

void checkVel( void *pvParameters)
{
char *pcTaskName;
pcTaskName = (char *) pvParameters;
for(;;)
{
//Serial.print("Task 1");
char dist = 9;
int sensorCountEsq0;
int sensorCountEsq1;
float velocidadeEsq;
float periodoEsq;

int rawSensorValueEsq = analogRead(1);
if (rawSensorValueEsq < 650){ //Min value is 400 an
sensorCountEsq1 = 1;
//Serial.print("Menor que 650 ");
//Serial.println(sensorCountEsq1);
}
else {
sensorCountEsq1 = 0;
//Serial.print("Maior que 650 ");
//Serial.println(sensorCountEsq1);
}
if (sensorCountEsq1 != sensorCountEsq0){
countEsq ++;
}
sensorCountEsq0 = sensorCountEsq1;
if (countEsq==8){
countEsq = 0;
fimVoltaEsq = millis();

float periodoEsq = (fimVoltaEsq - inicioVoltaEsq)/1000.;
Serial.print("Periodo: ");
Serial.println(periodoEsq);
velocidadeEsq = dist/periodoEsq;
if (velocidadeEsq<3){
velocidadeEsq=0;
}
//Serial.print("Velocidade esquerda(cm/s) ");
//Serial.println(velocidadeEsq);
inicioVoltaEsq = fimVoltaEsq;
}
vTaskDelay(50/portTICK_PERIOD_MS); //delay em num de ticks, se usar o / fica em ms
}
}

void vApplicationIdleHook(void)
{
ulIdleCycleCount++;
}

void setup() {

Serial.begin(115200);
analogWrite (E1,255);
digitalWrite(M1,LOW);
analogWrite (E2, 255);
digitalWrite(M2,LOW);
inicioVoltaEsq = millis();
countEsq = 0;
Serial.print("Teste Serial");


// put your setup code here, to run once:
xTaskCreate(checkVel, "Velocímetro", 128, NULL, 1, NULL);
vTaskStartScheduler();

for(;;);


}

void loop() {
// put your main code here, to run repeatedly:

}

0 comments on commit 22c4b47

Please sign in to comment.