Skocz do zawartości

tomekk93

Użytkownicy
  • Zawartość

    3
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O tomekk93

  • Ranga
    1/10

Informacje

  • Płeć
    Mężczyzna
  1. 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!
  2. MateuszW dziękuję, do tego zagadnienia nie doszedłem, a widzę popełniłem spory błąd przez to. Wszystko działa tak jak chciałem działa to jak powinno, po zabiegu wyglądającym w ten sposób: Serial.print("temperatura pokoju wynosi: "); Serial.print(celcjusz); Serial.print(" st. C\n") Pozdrawiam!
  3. Witam, mam taki problem, używając czujnika temperatury LM35, odczytuje jego wskazania i wyświetlam na "Monitorze szeregowym", lecz dane ukazują mi się w 3 linijkach (jak na obrazku): Chciałbym aby wyświetlana informacja była w jednej linijce (kwestia estetyki): kod: int czujnik; int tempPin = 1; //wy analogowe A1 void setup() { Serial.begin(9600); //ustawienie pred transmisji danych a<>pc } void loop() { czujnik = analogRead(tempPin); float mV = ( czujnik/1024.0)*5000; float celcjusz = mV/10; Serial.println("temperatura pokoju wynosi: "); Serial.println(celcjusz); Serial.println("st. C"); delay(10000); } mianowicie, gdy próbuję zrobić tak jak przedstawiono to w kursie #3: Serial.println("Witaj! " + odebraneDane + "!"); moja wersja: Serial.println("temperatura pokoju wynosi: " + celcjusz + "st.C"); to wyrzuca mi błąd, że wartość we FLOAT nie jest prawidłowa. Czy tylko STRING da się tak wypisać? Jak temu zaradzić? Z góry dziękuję za wszelkie wskazówki i pomoc!
×
×
  • Utwórz nowe...