Ir ao conteúdo
  • Cadastre-se

Hiago Martins

Membros Plenos
  • Total de itens

    55
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Atualizei o firmware do ESP-01 para receber comandos AT. Porém, sempre que mando o comando "AT", ele retorna "ERROR" ao invés de "OK". O que pode ser? Estou a muito tempo tentando solucionar esse problema!!
  2. @Isadora Ferraz e @Renato.88 , basicamente o meu circuito e composto por um microcontrolador e alguns relés que funcionam como uma ponte H. Eu ainda não fiz nenhum programa específico, apenas um blink para os relés para testar a placa. Porém, mesmo sem o microcontrolador, os relés permanecem acionados. Esse é o esquemático da parte do microcontrolador.E esse é o esquemático dos relés.
  3. Olá pessoal. Recentemente fiz uma placa de circuito impresso com um circuito que possui 4 relés e 4 transistores. Antes de fazer a placa eu montei o circuito em uma protoboard e funcionou perfeitamente. O problema é que na placa os relés já estão saindo acionados sem o atmega328p mandar 5v. Medi a tensão na base dos transistores e sempre tem aproximadamente 0.7v. O que pode ser?? Fico no aguardo!
  4. Fala galera. Alguém que já tenha usado o Firebase com Arduino ou ESP8266 sabe de alguma função que me permita armazenar a hora e a data no meu banco de dados (Hora e data da rede), sem usar um RTC?
  5. Fala pessoal. Estou usando o ESP32 para enviar dados ao Google Sheets. O código está funcionando, porém a conexão com o host cai a partir da do 5 envio e o ESP32 já não consegue mais conectar. Alguém pode me dar uma força?? Segue o código: #include "HTTPSRedirect.h" #include <WiFi.h> const char* ssid = "Martins07"; const char* password = "casa0285"; const char *ID = "AKfycbzgQ11whfJjj4Kd5Bq0LYfn13rRvCO8k5Px2nw64tNRu47r3TA0"; const char* host = "script.google.com"; const char* googleRedirHost = "script.googleusercontent.com"; const int httpsPort = 443; HTTPSRedirect client(httpsPort); const long intervalo = 1000; long previusMillis; int tentativas; String url = String("/macros/s/") + ID + "/exec?"; const char* fingerprint = "4f649cbf7ed629ad3808a904c5be664897e5da19"; void setup() { Serial.begin(9600); void ConectaWIFI(); void ConectaSheets(); } void loop() { if (millis() - previusMillis >= intervalo) { MantemConectado(); int data = 10; enviaDados("SoilMoisture", data); previusMillis = millis(); } } void ConectaSheets(){ Serial.print(String("Conectando a: ")); Serial.println(host); if (!client.connected()){ if(client.connect(host, httpsPort)){ Serial.println("---Conectado ao host!---"); } else Serial.println("---Falha ao conectar ao host!---"); } if (client.verify(fingerprint, host)) Serial.println("---Certificado de segurança correspondente!---"); else Serial.println("---Certificado de segurança não correspondente!---"); } void ConectaWIFI(){ if(WiFi.status() == WL_CONNECTED) return; else { //WiFi.config(local_IP, gateway, subnet, DNS); WiFi.begin(ssid, password); Serial.print("AGUARDE - Conectando ao WIFI"); while((WiFi.status() != WL_CONNECTED)&& (tentativas < 10)){ Serial.print("."); delay(500); tentativas++; } if(tentativas == 10 ){ Serial.println("\nERROR - Não foi possível conectar a rede!"); Serial.print("Reenicie o sistema!"); } else{ Serial.println("\nConectado ao WIFI com sucesso!"); Serial.print("IP: "); Serial.println(WiFi.localIP()); tentativas = 0; } } } void enviaDados(String tag, float value){ String urlFinal = url + "tag=" + tag + "&value=" + String(value); client.printRedir(urlFinal, host, googleRedirHost); } void MantemConectado(){ if (WiFi.status() != WL_CONNECTED) ConectaWIFI(); if(!client.connected()) ConectaSheets(); }
  6. Fala pessoal. Coloquei um SSD no lugar do meu HDD e coloquei o HDD no lugar do dvd-r. Percebi que o HDD não desliga junto com o notebook e acaba "desligado errado". Faz o mesmo som que faz quando acontece uma queda de energia subida (desliga direto no botão ou puxa da tomada). Alguém sabe como posso resolver isso?? Alguma configuração que faça com que o notebook só desligue depois do HDD??
  7. Estou precisando criar um programa que SELECIONE um ARQUIVO dentro de um cartão SD ("exemplo.csv") e envie via bluetooth. Não quero enviar os dados do arquivo e sim o arquivo. Não encontrei nada semelhante a isso na internet. Alguém pode me ajudar?
  8. @devair1010 muito obrigado!! de novo Meu código ficou assim, só falta terminar o que minha tarefa me pede. #include <stdio.h> struct { long data = 0; float temp = 0.0; float press = 0.0; float vel = 0.0; int hora = 0; int dir = 0; int umid = 0; }lin, media; int conta_linha( char arq [50] ){ FILE*entrada = fopen(arq, "r"); int y; int conta = -1; char aux[50]; fgets(aux, 50, entrada); while(!feof(entrada)){ fgets(aux, 50, entrada); for(y=0; y<50; y++){ if(aux[y] == '\n') conta ++; } } fclose(entrada); return conta; } int x = 1; int i, final, teste, l_total; char nome_in[50]; int pred[100][2]; FILE*entrada; FILE*saida; int main(){ scanf("%s", &nome_in); entrada = fopen(nome_in, "r"); saida = fopen("mediahora.csv", "w"); l_total = conta_linha(nome_in); while(final <= l_total){ fscanf(entrada, "%ld;%d;%f;%d;%f;%d;%f \n", &lin.data, &lin.hora, &lin.temp, &lin.umid, &lin.press, &lin.dir, &lin.vel); if(lin.hora == 0){ for(i = 0; i<1000; i++){ teste = 0; if(pred[i][0] == lin.dir) { teste++; break; } } if(teste) pred[i][1]++; else{ for(i = 0; i<1000; i++){ if(pred[i][0] == 0){ pred[i][0] = lin.dir; pred[i][1] = 1; break; } } } } final++; } int pos; int inicial = pred[0][1]; for(i = 0; i<100; i++){ if(pred[i][1]>inicial){ inicial = pred[i][1]; pos = i; } } printf("O numero %d apareceu %d vezes!\n", pred[pos][0], inicial); fclose(entrada); fclose(saida); return 0; }
  9. Tenho que fazer leituras de linhas e no fim imprimir um determinado valor predominante ( o que mais apareceu e não uma média). No exemplo abaixo, o valor predominante é o 5, então, no fim do processo, eu deveria imprimir algo como: "O número 5 é o predominante!". Como posso fazer isso? 20190101;0000;23.2;89;1011.5;9;3.3 20190101;1200;26.8;88;1011.8;5;3.3 20190101;1800;29.2;79;1010.2;5;3.3 20190102;0000;27.2;83;1009.5;5;3.3 20190102;1200;28.2;84;1007.5;5;0.7 20190102;1800;39.4;47;1002.2;32;3.6 20190103;0000;26.3;96;1003.5;5;1.3 20190103;1200;22.8;95;1005.2;32;0.7
  10. O código abaixo deveria ler linhas de um arquivo de dados e caso as datas das linhas fossem iguais ele deveria fazer uma media dos seus valores, só que não está funcionando. Ele está fazendo apenas a média das duas primeiras linhas e ignorando o resto. Alguém conseguiria me dar um caminho? exemplos de linhas a serem lidas: 20190101;0000;23.2;89;1011.5;9;3.3 20190101;1800;28.2;44;1012.0;23;3.5 //Faria uma media para o dia 01/01 20190102;0000;21.0;79;1012.2;36;2.0 20190102;1200;23.2;89;1011.5;9;3.3 20190102;1800;28.3;44;1012.0;23;3.5 //Faria uma media para o dia 02/01 20190103;0000;24.4;79;1012.2;36;2.0 //Faria uma média para o dia 03/01 #include <stdio.h> int x = 0; struct { long data = 0; float temp = 0.0; float press = 0.0; float vel = 0.0; int hora = 0; int dir = 0; int umid = 0; }lin, lin2, media; int main(){ FILE*entrada = fopen("teste.csv", "r"); fscanf(entrada, "%ld;%d;%f;%d;%f;%d;%f \n", &lin.data, &lin.hora, &lin.temp, &lin.umid, &lin.press, &lin.dir, &lin.vel); while(!feof(entrada) ){ if((lin.data == lin2.data) || (lin2.data == 0)){ lin2.data = lin.data; lin2.temp = lin2.temp + lin.temp; lin2.press = lin2.press + lin.press; lin2.umid = lin2.umid + lin.umid; x++; } else{ media.temp = lin2.temp/x; media.press = lin2.press/x; media.umid = lin2.umid/x; printf("%ld;%.1f;%d;%.1f \n", lin2.data, media.temp, media.umid, media.press ); lin2.data = lin.data; lin2.temp = lin.temp; lin2.press = lin.press; lin2.umid = lin.umid; media.data = media.temp = media.umid = media.press = 0; x = 0; } fscanf(entrada, "%ld;%d;%f;%d;%f;%d;%f \n", &lin.data, &lin.hora, &lin.temp, &lin.umid, &lin.press, &lin.dir, &lin.vel); } fclose(entrada); return 0; }
  11. Preciso de uma função que faça a mesma coisa que a fseek( ), só que não para um tipo FILE*, mas sim para uma string.
  12. @Flávio Pedroza tanto faz, desde que funcione
  13. @r_Tray e @devair1010, me dêem uma força aí
  14. Pessoal, é o seguinte: eu tenho uma serie de dados de medições de sensores separados linha a linhas. Nessas linhas eu tenho a data em que as medições foram feitas. O que eu preciso fazer é analisar se as datas de uma linha e outra são iguais, se sim o meu programa deve fazer a média entre os valores dos sensores. exemplo: (data;hora;temperatura;umidade;pressão) 20190101;1200;33.3;88;1010.5 20190101;1800;27.3;80;1011.8 20190101;0000;18.7;66;1015.6 20190102;1200;30.3;87;1009.3 20190102;1800;28.7;78;1017.5 As linhas 1, 2 e 3 tem datas iguais, ou seja, o programa deve fazer uma média entre os dados dos sensores das linhas 1, 2 e 3. A linha 4 não é igual a linha três, mas é igual a 5, ou seja, o programa deve fazer uma média entre os dados do sensores das linhas 4 e 5. Como posso começar?? Me ajudem!!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...