Em linguagem c
Faça um programa que simule um sensor analógico do Arduino, utilizando número aleatório
(valores de 0 a 1023) para simular as leituras de um sensor de temperatura.
a) O programa deve ficar em loop lendo os valores do sensor, até que o usuário digitar uma teclar
para finalizar ou letra (escolha do grupo).
OBS: Não criar menu...
b) Cada número aleatório gerado dentro do laço deve ser convertido utilizando a fórmula:
resultado = (S * 500)/1023, onde S é o sinal do sensor (número gerado)
c) Se o resultado for maior que 60 o programa deve armazenar em um arquivo-texto a data e
hora do sistema e o valor da variável resultado.
d) Quando o usuário digitar a tecla escolhida para finalizar, o arquivo deve ser fechado e o
programa finalizado.
Soluções para a tarefa
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int temps_;
int fptr;
FILE *fp;
void pausa(int n_segundos){ // causa um delay na execucao do loop
int milli = 1000 * n_segundos;
clock_t start_time = clock();
while (clock() < start_time + milli);
}
int Temps () { // Calcula a temperatura e armazena em um arquivo
time_t current_time;
char* c_time_string;
current_time = time(NULL);
c_time_string = ctime(¤t_time);
int Random = rand() % 1023; // Gera os números de 0 a 1023
int temps_ = (Random*500)/1023; // Faz a conta da função
printf("Temp:%d\n",temps_);
FILE *fp; // Abre o arquivo
fp = fopen("temperatura.txt", "a"); // Da o nome e o tipo ao ponteiro
if(temps_>=60){ // Checa se a temperatura é maior que 60
fprintf(fp, "Temperatura: %d Data: %s\n", temps_, c_time_string); //Iimprime a temperatura e a data no arquivo
}
}
int main () {
srand(time(NULL)); // Faz os valores da rand() oscilarem
for(; ; ){ // Loop infinito
pausa(1); // Delay de 1 segundo
Temps(); // Chamada da função Temps
if(kbhit()){ // Quando qualquer tecla for pressionada o loop quebra, funcao da conio.h
break;
}
}
fclose(fp); // fecha o arquivo
}