Skocz do zawartości

[arduino] Pomiar temp oraz wyświetlenie jej odczytu


tomekk93

Pomocna odpowiedź

Witam!

Programując natrafiłem na rzecz, która troszkę mnie szkoli, mianowicie tworzę program, który ma za zadanie odczytać wartości temperatury z czujnika LM35 po naciśnięciu "guzika", przesłać odczytane pomiary na monitor szeregowy oraz na moduł wyświetlacza 7-segmentowego LED. Jako, że uczę się tej sztuki, chce utrwalać nawet te protsze zagadnienia więc, dodałem 3 diody LED zieloną, żółtą oraz czerwoną, które po spełnieniu odpowiedniego warunku zapalają się (rola "pokaż niebezpieczeństwo").

1)Problem który wystąpił gdy połączyłem elementy wraz z modułami (RYS.1), pokazywał tylko jeden odczyt po czym zawieszał się zupełnie.

2a)Chcąc nanieść poprawki do z konfigurowanego układu, dla bezpieczeństwa odłączyłem przewód +5V (RYS.2), wystąpiło coś co mnie zaskoczyło i jest nie zrozumiałem w każdym calu, mianowicie układ zaczął działać tak jak tego oczekiwałem.

2b)Przy wyświetleniu pierwszej wartości kropki włączają się na wyświetlaczu 7-segmentowym (pełniąc role oddzielenia wartości całkowitej temperatury od wartości po przecinku), a w kolejnych już tego nie robi.

Problem rozwiązany, dzięki zmianie w kodzie:

disp.init(); //wyłączenie 7SEG

na:

disp.init(D4056A); //wyłączenie 7SEG

Tak dla innych początkujących. 🙂

3)To już ostatnia dla mnie zagwozdka, na monitorze szeregowym zanim podłączyłem 7-segmentowy wyświetlacz wyświetlało zgodnie z założeniem programu zdanie informujące jaka temperatura panuje w pokoju "temperatura w pokoju wynosi: x st. C". Teraz wyświetla się informacja następująca:

Dlaczego pojawia się druga linijka, chociaż w kodzie nigdzie nie ma odpowiedniej komendy by to robić?

kod:

#include "TM1637.h" // biblioteka dla sterownika

#define CLK 3 // Piny podłączyć CLK

#define DIO 2 // Piny podłączyć DIO

 

TM1637 disp(CLK,DIO);

int czujnik; //zmienna na wartosc z czujnika LM35

int tempPin = 1; //wyjscie analogowe A1 (zbieramy sygnał z srodkowej nogi czujnika)

 

void setup() {

 

disp.set(4); //Ustawienie jasności od 0 do 7

disp.init(D4056A);

 

Serial.begin(9600); //ustawienie pred transmisji danych a<>pc

pinMode(8, INPUT_PULLUP); //przycisk na pin8

 

pinMode(9, OUTPUT); //green

pinMode(10, OUTPUT); //yellow

pinMode(11, OUTPUT); //red

digitalWrite(9, LOW); //wyłączamy diody

digitalWrite(10, LOW);

digitalWrite(11, LOW);

}

 

void loop() {

if (digitalRead(8) == LOW) { //jesli przycisk wcisniety

czujnik = analogRead(tempPin);

float mV = ( czujnik/1024.0)*5000;

float celcjusz = mV/10;

 

//wypisanie info na monitorze szeregowym

Serial.print("temperatura pokoju wynosi: ");

Serial.print(celcjusz);

Serial.print(" st. C\n");

delay(200);

 

 

if (celcjusz <= 30) {

disp.display(celcjusz); //wyswietlenie na 7SEG odczytu

digitalWrite(9, HIGH); //LED zielona

digitalWrite(10, LOW);

digitalWrite(11, LOW);

delay(5000);

digitalWrite(9, LOW);

disp.init(); //wyłączenie 7SEG

}

else if (celcjusz >= 31, celcjusz <= 50) {

disp.display(celcjusz); //wyswietlenie na 7SEG odczytu

digitalWrite(9, LOW);

digitalWrite(10, HIGH); // LED żółta

digitalWrite(11, LOW);

delay(5000);

digitalWrite(10, LOW);

disp.init(); //wyłączenie 7SEG

}

else if (celcjusz >= 51) {

disp.display(celcjusz); //wyswietlenie na 7SEG odczytu

digitalWrite(9, LOW);

digitalWrite(10, LOW);

digitalWrite(11, HIGH); //LED czerwona

delay(5000);

digitalWrite(11, LOW);

disp.init(); //wyłączenie 7SEG

}

}

}

Dziękuję za wszelkie wskazówki oraz odpowiedzi! Pozdrawiam!

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.