Przeszukaj forum
Pokazywanie wyników dla tagów 'Wyświetlacz'.
Znaleziono 20 wyników
-
Witam, podczas wykonywania zadań w części #6 2 kursu arduino na tej stronie dotyczącego wyświetlaczy 7 segmentowych natknąłem się na problem. Mianowicie, niektóre znaki (0, 2, 3, C) nie są wyświetlane tak jak należy, czy to podczas własnoręcznego ustawiania segmentów tak jak jest w kursie, czy podczas korzystania z biblioteki SevSeg. Wszystkie podłączenia oraz kody są zrobione tak jak w kursie oraz dokładnie sprawdzone. w załącznikach podane kolejno zdjęcia wyświetlania liczb 23,04,78. Tak jak widać, niektóre liczby są wyświetlane poprawnie, a niektóre nie. Będę wdzięczny za udzielenie pomocy lub rad związanych z tym problemem
-
- Arduino
- wyświetlacz
-
(i 1 więcej)
Tagi:
-
Witam, próbowałem dzisiaj podłączyć wyświetlacz TFT dotykowy SPI ILI9341 do Arduino. Spróbowałem podłączyć z takiego zdjęcia z internetu i ekran się tylko zaświecił, kod się dało przegrać ale na wyświetlaczu nic się nie pojawiało. Potem zobaczyłem że jest więcej metod podłączania. I czy ktoś może mógłby mi wysłać zdjęcie/tabelkę prawidłowego podłączania wyświetlacza do Arduino? Wcześniej jak chciałem podłączyć zrobiłem to w! taki sposób jaki możecie zobaczyć na obrazku: i kod wgrałem ten: #include <Adafruit_GFX.h> #include <Adafruit_TFTLCD.h> #include <TouchScreen.h> #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define YP A1 #define XM A2 #define YM 7 #define XP 6 #define TS_MINX 940 #define TS_MINY 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 bool change = 0; bool touch = 0; void setup() { pinMode(A5, OUTPUT); digitalWrite(A5, LOW); Serial.begin(9600); tft.reset(); tft.begin(0x9325); tft.setTextColor(WHITE); tft.setTextSize(3); tft.fillScreen(BLACK); } void loop() { if (change == 0 && touch == 0) { digitalWrite(A5, LOW); tft.fillCircle(120, 160, 50, RED); tft.setCursor(95, 150); tft.println("LED"); change = 1; delay(200); } if (change == 0 && touch == 1) { digitalWrite(A5, HIGH); tft.fillCircle(120, 160, 50, GREEN); tft.setCursor(95, 150); tft.println("LED"); change = 1; delay(200); } TSPoint p = ts.getPoint(); pinMode(XM, OUTPUT); pinMode(YP, OUTPUT); if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0); Serial.print("("); Serial.print(p.x); Serial.print(", "); Serial.print(p.y); Serial.println(")"); if (p.x > 70 && p.x < 170) { if (p.y > 110 && p.y < 210) { change = 0; touch = !touch; } } } } Tu są zdjęcia jak to podłączyłem: Mało na nich nich widać niestety, więc tu jest jeszcze zdjęcie ,,poglądowe": Gdyby było za mało informacji proszę napisać Z góry dziękuję za odpowiedzi! 😄
- 14 odpowiedzi
-
Dzień dobry, nie dawno kupiłem sobie wyświetlacz LCD TFT SPI ST7735S ze slotem SD. Można ten wyświetlacz podłączyć do Arduino, ale czy jest możliwość włożenia karty SD do slotu i podłączenia pinów VCC i GND do plusa i minusa baterii? Jeśli tak to proszę podać jakie zasilanie do niego podłączyć Z góry dziękuję za odpowiedź. 😄
- 8 odpowiedzi
-
- SD
- Elektronika
-
(i 2 więcej)
Tagi:
-
Witam. Pracuje nad pewnym projektem i potrzebuje wyświetlić liczbę 8bit na trzech wyświetlaczach siedmio segmentowych. Wie ktoś jak można to zrobić za pomocą układów scalonych?
- 5 odpowiedzi
-
Witam, czy ktoś z was ogarnia obsługę wyświetlacza GC9A01 240x240 ? Wymyśliłem sobie fajny projekcik jednak nie mam zielonego pojęcia o programowaniu takowego wyświetlacza. Ktoś mógłby pomoc ?
- 8 odpowiedzi
-
- 1
-
- tft
- wyświetlacz
-
(i 3 więcej)
Tagi:
-
I znowu rozwiązanie programowe, w dodatku z tym i18n to trochę na wyrost... Ale o co chodzi? Biblioteka Arduino_GFX jest popularna, ma dość duże możliwości, niestety ma co najmniej jedną wadę: wbudowany font 5x8 zawiera oprócz ASCII tylko kilka liter z zakresu ISO-8859-1 i mnóstwo fajnych nader rzadko używanych znaczków typu "serduszko", "kwadracik", "kółeczko" i tak dalej. A w wielu przypadkach potrzeba wyświetlić po prostu tekst na wyświetlaczu, i to przy użyciu jak najmniejszej ilości pamięci. Co prawda biblioteka pozwala na zaimportowanie jakiejś czcionki, ale i tak jest ograniczona do ośmiobitowego wyświetlania... Już wcześniej pokazywałem jak można w tej bibliotece (trochę trickowo) zaimplementować przynajmniej polskie literki. Tym razem postanowiłem pójść dalej, czyli spróbować wyświetlić oprócz podstawowego ASCII wszystkie znaczki z zakresu 0xa0..0x17f (czyli cały zakres ISO-1, ISO-2 i kilka innych literek pochodzących z różnych języków). Oczywiście wydaje się to niemożliwe - nawet jeśli użyć całej dostępnej przestrzeni 8-bitowego kodowania można uzyskać dodatkowo zakres 0x01 do 0x1f (z wyłączeniem 0x0a i 0x0d) i 0x7f do 0xa0, czyli dokładnie 63 możliwe glify. Użyłem więc zmów pewnego tricku. Ponieważ przy tak małej czcionce nie da się stworzyć różnych glifów do wszystkich liter, niektórym literom odpowiadają te same glify. I tak przykładowo litery Š i š wyglądają na wyświetlaczu identycznie, a więc glif jest wspólny. W wielu przypadkach nie da się inaczej narysować tyldy, makrona czy brewisa: zastępuje je pojedyncza kreska nad literą. Poza tym niektóre nader rzadko używane litery (jak Ħ czy ſ) wyświetlane są po prostu jako H i s. Jak mi to wyszło - oceńcie sami; niestety nie mam szans na zrobienie ostrego zdjęcia z małego wyświetlacza ale możecie uwierzyć że coś tam jest wyświetlane 🙂 A więc jak tego używać? Na początek ściągnąć potrzebne pliki: gfxi18n.zip Teraz w bibliotece Adafruit_GFX należy podmienić plik glcdfont.c na ten wyciągnięty z zipa. Można skopiować bibliotekę (wraz z używanym driverem wyświetlacza) do folderu szkicu, ale prościej będzie zrobić to po prostu w folderze biblioteki (gdzieś w Arduino/libraries). Teraz można już ich używać. W przypadku małych AVR-ów ograniczymy się raczej do wyświetlania stałych tekstów (chociaż nic nie stoi na przeszkodzie aby użyć programowej konwersji z UTF-8 na lokalny kod wyświetlania - oprócz oczywiście ilości pamięci). Aby nie przeliczać sobie ręcznie można użyć programu convloc.py. Tekst w kodowaniu UTF-8 (czyli pewnie takim w którym pracujesz) można podać albo jako parametry w linii poleceń, albo na wejście programu. W wyniku program wypisuje tekst, którego można już użyć do wyświetlania: Można również użyć konwertera, np. jakoś tak: void displayText(const char *utf8_text) { char buffer[128]; utf2local(utf8_text, buffer, 128); display.print(buffer); } Załączony przykład dotyczy małego wyświetlacza OLED, ale można go przerobić na dowolny inny. Ważne, aby wywołać przy inicjalizacji funkcję cp437 informującą bibliotekę, że ma działać zgodnie ze standardem (nie uwzględniając błędu, który kiedyś tam w bibliotece istniał). A jeśli komuś się nie podobają moje wersje glifów - załączam prosty programik którego można użyć do edycji. Wystarczy w przeglądarce otworzyć załączony plik edytor.html. Na dziś tyle 🙂
-
https://botland.com.pl/wyswietlacze-do-arduino/4464-wyswietlacz-dotykowy-lcd-tft-rev-21-28-320x240px-spi-z-czytnikiem-microsd-shield-dla-arduino-waveshare-10684-5904422352608.html?fbclid=IwAR2Hht_LptyxYgvWfRCcs2hXsaxTBfCIVZZ_2bvxIhDw3aLOmWfBDs7vRUw Witam, Chciałbym zapytać czy ktoś może pracował z tym wyświetlaczem i podpinał go do ESP 32? Bo nie wiem czy są gotowe biblioteki współpracujące z tym mikrokontrolerem a wyświetlaczem, (które działają) Ewentualnie czy ktoś, może mi podpowiedzieć jakieś dostępne alternatywy bo na ekranie dotykowym mi nie zależy, tylko nie na wielkości.
- 1 odpowiedź
-
- 1
-
- wyświetlacz
- ESP32
-
(i 1 więcej)
Tagi:
-
[STM32] Implementacja wyświetlacza ST7567 i biblioteki u8g2
sebxx4 opublikował temat w Mikrokontrolery
Witajcie, Jakiś czas temu zaopatrzyłem się w STM32 Nucleo i próbuję przenieść część swoich projektów z AVR na STM32 właśnie. Mam problem z wyświetlaczem na sterowniku ST7567. Jest do niego całkiem wporządku biblioteka u8g2, ale nie mogę jej jakoś uruchomić pod STM32. Znalazłem niby jakieś porty na STM, ale nie chce mi to działać 😕 Byłbym wdzięczny gdyby ktoś z Was, bardziej obeznanych, pomógł mi to ogarnąć. -
Witam. Mam problemy z obsługą I2C na NodeMcu v3. NodeMCU v3 podłączony z LCM1602 tak jak na schemacie poniżej z tym że LCM1602 dostaje zasilanie 5V zasilacza, a GND z NodeMCU, LCM1602 i zasilacza są połączone razem. LCM1602 docelowo podłączony jest do wyświetlacza 20x4. 1. Po odpaleniu I2cScanner otrzymuję: Scanning... Unknown error at address 0x01 Unknown error at address 0x02 .... No I2C devices found 2. Po odpaleniu I2CexpDiag z https://github.com/duinoWitchery/hd44780 dostaję: Serial Initialized -------------------------------------------------------------------- I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool -------------------------------------------------------------------- hd44780 lib version: 1.3.2 -------------------------------------------------------------------- Reported Arduino Revision: 1.8.16 Arduino Board: ESP8266_NODEMCU_ESP12E CPU ARCH: ESP8266 - F_CPU: 80000000 -------------------------------------------------------------------- SDA digital pin: 4 (GPIO4) SCL digital pin: 5 (GPIO5) -------------------------------------------------------------------- Checking for required external I2C pull-up on SDA - STUCK LOW Checking for required external I2C pull-up on SCL - STUCK LOW ******************************************************************** ERROR: SDA or SCL stuck pin ******************************************************************** I2C bus not usable Testowałem również na przypadkach gdzie na dwóch różnych expanderach LCM1602, gdzie nie ma podłączonego wyświetlacza i zasilacza, a zasilanie LCM1602 jest z pinu NodeMCU 3V, korzystałem również z różnych przewodów - efekt ten sam. Sprawdziłem też piny D1 i D2 - są zdrowe (jest prawidłowe napięcie gdy ustawiony jest stan wysoki, a po podłączeniu diody i odpaleniu testowego programu prawidłowo mruga). Ponadto sprawdziłem też to samo na innym ESP8266 - tym razem pod postacią Wemos D1 mini - tam sytuacja również jest taka sama. Czy pominąłem jakiś krok? Jakieś sugestie?
-
robię sobie taki zegarek do motocykla mam już zegar i temperaturę i chciałbym żeby gdy podnóżka się rozkłada była wyświetlona litera "p" a kiedy będzie włączony luz był "N" wszystko na jednym wyświetlaczu ssd1306 OLED 0,96 cala jak mówiłem godzina i temperatura działa lecz gdy włączę switcha z podnóżkom wyświetla się P lecz co chwile miga bo wyświetlacz musi się odświerzyć do zegarka i tu moje pytanie jak zrobić to na jednym wyświetlaczu żeby godzina była ok i żeby litera P nie migała dodam też że tan sam program zastosuje też do luzu czyli N jak już tu piszę to mam też pytanie bo jako że mamy przestawiany czas to 2 razy w roku trzeba zmienić godzinę i chciałem też zrobić 1 albo 2 switche do przesuwania godziny i minuty lecz o ile mogę zczytać myRTC to nie mogę do niego dodać liczby i tu moje pytanie czy da się to jakoś prosto zrobić i też następne pytanko jak zastąpić na tej wyświetlanej godzinie żeby zamiast 0 było O bo na wyświetlaczu zero jest przekreślone i słabo to wygląda poniżej kod #include <SPI.h> #include <OneWire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <virtuabotixRTC.h> //Libraries needed #include <DallasTemperature.h> Adafruit_SSD1306 display(4); OneWire oneWire(2); virtuabotixRTC myRTC(5, 6, 7); DallasTemperature sensors(&oneWire); //-------------------------------------------- void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC,0x3C); sensors.begin(); //myRTC.setDS1302Time(00, 30,9, 00, 18, 5, 2021); display.clearDisplay(); pinMode(3,INPUT_PULLUP); } //-------------------------------------------- void loop() { int temperatura = (sensors.getTempCByIndex(0)); sensors.requestTemperatures(); myRTC.updateTime(); display.setTextSize(2.7); display.setTextColor(WHITE); display.setCursor(10,4); if (myRTC.hours <10) { display.print ("0"); } display.print(myRTC.hours); display.print(":"); if (myRTC.minutes <10) { display.print ("0"); } display.print(myRTC.minutes); display.setTextSize(1.7); display.setCursor(20,23); display.print(temperatura); display.drawRect (33, 23, 4, 3,WHITE); display.setCursor(32,23); display.print(" C"); display.display(); if (digitalRead(3) == LOW){ display.setTextSize(2); display.setCursor(75,18); display.print("P"); display.display(); } delay(500); display.clearDisplay(); }
-
- Arduino
- wyświetlacz
-
(i 2 więcej)
Tagi:
-
Cześć, ostatnio przeglądam sobie alternatywy dla RP CM4 i znalazłem coś takiego. Czy ktoś jest w stanie mi powiedzieć czy do tego mistycznego LVDS "Dual Flatlink 1920×1080 24-bit" dam radę podłączyć jakąś typową matrycę od laptopa (oczywiście pod LVDS, a nie pod eDP 😉). Z tego co widzę matryca ma 2 kanały 8 bit... Więc ciężko stwierdzić, gdyż nie jestem ekspertem w temacie tego standardu (a raczej nawet podstaw nie mam). Alternatywnie raczej pozostanę przy CM4 i wyprowadzeniu HDMI. EDIT: Nvm, udało mi się dokopać do danych w dokumentacji i raczej da radę, tylko muszę jeszcze dwa razy policzyć piny (bo nikt łaskawie nie opisał ile jest pinów od LVDS w złączu 😞)
-
Zmiana koloru wyświetlacza 7 segmentowego 4-cyfrowego TM1637
natsonziom opublikował temat w Arduino i ESP
Cześć, Mam takie pytanie czy jest jakakolwiek możliwość zmiany koloru wyświetlania w wyswietlaczu 7 segmentowym 4- cyfrowym TM1637 przykładowo z koloru czerwonego na biały/niebieski, przeszukałam internet w znalezieniu odpowiedzi na to pytanie jednak jedyne dostępne wyświetlacze znalazłam na stronach typu AliExpress (nie za bardzo ufam). Bardzo proszę o pomoc i dziękuje za wyrozumiałość. pozdrawiam- 4 odpowiedzi
-
- wyświetlacz
- Arduino
-
(i 1 więcej)
Tagi:
-
//TEN DZIAŁA POPRAWNIE #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <SoftwareSerial.h> int wartoscAnalog=0; byte wartoscZmapowana=0; char info[96]; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0,0); } void loop() { lcd.clear(); lcd.setCursor(0,0); lcd.print(wartoscZmapowana); wartoscAnalog=analogRead(A0); wartoscZmapowana=map(wartoscAnalog, 0, 1023, 0, 100); delay(1000); } // TEN ZLE WYSWIETLA #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <SoftwareSerial.h> #include "DHT.h" #define DHTTYPE DHT22 #define DHTPIN 6 #define WIATRAK 7 int wartoscAnalog=0; byte wartoscZmapowana=1; char info[96]; int buzzer=11; LiquidCrystal_I2C lcd(0x27,16,2); DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); //START DHT lcd.init(); lcd.backlight(); lcd.setCursor(0,0); pinMode(WIATRAK,OUTPUT); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { lcd.print(F("Failed to read from DHT sensor!")); return; } float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); lcd.clear(); lcd.setCursor(0,0); lcd.print(wartoscZmapowana); wartoscAnalog=analogRead(A0); wartoscZmapowana=map(wartoscAnalog, 0, 1023, 0, 100); if(t>35) { wyswietlanie(); BuzzerWiatrak(); } if(wartoscZmapowana==0) { lcd.clear(); lcd.setCursor(4,0); lcd.print("alarm"); } if(wartoscZmapowana>20) { wyswietlanie(); BuzzerWiatrak(); } else { digitalWrite(WIATRAK, LOW); } //delay(1000); } void wyswietlanie() { lcd.clear(); lcd.setCursor(4,0); lcd.print("Pozar"); } void BuzzerWiatrak() { digitalWrite(WIATRAK, HIGH); tone(buzzer,450); delay(500); noTone(buzzer); delay(500); } Witam, mam problem, mianowicie mam projekcik(lcd, czujka dymu, czujka temperatury, buzzer i wiatrak). Arduino nie wyświetla poprawnie teksu( nie wyswietla wszystkiego).W momencie wykonania warunku (if) gdy np temperatura jest za wysoka wszystko działa(wyświetla prawidłowo) Natomiast gdy wgram prosty program(tylko czujka dymu i lcd) wszystko wyświetla prawidłowo. Dodam że wyświetlacz to LCD 1602 pod magistrale I2C a arduino uno klon. Macie jakieś pomysły jak to naprawic? W załączniku prześle jedno zdjecie z niewłaściwym wyświetleniem, a drugie z poprawnym(przy maly programie). Dzieki i pozdrawiam
- 11 odpowiedzi
-
- wyświetlacz
- lcd
-
(i 2 więcej)
Tagi:
-
Witam. Chciałbym się tutaj zapytać czy jest taka możliwość, aby wyświetlacz podpięty przewodowo przerobić tak, aby był on bezprzewodowo ( oczywiście dokładając odpowiednie moduły)? Chodzi dokładnie o wyświetlacz przy drukarce 3D, a dokładniej chodzi o drukarkę Anet A8. Drukarka nie posiada oryginalnej płyty głównej, gdyż została ona zmieniona na MKS GEN L v1.0. Chodzi dokładniej o to, aby sygnały wychodzące z tej płytki na wyświetlacz podać na Arduino, a następnie wysłać je poprzez np. moduł bluetooth na drugie,które by je przetworzyli i wysłało na wyświetlacz podpięty do niego.
- 1 odpowiedź
-
- Arduino
- Wyświetlacz
-
(i 2 więcej)
Tagi:
-
Pojawił mi się mały problem, a mianowicie gdy chce, żeby po wciśnięciu przycisku zaczął obracać się silnik, to nie mogę wyświetlić na wyświetlaczu(w tym samym momencie gdy silnik się kręci) "#" w pętli while (żeby był efekt ładowania), który co 1s pojawia "#", ponieważ najpierw silnik się obraca a później wyświetla "#" na wyświetlaczu.
- 1 odpowiedź
-
- silnik krokowy
- Arduino
- (i 2 więcej)
-
Witajcie Forumowicze, Zamarzył mi się kiedyś wyświetlacz biegów w motocyklu. Stwierdziłem, że zamiast kupować, można zrobić go samemu. Będzie większa frajda 😃 Wykorzystam wyświetlacz 7 segmentowy ze wspólną anodą. Jako dekoder chciałbym użyć układ 4543, gdyż jak wyczytałem wyświetla pełną 6 i 9. W motocyklu mam 6 pinów, odpowiadających 6 biegom, na których przy poszczególnych biegach pojawia się stan niski (masa). I tu mam problem, bo nie wiem jak zredukować te sygnały na kod BCD. W necie znalazłem podobny schemat, jak poniżej, jednak nie mogłem znaleźć w Polsce układu 74ls147d, żeby go potestować. Czy wiecie, gdzie można go dostać, pod inną nazwą? Może mogę go zastąpić jakimś podobnym układem logicznym? Będę wdzięczny za wszystkie wskazówki. P.S. Jak się nie uda nic znaleźć, to za pomocą Arduino zaprogramuję sobie Atmegę. Wyjście awaryjne. 😀
- 3 odpowiedzi
-
- wyświetlacz
- 7-segmentowy
- (i 3 więcej)
-
Witam wszystkich bardzo serdecznie. Mam problem ze zidentyfikowaniem wyświetlacza i znalezieniem do niego płytki sterującej. Wyświwtlacz znalazłem w swoich starych kartonach z elektroniką. Jeżeli dobrze pamiętam to pochodzi on z ramki cyfrowej 7". Posiada złącze na taśmie 26 pinowe i dodatkowo 2 pinowe (najpewniej podświetlenie). Może ktoś z forumowiczów zetknął się z podobnym. Z góry dziękuje bardzo za pomoc 🙂
-
Korzystając z schematu z Kursu Arduino, zbudowałem prosty układ z wyświetlaczem LCD 2x16. Pierwsza linia wyświetla się baz zarzutu, natomiast druga wyświetla się jakby niepełna. Do stworzenia napisu używałem funkcji write i setCursor. Załączam zdjęcie. Co powinienem zrobić by druga linia też wyświetlała się dobrze?
- 5 odpowiedzi
-
- Arduino Uno
- lcd
-
(i 1 więcej)
Tagi:
-
Mam wyświetlacz 1602A i moduł i2c (PCF8574AT), jak podłączam do arduino GND - GND Vcc - 5V SDA- A4 SCL - A5 to skaner i2c nie pokazuje adresu. Jednak czytając datasheety adres to 0x3F i jak wgrywam do przykładów podstawowy program, to wyświetlacz nic nie pokazuje. Kontrast działa, a korzystam z biblioteki NewLiquidCrystal (najnowszej wersji).
- 2 odpowiedzi
-
- i2c
- wyświetlacz
-
(i 1 więcej)
Tagi:
-
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.
- 4 odpowiedzi
-
- 3
-
- arduino
- wyświetlacz
-
(i 3 więcej)
Tagi: