Eai pessoal,
estou com um problema para a achar um código exemplo para um sensor de tensão, eu tentei criar vários códigos mas nenhum deles funcionaram com precisão. o sensor que estou usando é um sensor de corrente continua que lê de 0 a 25v. eu consegui um código que funciona mas ele só lê valores inteiros e eu preciso que ele leia pelo menos uma casa depois da virgula.
Codigo que encontrei:
# include <Wire.h>
int val11;
int val2;
void setup ()
{
Serial.begin (9600);
Serial.println ("Emartee.Com");
Serial.println ("Voltage:");
Serial.print ("V");
}
void loop ()
{
int temp;
val11 = analogRead (1);
temp = val11/4.092;
val11 = (int) temp ;
val2 = ((val11% 100) / 10);
Serial.println (val2);
delay (1000);
}
Abraço !
Tags:
isso ocorre porque vc está usando int, que significa inteiro. Números inteiros não permitem casas decimais (após a vírgula)
dê uma pesquisada sobre como usar float
eu tentei usar float e double e ele retorna um inteiro tbm, eu acho q da isso pq nesse código ele ta usando o resto da divisão o que sempre da um inteiro
esse sketch que vc nos mostrou está sendo usado int e portanto sabemos que não tem como o resultado aparecer com casas decimais. Só vai resultar em números inteiros mesmo
Portanto, cole pra nós o sketch que vc disse ter usado float pra tentarmos ver o que há de errado
# include <Wire.h>
int val11;
float val2;
void setup ()
{
Serial.begin (9600);
Serial.println ("Emartee.Com");
Serial.println ("Voltage:");
Serial.print ("V");
}
void loop ()
{
float temp;
val11 = analogRead (1);
temp = val11/4.092;
val11 = (float) temp ;
val2 = ((val11% 100) / 10);
Serial.println (val2);
delay (1000);
}
Eu tentei assim pois colocando a val1 como float ou double a ide do arduino acusa um erra falando que o operador % so aceita valores inteiros.
#include <Wire.h>
int val1;
float va12;
float LED1=0;
void setup()
{
pinMode(LED1,OUTPUT);
Serial.begin(9600);
Serial.println("Sensor de tenão DC");
Serial.println("Voltage: ");
Serial.print("V ");
}
void loop()
{
float temp;
val1=analogRead(0);
temp=val1/4.092;
val1=(float)temp;//
va12=((val1%100)/10);
Serial.println(va12);
Serial.println(va12);
va12=((va12+10));
Serial.println(va12);
delay(1000);
}
fiz isso imprimo o valor que esta sendo lido + 10 então é uma gambiarra mais pode ser útil
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por