niedziela, 12 października 2025

AI na dobry początek


Zachwyty nad możliwościami jakie daje AI nie milkną. I ja spróbowałem co mogę wyciągnąć z niego w temacie programowania. Dziś pierwsze testy. 






Pierwsze polecenie dotyczyło uproszczenia  fragmentów kodu nieśmiertelnego programu obsługi pompy CUW. Układ nieco się rozrósł i oprócz sterowania pompą monitoruje zewnętrzne i pokojowe parametry powietrza (temperaturę, wilgotność Co2 TVOC) i wyświetla to na miniaturowym TFT zamontowanym bezpośrednio na płytce ESP32 

Kolor wyświetlanych napisów zależy od poziomu natężenia TVOC 

U mnie wyglądało to tak


a dostałem


Bez wątpienia krócej i ładniej. Mam nadzieję, że przy kolejnym kodowaniu tego typu zastosuję powyższy schemat

Jeszcze ładniej wyszło z takim fragmentem kodu


dostałem to z i jak zawsze z pełnym komentarzem i wyjaśnieniami


Tu juz nie było tak prosto. Trzeba podać właściwe typy zmiennych by AI wiedział jaki znacznik typu ma wstawić. Ale i tak wyszło bardzo ładnie. 

Ostatnie zadanie nieco trudniejsze


i dostałem taki wynik


 Rewelacja. Za 4 sekundy dostałem wynik nad którym musiałbym popracować dobry kawałek czasu by znaleźć właściwe rozwiązanie.

Ale  efekt finalny propozycji AI (zmieniłem rozmiar kwadratu na 64 x 64 piksele) okazał się niewłaściwy. Napisy na wyświetlaczu zostały przesunięte o wysokość kwadratu do góry

Ponowiłem więc pytanie nieco inaczej


Na odpowiedz czekałem 9 sek ale było warto

  drawBottomRightSquare(8, TFT_RED);


/* Rysuje wypełniony kwadrat o boku `size` w prawym-dolnym rogu
   color - kolor zdefiniowany przez TFT_eSPI (np. TFT_RED). */
void drawBottomRightSquare(int size, uint16_t color) {
  // zachowaj pozycję kursora i kolor tekstu (kursora przywrócimy)
  int curX = tft.getCursorX();
  int curY = tft.getCursorY();

  // współrzędne lewego górnego rogu kwadratu
  int x = tft.width()  - size;
  int y = tft.height() - size;

  // upewnij się, że nie wychodzimy poza ekran
  if (x < 0) x = 0;
  if (y < 0) y = 0;

  tft.fillRect(x, y, size, size, color);

  // przywróć kursor (żeby dalsze wypisywanie poszło tam, gdzie było)
  tft.setCursor(curX, curY);
}
To już pełen kosmos i nie jestem wcale pewien , że sam znalazłbym poprawne rozwiązanie!

Na mój gust AI zdał egzamin choć próba ulepszania całych modułów nie jest wygodna gdyż zbyt wiele danych należy wstępnie dostarczyć AI w odniesieniu do wielkości i funkcji zdefiniowanych w innych modułach.













Brak komentarzy:

Prześlij komentarz