Arduino Polska Forum

Pełna wersja: Wyswietlacz 7 segmentowy + db18b20
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5
Pisałem Ci już dwa miesiące temu:
"Ilość błędów możliwa do zrobienia przy podłączaniu 4 cyfr segmentowych przez lajkonika jest ogromna."
Wystarczy że do rejestrów podłączysz jedną cyfrę, zasilanie i komunikację. Jak coś zacznie działać to kolejne. Powinieneś mieć to podłączone do jakiegoś USB Doctora, pokazującego napięcie i pobierany prąd lub przez miernik. Teraz to sobie sprawdź czy w ogóle Arduino jeszcze żyje.
Hej,
arduino żyje bo właśnie robię testy z innym wyświetlaczem, mam podpięty TM1637 i jak zrobić żeby wyświetlał jednocześnie temperaturę i wilgotność? mam taki kod na wyświetlanie ale niestety wyświetla się na przemian raz temperatura raz wilgotność. Jest on 4 cyfrowy więc chciałbym aby od lewej była np. temp a od prawej wilgotność. Co trzeba dopisać żeby ustawić go na odpowiednie miejsce?

display.showNumberDec(h); //Display the Variable value;
display.showNumberDec(t); //Display the Variable value;
Przejrzyj bibliotekę dla TM1637 i dowiesz się jak wyświetlić na konkretnej pozycji określone znaki/liczby. Jak nie możesz tego ogarnąć, umieść tu kod z biblioteki, który nie działa tak jak chcesz a podpowiem co trzeba zrobić.
Biblioteke dla TM1637 znam dobrze bo portowałem to na AVR i ARM.
biblioteka w ZIP
Szukam wsadu zegar z temperaturą na DS1307 z  wyświetlaczemTM1637. Wiem archaik, ale lepiej w nocy widać cyfry starszym. Próbowałem sam zrobić, ale nie wychodzi. Słabo programowanie mi wychodzi. Wiek nie ten. Ale lubię dłubać w elektronice od lat. W dodatku początkuję z Arduino. Jakby ktoś podrzucił, byłbym wdzięczny. A tu skecz, jak by ktoś spojrzał co naknociłem:
Zegar:
#define DS1307_ADDRESS 0x68                          //adres zegara
#include <Wire.h>
#include <DS1307.h>
#include <TM1637Display.h>
//#define CLK 2
//#define DIO 3
TM1637Display display(2,3);
DS1307 clock;
RTCDateTime dt;
//Ustawienie pętli czasu zamiast delay
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzasZegar = 0;

void setup()
{
  Serial.begin(9600);
        clock.begin();
//Ustawienie czasu - atumatyczne
//clock.setDateTime(__DATE__, __TIME__);
display.setBrightness(7); // Jasność wyświetlacza
        // odblokowaniwe 1Hz
  /*clock.setOutput(DS1307_1HZ);

  switch (clock.getOutput())
  {
    case DS1307_LOW:    Serial.println("SQW = LOW"); break;
    case DS1307_HIGH:    Serial.println("SQW = HIGH"); break;
    case DS1307_1HZ:    Serial.println("SQW = 1Hz"); break;
    case DS1307_4096HZ:  Serial.println("SQW = 4096Hz"); break;
    case DS1307_8192HZ:  Serial.println("SQW = 8192Hz"); break;
    case DS1307_32768HZ: Serial.println("SQW = 32768Hz"); break;
    default: Serial.println("SQW = Unknown"); break;
    }*/
}
void loop()
{
                                           
  aktualnyCzas = millis(); //Pobierz liczbe milisekund od startu, zamiast delay
  if (aktualnyCzas - zapamietanyCzasZegar >= 1000UL) {    //Jeśli różnica wynosi ponad 1 sekundę, zamiast delay
    zapamietanyCzasZegar = aktualnyCzas;                //Zapamietaj aktualny czas, zamiast deay
                                                        //wyświetlanie czasu
      dt = clock.getDateTime();
              display.clear();   
              display.showNumberDec(dt.hour,false,2,0);
              display.showNumberDec(dt.minute,false,2,3);
}
}

Temperatura która działa.:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TM1637Display.h>

#define ONE_WIRE_BUS 8 //Digital Pin to connect the DS18B20 Sensor
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress sensor1;
TM1637Display display(2,3);
const uint8_t DEGREES[] = {
  0x0, 0x0,
  SEG_A | SEG_B | SEG_G | SEG_F,    // Degree Symbol
  SEG_A | SEG_F | SEG_E | SEG_D,    // C
  };
unsigned int temperature = 0;
byte PreviousValue = 0;

void setup()
{
      sensors.begin();
      display.setBrightness(7);      // set display to maximum brightness

      if (!sensors.getAddress(sensor1, 0))
      {               
        Serial.println("Sensor not found!");
      }
}

void loop()
{
        //Zażądaj danych czujnika
        sensors.requestTemperatures();
        int tempC = sensors.getTempC(sensor1); //Read temperature of DS18B20 Sensor
           
            if(tempC != PreviousValue)
            {
              PreviousValue = tempC;
              display.setSegments(DEGREES); //Display the Variable value
              display.showNumberDec(tempC,false,2,0);
              delay(2000);
            }                     
}
I to się kompiluje? Wątpię. Powtarzają się funkcje o tych samych nazwach.
Patrząc na ten "kod" mogę doradzić https://forbot.pl/blog/kurs-arduino-pods...rsu-id5290 oraz http://opracyzdalnej.pl/darmowe-ksiazki-...u-czesc-2/
Stron: 1 2 3 4 5