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 !

Exibições: 1070

Responder esta

Respostas a este tópico

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 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço