Hola lo primero gracias por toda la info que hay en el foro.
me estoy iniciando en esto de arduino y me e embarcado en el primer projecto.
Se trata de dos sondas tipo K una pantalla lcd 16x2 y un ic2 para ahorrar entradas en la placa.
Uso un vinciduino, que creo que es igual a un leonardo.
lo que es el montaje de cables lo tengo claro, pero la lcd me esta dando problemas de que se come caracteres, me explico:
yo pongo este codigo
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 16);
void setup()
{
lcd.backlight();
lcd.init();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print("Prueba");
lcd.setCursor(0, 1);
lcd.print("2linia");
}
con esto tendría que salir en pantalla Prueba en la primera linea y 2linea en la segunda, pero solo aparece "P" y en segunda linea "2" se come el resto, si intento ponerlos en en (1,0) por ejemplo mueve la palabra pero solo se ve una letra.
tengo que ponerlo letra a letra asi:
lcd.setCursor(0, 0);
lcd.print ( "S" );
lcd.setCursor(1,0);
lcd.print("O");
lcd.setCursor(2,0);
lcd.print("N");
lcd.setCursor(3,0);
lcd.print("D");
lcd.setCursor(4,0);
lcd.print("A");
lcd.setCursor(5,0);
lcd.print("1");
lcd.setCursor(6,0);
asi si sale en la primera linea SONDA1, pero claro asi no se tiene que hacer.
e seguido metiendo codigo, el de las sondas y el codigo final me a quedado asi
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <MAX6675.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int LED1= 6;
int CS0 = 13; // CS pin on MAX6675
int CS1 = 10; // CS pin on MAX6675
int SO = 12; // SO pin of MAX6675
int SCK1 = 11; // SCK pin of MAX6675
int units = 1; // Units to readout temp (0 = ˚F, 1 = ˚C)
float error1 = 0.0; // Temperature compensation error
float error2 = 0.0; // Temperature compensation error
int status = 0; // Varible to control the status led
float temp[2];
MAX6675 temp0(CS0,SO,SCK1,units,error1);
MAX6675 temp1(CS1,SO,SCK1,units,error2);
void setup()
{
Serial.begin(9600);
pinMode(LED1, OUTPUT);
lcd.begin(16,2);
//Iniciamos el fondo retroiluminado
}
void loop()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print ( "S" );
lcd.setCursor(1,0);
lcd.print("O");
lcd.setCursor(2,0);
lcd.print("N");
lcd.setCursor(3,0);
lcd.print("D");
lcd.setCursor(4,0);
lcd.print("A");
lcd.setCursor(5,0);
lcd.print("1");
lcd.setCursor(6,0);
lcd.print(":");
temp[0] = temp0.read_temp(5); // Read the temp 5 times and return the average value
temp[1] = temp1.read_temp(5); // Read the temp 5 times and return the average value
Serial.print("Temperature: \t"); // Print Header to Serial
for (int i=0; i<4; i++){ // Loop through each of the four temps
status = 0; // Reset the status to 0 before we check for errors
if(temp[i] == -1) { // If there is an error with the TC, temperature will be -1
Serial.print("ERROR!"); // Temperature is -1 and there is a thermocouple error
status++; // Add to the status varible so status LED turns on
} else {
Serial.print( temp[i] ); // Print the temperature to Serial
}
Serial.print("\t"); // Print a tab to demininate the data
}
if(status > 0) { // Check if we should turn on the status LED
digitalWrite(LED1, HIGH); // Turn on the status LED
} else {
digitalWrite(LED1, LOW); // Turn off the status LED
}
Serial.println(" ");
lcd.setCursor(8, 0);
lcd.print( temp[0] );
lcd.setCursor(10, 1);
lcd.print(temp [1]);
lcd.setCursor(0, 1);
lcd.print ( "S" );
lcd.setCursor(1,1);
lcd.print("O");
lcd.setCursor(2,1);
lcd.print("N");
lcd.setCursor(3,1);
lcd.print("D");
lcd.setCursor(4,1);
lcd.print("A");
lcd.setCursor(5,1);
lcd.print("2");
lcd.setCursor(6,1);
lcd.print(":");
delay(9000000000000000);
}
pero al sacarme las temperaturas de las sondas se come el digito pegado al punto por la izquierda (que es rarisimo) quiero decir que la sonda en el monitor serie me marca 23.50cº pues en la pantalla se ve 2.50cº el 3 se lo come que hago mal? lo e probado de todas las formas posibles y no consigo que salgo todo normal.
otra cosa es que si no pongo el delay(9000000000); todo el rato enciende y apaga los caracteres, como lo arreglo?
gracias de antemano