LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: jmacedo em 22 de Maio de 2012, 16:35
-
Caros amigos,
Tenho andado de roda do meu Arduino Uno a fazer algumas experiencias.
Hoje comprei o LM35DZ, liguei-o e correu +/-.
A parte que correu menos bem foi que aparece no lcd Temp: 21.47 e um caractere que não se parece com nada.
Há hipotese de aparecer só 21.4º ??
Já agora onde posso encontrar o IC DS1307 ??
Obrigado
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 7, 8, 9, 10);
int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 1; //valorLido convertido para temperatura
void setup() {
Serial.begin(9600); //Inicializa comunicação Serial
pinMode(13, OUTPUT);
}
void loop() {
valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius
lcd.begin(0, 0);
lcd.print("Temp:");
lcd.println(temperatura);
delay(1000); //espera 5 segundos para fazer nova leitura
}
-
Uma imagem vale mais que 1000 palavras ;)
-
Em relacao ao caractere nao posso fazer grandes comentarios a nao ser que tenha a ver com o model em especial ?!?
Em relacao ao resto , nao te esquecas que a melhor maneira de usar tal sensor e teres uma voltagem de referencia( tal como usares por exe,plo os 3.3 volts) ja que os ciruitos difitais tendem a ser bastante ruidosos...
No TMP36, com voltagem de referencia sem ser os 5 volts da placa, com uma PSU exterior de qualidade, da-me leituras bem correctass ( alias ainda hoje estive a experimentar com a Mega enviada pelo patrocinador ods meu projectos auido)
-
Boas,
Já consegui fazer desaparecer o dito caracter.
Bastou acrescentar duas linhas;
lcd.begin(20, 2);
lcd.setCursor(0, 1);
Com respeito ao LM35DZ tenho-o ligado ;
Pino 1 - 5v
Pino 2 - A0
Pino 3 - GND
Será que deveria estar no 3.3v ??
-
Nao e obrigatorio, ja que ele trabalha assim...Mas se comecares acrescentar muita coisa, pode comecar a haver nise demais... Nesse caso tens sempre a opcao de usar os 3.3V como referencia( se o 35 aceitar...eu sei que o 36 aceita)
-
Boas,
Já está ligado ao 3.3v e continua a funcionar.
Agora resta descubrir como colocar a temperatura 00.0º em vez de 00.00 >:(
-
tens que ver a datasheet do LCD entao, e ver se tem o caractere que procuras... Ou podes sempre usar/modificar o sketch exemplo auto scroll para ver se la esta de base no lcd( aumenta o numero de caracteres para a volta de 240 ou um pouco mais
Se for um hd44780/st066u compativel tem o caractere em principio ( o meu 1602b tem)
senao podes sempre criar um caractere peesonalizado( ve nos tutoriais do arduino site).
Ou fazer como um dos sketches exemplos muito conhecidos e ter ambos Celsius e Fahrenheit no Display, usando C e F em vez do sinal º
-
Ou referias-te a como fazer desta maneira ?!?
exemplo com serial monitor
/*
Adding Strings together
Examples of how to add strings together
You can also add several different data types to string, as shown here:
created 27 July 2010
modified 2 Apr 2012
by Tom Igoe
http://arduino.cc/en/Tutorial/StringAdditionOperator
This example code is in the public domain.
*/
// declare three strings:
String stringOne, stringTwo, stringThree;
void setup() {
// initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
stringOne = String("stringThree = ");
stringTwo = String("this string");
stringThree = String ();
// send an intro:
Serial.println("\n\nAdding strings together (concatenation):");
Serial.println();
}
void loop() {
// adding a constant integer to a string:
stringThree = stringOne + 123;
Serial.println(stringThree); // prints "stringThree = 123"
// adding a constant long interger to a string:
stringThree = stringOne + 123456789;
Serial.println(stringThree); // prints " You added 123456789"
// adding a constant character to a string:
stringThree = stringOne + 'A';
Serial.println(stringThree); // prints "You added A"
// adding a constant string to a string:
stringThree = stringOne + "abc";
Serial.println(stringThree); // prints "You added abc"
stringThree = stringOne + stringTwo;
Serial.println(stringThree); // prints "You added this string"
// adding a variable integer to a string:
int sensorValue = analogRead(A0);
stringOne = "Sensor value: ";
stringThree = stringOne + sensorValue;
Serial.println(stringThree); // prints "Sensor Value: 401" or whatever value analogRead(A0) has
// adding a variable long integer to a string:
long currentTime = millis();
stringOne="millis() value: ";
stringThree = stringOne + millis();
Serial.println(stringThree); // prints "The millis: 345345" or whatever value currentTime has
// do nothing while true:
while(true);
}
-
Boas,
Obrigado pela ajuda,
Agora ficou assim 27.31C ;)
-
Cá estou eu outra vez a inventar. ;D
Por acaso já alguem utilizou este componente M48T02 ??
Deixo o Datasheet - M48T02 - 16 Kbit 2Kb x8 TIMEKEEPER[ SRAM - STMicroelectronics
É que caso funcione tenho cá por casa um. ???
-
Isso parace se um RTC, nao e ?!? a Sram nesses chips costuma ser para ajudar a manter mes, ano, e ountras implementacoees tipo a mudanca da hora, etc... Mas e o que parece !! Nao serei a melhor pessoa para responder a isso.
Memoria so tenho alguma experiencia com o 24LC256, e mesmo assim so experimentei o basico ate agora.