Bene ragazzi,
grazie al suggerimento di Maurotec, il punto decimale e ok,
lo schema che avevo postato era quello che avevo fatto le prove,
ora invece posto lo schema del MAX (se serve posto anche il resto) sul quale stampo la temperatura letta con il DS18B20,
il programma e questo
/************************************************************************
*leggo il sensore DS18B20
*visualizzo la temperatura su 3 display a 7 segmenti
*utilizzo il draiver MAX7219
*
***********************************************************************/
#include "LedControl.h"
#include <OneWire.h>
#include <DallasTemperature.h>
/*********parte per leggere il sensoreDS**/
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tmp_address;
float temp0 = 0;
float temp = 0;
int gradi = 0;
int numberOfDevices;
/****************************************/
/////////////////////////(pin su arduino)
LedControl lc = LedControl(12, 11, 10, 1);//Pin del MAX (DIN, CLK, LOAD(CS), 1)
/**variabili e define per il calcolo del numero**/
//unsigned long delaytime = 250;
//int cunter = 0;
int tmp = 0; //variabile per il calcolo unita, decine, centinaia, migliaia
#define unita cifre[0]
#define decine cifre[1]
#define centinaia cifre[2]
byte cifre[3];
/*************************************/
void setup() {
// Serial.begin(9600);
/**per display*************/
lc.shutdown(0, false);
lc.setIntensity(0, 10);
lc.clearDisplay(0);
/*******per sensore**************/
numberOfDevices = 1;
sensors.begin();
delay(1000);
}
void loop() {
sensors.requestTemperatures(); // Comando per leggere la temp.
temp0 = sensors.getTempCByIndex(0);
temp = temp0 * 10;
gradi = (int)temp;
tmp = gradi;
for(byte i = 0; i < 3; i++){
cifre[i] = tmp % 10;
tmp = tmp /10;
}
lc.setDigit(0, 2, (byte) centinaia, false);
lc.setDigit(0, 1, (byte) decine, true);
lc.setDigit(0, 0, (byte) unita, false);
delay(50);
}
ora tutto funziona,
spero di non aver commesso errori
mille grazie a tutti voi