• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wyswietlacz 7 segmentowy + db18b20
#12
Jako, że idą święta to podam gotowe rozwiązanie ale...
aby nie było łatwo to dla takiego shieldu jak poniżej  Smile

[Obrazek: termometr.jpg]

Pod shieldem jest zwykły klon Arduino UNO.
Czujnik temperatury to: DS 18B20 Dallasa (program sam odczytuje adres czujnika).

Myślę, że z adaptacją do innych projektów nie będzie problemu.
Poniżej kod:

Kod:
// Temperatura na wyświetlaczu LED.

#include <OneWire.h>
#include <DS18B20.h>
#include <TimerOne.h>

const byte ONEWIRE_PIN = A4;

int latchPin = 4;
int clockPin = 7;
int dataPin = 8;
char pos;

unsigned char Dis_table[] = {
 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

unsigned char Dis_table1[] = {
 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10};

unsigned char Dis_buf[]   = {
 0xF1, 0xF2, 0xF4, 0xF8};

unsigned char disbuff[]  =  {
 0, 0, 0, 0};

int SUM = 0;

float temperature;
byte address[8];

OneWire onewire (ONEWIRE_PIN);
DS18B20 sensors(&onewire);

void Przerwanie(void);

// ---------------------------- Ustawienia programu --------------------------------
void setup ()
{
 Serial.begin (9600);

 Timer1.initialize(5000);             //Ustawienie przerwania co 0.005s
 Timer1.attachInterrupt(Przerwanie);   //Przyczepienie funkcji Przerwanie do timera1

 pinMode (latchPin, OUTPUT);
 pinMode (clockPin, OUTPUT);
 pinMode (dataPin, OUTPUT);

 digitalWrite (latchPin, LOW);
 shiftOut (dataPin, clockPin, MSBFIRST, 0x00);  // Znaki:   0x00 - 0xFF
 shiftOut (dataPin, clockPin, MSBFIRST, 0x00);  // Pozycje: 0xF1, 0xF2, 0xF4, 0xF8
 digitalWrite (latchPin, HIGH);

 sensors.begin();
 sensors.request(address);
}

// ---------------------------- Pętla główna programu ------------------------------
void loop ()
{
 // Odczyt numeru czujnika.
 onewire.reset_search ();
 onewire.search (address);

 // Odczyt temperatury.
 if (sensors.available())
 {
   temperature = (sensors.readTemperature(address) - 1);

   Serial.print(temperature);
   Serial.println("'C");

   sensors.request(address);

   temperature = temperature * 100;
   SUM = int (temperature);

   disbuff[0] = SUM / 1000;
   disbuff[1] = SUM % 1000 / 100;
   disbuff[2] = SUM % 100 / 10;
   disbuff[3] = SUM % 10;
 }
}

// -------------------------- Funkcja przerwań ----------------------------
void Przerwanie()
{
 // Wyświetlenie temperatury na WYSW LED.

 digitalWrite (latchPin, LOW);
 if (pos == 1) shiftOut (dataPin, clockPin, MSBFIRST, Dis_table1[disbuff[pos]]);
 else shiftOut (dataPin, clockPin, MSBFIRST, Dis_table[disbuff[pos]]);
 shiftOut (dataPin, clockPin, MSBFIRST, Dis_buf[pos] );
 digitalWrite (latchPin, HIGH);

 pos ++;
 if (pos > 3) pos = 0;
}

Powodzenia.

Zdrowych i Wesołych Świąt.
ANT
Jeżeli pomogłem, to poproszę o punkt reputacji Big Grin
 
Odpowiedź
  


Wiadomości w tym wątku
Wyswietlacz 7 segmentowy + db18b20 - przez hazi18 - 02-12-2017, 18:52
RE: Wyswietlacz 7 segmentowy + db18b20 - przez adix - 02-12-2017, 23:27
RE: Wyswietlacz 7 segmentowy + db18b20 - przez krn78 - 04-12-2017, 10:28
RE: Wyswietlacz 7 segmentowy + db18b20 - przez krn78 - 05-12-2017, 11:28
RE: Wyswietlacz 7 segmentowy + db18b20 - przez krn78 - 06-12-2017, 21:08
RE: Wyswietlacz 7 segmentowy + db18b20 - przez krn78 - 20-12-2017, 13:17
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 22-12-2017, 20:36
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 28-12-2017, 17:36
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 28-12-2017, 22:31
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 29-12-2017, 21:18
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 30-12-2017, 16:34
RE: Wyswietlacz 7 segmentowy + db18b20 - przez krn78 - 15-01-2018, 13:35
RE: Wyswietlacz 7 segmentowy + db18b20 - przez es2 - 10-04-2018, 23:04
RE: Wyswietlacz 7 segmentowy + db18b20 - przez ANT - 31-12-2017, 18:06
RE: Wyswietlacz 7 segmentowy + db18b20 - przez es2 - 10-05-2018, 10:32
RE: Wyswietlacz 7 segmentowy + db18b20 - przez es2 - 10-05-2018, 15:10

Skocz do:


Przeglądający: 2 gości