Show Posts
|
|
Pages: [1]
|
|
2
|
International / Software / Re: Problemi con Leonardo e LCD Display standard
|
on: November 11, 2012, 12:52:46 pm
|
|
Ho fatto un altro test.
Provato l'esempio di base "hello World" e tutto funzia, a questo punto mi vien da pensare che per qualche oscuro motivo la libreria I2C vada in conflitto con la trasmissione sul LCD. Possibile ? Dico questo perchè se nel programma della temperatura metto anche un semplice lcd.print("hello"); i caratteri sono indecifrabili.
|
|
|
|
|
3
|
International / Software / Re: Problemi con Leonardo e LCD Display standard
|
on: November 11, 2012, 12:43:54 pm
|
|
nulla da fare sempre caratteri ostrogoti, mi inizia a venire il dubbio che sia un problema hardware ... Il fatto è che questo programma lo avevo già provato con Arduino Uno rev.3 e LCD shield e tutto funzionava alla grande, adesso volevo portarlo sulla Leonardo con LCD standard e non funziona più.
Andiamo per gradi ed a esclusione:
- IDE usato x la uno 1.00 e 1.01, adesso leonardo 1.01 e 1.02 - LCD shield (driver LCD4bit_mod) vs LCD standard con libreria standard (naturalmente modificando i comandi) - driver i2c lo stesso (tendo ad escludere che sia questo il colpevole perchè dalla seriale leggo correttamente le temperature, quindi l'interfacciamento sembra corretto)
l'unica cosa che mi viene da pensare è che ci sia un errore nella conversione float ---> char
altrimenti un problema hardware che mi fa incazzare qualcosa e manda in panico la scheda, ma mi sembra un programma banale.
|
|
|
|
|
7
|
International / Software / Re: Problemi con Leonardo e LCD Display standard
|
on: November 10, 2012, 11:42:36 am
|
|
cece il programma è quello che ho postato, sembra che quando vado ad utilizzare sprintf mi vada tutto in tilt, se io uso lcd.print("stringa") funge, se invece utilizzo come nel programma sopracitato lcd.print(buf) derivato dal comando sprintf mi escono scritte tipo cinesi.
|
|
|
|
|
9
|
International / Software / Re: Problemi con Leonardo e LCD Display standard
|
on: November 10, 2012, 11:10:53 am
|
Stavo provando questo programma, ho aggiunto io la parte x l'LCD #include <i2cmaster.h> #include <LiquidCrystal.h> #include <stdio.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); char buf[10];
void setup(){ lcd.begin(16, 2); Serial.begin(9600); Serial.println("Setup...");
i2c_init(); //Initialise the i2c bus PORTD = (1 << PORTD2) | (1 << PORTD3);//enable pullups }
void loop(){ int dev = 0x5A<<1; int data_low = 0; int data_high = 0; int pec = 0;
i2c_start_wait(dev+I2C_WRITE); i2c_write(0x07);
// read i2c_rep_start(dev+I2C_READ); data_low = i2c_readAck(); //Read 1 byte and then send ack data_high = i2c_readAck(); //Read 1 byte and then send ack pec = i2c_readNak(); i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614) double tempData = 0x0000; // zero out the data int frac; // data past the decimal point
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte. tempData = (double)(((data_high & 0x007F) << 8) + data_low); tempData = (tempData * tempFactor)-0.01;
float celcius = tempData - 273.15; float fahrenheit = (celcius*1.8) + 32;
Serial.print("Celcius: "); Serial.println(celcius); sprintf(buf, "Temperatura!%d", celcius); lcd.write(buf);
Serial.print("Fahrenheit: "); Serial.println(fahrenheit);
delay(5000); // wait a second before printing again lcd.clear(); delay(5000); }
Scusate per la domanda ... molto probabilmente è una idiozia ... ma è possibile che il mio display che proviene dalla cina mi riporti dei caratteri cinesi al posto degli europei ???
|
|
|
|
|
10
|
International / Software / [Risolto]Problemi con Leonardo e LCD Display standard
|
on: November 10, 2012, 10:39:06 am
|
Buongiorno, Sto lavorando con una Leonardo e un LCD standard, il programma che sto testando fa la lettura della temperatura da una sonda di temperatura I2C. La lettura della temperatura avviene in modo corretto, in quanto rimando sulla seriale il valore e controllando col serial monitor i valori passano correttamente. Il mio problema arriva quando tento di scrivere il valore su LCD standard. Se io invio una stringa con il seguente comando funziona e appare correttamente: lcd.print("temperatura"); quando invece cerco di scrivere il valore della variabile che contiene la temperatura con il seguente comando: lcd.print(temp); mi appaiono sul display dei caratteri incomprensibili. Sono abbastanza alle prime armi con la programmazione siate clementi 
|
|
|
|
|