Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'wyświetlacz'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino, ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 1 wynik

  1. KubekSzklany

    Monitor Zasobów Na Arduino

    Witam. Chciałbym przedstawić mój projekt, mianowicie monitor zasobów (coś jak zakładka wydajność w menadżerze zadań) wyświetlany na wyświetlaczu Arduino. Potrzebne Rzeczy: Jest to bardzo prosty projekt do którego budowy potrzebujemy zaledwie 2 rzeczy: Arduino Uno (można też użyć np. Arduino Uno WiFi aby połączyć się przez wifi lub Arduino Mega gdyby brakowało nam pinów) Wyświetlacz dotykowy. Ja użyłem nakładki tzw. shielda na arduino, jednak jeżeli chcemy ograniczyć liczbę używanych pinów można użyć dowolnego wyświetlacza, przykładowo takiego, ja użyłem ekranu o rozdzielczości 240x320 pikseli. No i wiadomo kabel do połączenia z komputerem. Tak wygląda mój zestaw: Cel Działania: Celem tego wyświetlacza jest pokazywanie aktualnego obciążenia systemu, bez ciągłego patrzenia na menadżer zadań i konieczności jego ciągłego działania. Możemy np. podczas gry w jakąś wymagająca grę patrzeć, czy czasem nie palimy karty graficznej Tutaj screen podczas gry w gta v, jak widać moja karta graficzna chodzi na pełnych obrotach: Działanie: Program uruchamiany na komputerze wysyła dane do arduino, które następnie wyświetla odpowiednią ilość kwadratów. Tak to mniej więcej działa: Tutaj widać porównanie menadżera zadań windows i arduino - jest lekkie opóźnienie ok. 1s, prawdopodobnie wynikające z tego, że program wysyła dane w innym czasie niż menedżer zadań, jednak myślę że ta jedna sekunda nic nie zmienia. A z kolei tutaj widać odpowiednio - zużycie procesora podczas kopania btc, dane, które przechodzą przez sieć i zużycie dysku podczas przenoszenia dużych plików. Program: Jeżeli chodzi o program na arduino to wszystko zależy od tego jak ktoś zaplanuje wygląd i zależy też dużo od sterownika wyświetlacza. Przyjmowanie danych to odczytywanie kolejnych wartości serial'u, zaczynając od procesora, a kończąc na internecie. Natomiast żeby arduino znało zużycie poszczególnych podzespołów należy uruchomić program na komputerze. W tym celu trzeba stworzyć aplikację działającą w tle (ja wybrałem aplikację konsolową c#) i utworzyć skrót do aplikacji w menu start. Tym sposobem program uruchomi się nam przy starcie systemu. A co zawiera program? Na początku otwarcie serial'u: SerialPort Serial = new SerialPort("COM6", 9600); Serial.Open(); COM6 oznacza numer portu (ten sam co w programie arduino), 9600 to bitrate. Aby wysłać dane do arduino wystarczy: while(true) { // Wysyłanie zużycia procesora w skali 1-10: PerformanceCounter ProcessorUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total"); Serial.Write(Math.Floor(ProcessorUsage.NextValue() * 0.1)); // Wysyłanie zuzycia karty graficznej w skali 1-10: Computer = new Computer() { GPUEnabled = true }; Computer.Open(); foreach (var HardwareItem in Computer.Hardware) { if (HardwareItem.HardwareType == HardwareType.GpuNvidia) { HardwareItem.Update(); foreach (var SubHardware in HardwareItem.SubHardware) { SubHardware.Update(); } double Numbers = 0; int Number = 0; foreach (var Sensor in HardwareItem.Sensors) { if (Sensor.SensorType == SensorType.Load) { Numbers = Numbers + Sensor.Value.Value; Number++; } } Serial.Write(Math.Floor((Numbers / Number) * 0.1)); } } // Wysyłanie użycia sieci w Mb/s: NetworkInterface[] NetInterfaces = NetworkInterface.GetAllNetworkInterfaces(); long BytesDown = NetInterfaces[0].GetIPv4Statistics().BytesReceived; long BytesSend = NetInterfaces[0].GetIPv4Statistics().BytesSent; } Jak widać zużycie procesora (a także pamięci czy dysku) możemy pobrać za pomocą performance counter. Dla innych podzespołów wystarczy zmienić nazwy w cudzysłowach. Karta graficzna jest trochę bardziej skomplikowana i trzeba obliczyć średnią dla różnych elementów, tzn. zużycie procesora graficznego, zużycie pamięci graficznej itd. Uwaga: Tutaj potrzebna będzie zewnętrzna biblioteka, tzn. OpenHardwareMonitor. Można ją pobrać np. menadżerem pakietów NuGet. A ostatnie 3 linie to wysłane i odebrane bajty. Jednak trzeba wziąć pod uwagę że jest to naliczane od startu komputera, więc trzeba sobie co sekundę sprawdzić o ile zwiększyła się ta liczba. Na Zakończenie: Tutaj taki krótki film z działania wyświetlacza.
×