Skocz do zawartości

Plik na karcie SD zawierający program, który wykonuje Arduino.


Szmyterling

Pomocna odpowiedź

5 godzin temu, prezesedi napisał:

A wiec tak - zdjęcie makro20220601_141919.thumb.jpg.c713b4453e64d70779eb5538f4db5bb9.jpg

To układ stabilizacji napięcia 3.3V

Prawdopodobnie czymś takim: https://lcsc.com/product-detail/Linear-Voltage-Regulators-LDO_Torex-Semicon-XC6204B332MR-G_C2891256.html dałoby się go zastąpić... Niestety nic pasującego nie posiadam 😞 

Tylko nie wiem czy nie jest on podłączony do wejścia z zasilacza, wtedy trzeba poszukać czegoś na większe napięcie...

A co do modułu spróbuj też ze starym bootloaderem, czasami zdarzają się niezaktualizowane sztuki.

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

18 minut temu, H1M4W4R1 napisał:

A co do modułu spróbuj też ze starym bootloaderem, czasami zdarzają się niezaktualizowane sztuki.

I to działa - wgrałem jakąkolwiek bibliotekę i przeszło. Wgrałem powrotnie "BLINK" (musiałem tylko zmienić pin LED_BUILTIN na pin 12) - też działa.

Bardzo dziękuję za podpowiedź. Może okaże się, że dostałem sprawny układ. Muszę polutować piny i sprawdzić działanie z LCD.

Co do starego bootloadera - czy to w czymś przeszkadza i trzeba zaktualizować? Czy może tak zostać?

Link do komentarza
Share on other sites

5 minut temu, prezesedi napisał:

Co do starego bootloadera - czy to w czymś przeszkadza i trzeba zaktualizować? Czy może tak zostać?

Musisz się aby pilnować by wybrać dobrą opcję w IDE 😉 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

35 minut temu, prezesedi napisał:

Co do starego bootloadera - czy to w czymś przeszkadza i trzeba zaktualizować?

Szczerze mówiąc nie widziałem jeszcze klona Nano z innym bootloaderem niż "stary" - najważniejsze że działa.

Uważaj przy LCD - może się okazać, że potrzebne będą rezystory podciągające na liniach SCL/SDA (4.7kΩ do +5V). OLED-y mają wbudowane rezystory.

Link do komentarza
Share on other sites

Witam ponownie.

Nie wiem czy to jeszcze podchodzi pod założony wcześniej przez kolegę temat, ale na pewno nawiązuje do tego, co działo się u mnie wcześniej i obecnie. Jeśli jest taka potrzeba, to proszę o wydzielenie tematu by później łatwiej wyszukać.

Mianowicie po uruchomieniu wszystkiego na wyświetlaczu LCD, przeniosłem kod i działanie na wyświetlacz OLED (128*64).

Obecnie za pomocą 4 przycisków wyświetlane są 4 różne komunikaty (można mniej, można więcej, mi 4 wystarczają), tekst się przewija (gdy jest zbyt długi na wyświetlenie), a po wszystkim pojawia się nazwa stacji macierzystej wraz z godziną.

Dziękuję za ogromną pomoc i wskazówki @farmaceuta. Docelowo zamierzam kod rozszerzyć o wspomniane kiedyś dwa wyświetlacze (128*32) oraz zegar czasu rzeczywistego.

Poniżej zamieszczam kod, może komuś się przyda:

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

   Adafruit_SSD1306 display(4);

   char message1[]="1 7:30 IC GORNIK Gliwice";
   char message2[]="2 7:45 IC LAJKONIK Krakow Gl.";
   char message3[]="3 8:00 PR Wisla Glebce";
   char message4[]="4 8:05 TLK Czestochowa";
   char message5[]="1 11:55 PR Kedzierzyn Kozle";
   char message6[]="2 12:00 PR Zwardon";
   char message7[]="3 12:10 TLK Rybnik";
   char message8[]="4 12:25 IC NEPTUN Gdynia";
   char message9[]="1 19:00 PR Myslowice";
   char message10[]="2 19:20 Os. Katowice";
   char message11[]="3 19:45 TLK Tychy";
   char message12[]="4 20:00 IC Warszawa Wsch.";
   char message13[]="1 21:00 IC Praga";
   char message14[]="2 22:05 IC Wieden";
   char message15[]="3 22:40 IC Berlin";
   char message16[]="4 23:20 IC Poznan Gl";
   int x, minX;

  void setup(){
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setTextWrap(false);
  x = display.width();
  minX = -8 * strlen(message1);

  pinMode(10,INPUT_PULLUP);
  pinMode(11,INPUT_PULLUP);
  pinMode(12,INPUT_PULLUP);
  pinMode(13,INPUT_PULLUP);  
  }

  void loop(){
 static byte y = 0;
 static long last = 0;
 static byte kopia = 0;
 
  if (digitalRead(10) == 0) { 
    delay(500);       
   x= display.width();
   y = 1;
   kopia = 1;
} else if (digitalRead(11) == 0) { 
   delay(500);       
   x= display.width();
   y = 2;
   kopia = 2;
} else if (digitalRead(12) == 0) { 
   delay(500);
   x= display.width();
   y = 3;
   kopia = 3;
} else if (digitalRead(13) == 0) { 
   delay(500);
   x= display.width();
   y = 4;
   kopia = 4;
}


switch (y) {
        
   case 1:
   display.clearDisplay();
   display.setCursor(x,0);
   display.setTextSize(1);
   display.print(message1);
   display.setTextSize(1);
   display.setCursor(x,8);
   display.print(message2);
   display.setCursor(x,16);
   display.setTextSize(1);
   display.print(message3);
   display.setCursor(x,24);
   display.setTextSize(1);
   display.print(message4);
   display.display();
   x = x-4;
  break;

  case 2:
  display.clearDisplay();
   display.setCursor(x,0);
   display.setTextSize(1);
   display.print(message5);
   display.setTextSize(1);
   display.setCursor(x,8);
   display.print(message6);
   display.setCursor(x,16);
   display.setTextSize(1);
   display.print(message7);
   display.setCursor(x,24);
   display.setTextSize(1);
   display.print(message8);
   display.display();
   x = x-4;
  break;

  case 3:
  display.clearDisplay();
   display.setCursor(x,0);
   display.setTextSize(1);
   display.print(message9);
   display.setTextSize(1);
   display.setCursor(x,8);
   display.print(message10);
   display.setCursor(x,16);
   display.setTextSize(1);
   display.print(message11);
   display.setCursor(x,24);
   display.setTextSize(1);
   display.print(message12);
   display.display();
   x = x-4;
  break;

  case 4:
   display.clearDisplay();
   display.setCursor(x,0);
   display.setTextSize(1);
   display.print(message13);
   display.setTextSize(1);
   display.setCursor(x,8);
   display.print(message14);
   display.setCursor(x,16);
   display.setTextSize(1);
   display.print(message15);
   display.setCursor(x,24);
   display.setTextSize(1);
   display.print(message16);
   display.display();
   x = x-4;
  break;
  
   case 5: 
   display.clearDisplay();
   display.setCursor(18,0);
   display.setTextSize(1);
   display.print("KATOWICE BRYNOW");
   display.setTextSize(2);
   display.setCursor(35,15);
   display.print("15:20");
   display.display();
   y = 6;
   last = millis();
   break;

   case 6:
   if (millis() - last > 3000UL) { // 3000 = 3 sekundy
    y = kopia;
    x = display.width();
    }
  break;
  }
  
    
  if(x < minX) {
    x = display.width();
    y = 5;
   }
}

 

Edytowano przez prezesedi
Link do komentarza
Share on other sites

No to tak trochę zimnej wody...

Każdy display 128x32 w bibliotece, której używasz wymaga 512 bajtów RAM. Arduino ma raptem cztery razy tyle, a trochę pamięci musi mieć do własnych celów.

Wszystkie wiadomości również pchasz do RAM, czyli za chwilę pamięć się skończy. Zapoznaj się z magicznymi słowami PROGMEM i const.

BTW nie ma miejscowosci "Zwardon", jest "Zwardoń" i tak dalej.

Ogólnie wrzuć do szuflady Arduino i wstaw tam jakiś uczciwy mikrokontroler (ESP8266 chociażby) bo za chwilę się okaże, że całość nie działa. Mało że więcej możliwości, to jeszcze tańszy...

 

Link do komentarza
Share on other sites

Szanowni Forumowicze,

Czy moglibyście mi doradzić na co się przesiąść? Przyjmując, że ATMega wyląduje w szufladzie (zgodnie z powyższym, albo też będzie do testów).

Czy coś z poniższych linków jest warte uwagi (i dlaczego)?

https://allegro.pl/oferta/modul-wemos-d1-wifi-uno-r3-esp8266-arduino-11236152995

https://allegro.pl/oferta/arduino-ch340g-wifi-board-esp8266-esp-12-micro-usb-8071499926

https://allegro.pl/oferta/esp32-wemos-lite-4mb-flash-wifi-ble-4-2-11386082844?bi_s=ads&bi_m=listing%3Adesktop%3Aquery&bi_c=MWYyYjFmOWItMmI3Mi00MjkwLTkwOTEtNjM4YzVlYTdjOTVmAA&bi_t=ape&referrer=proxy&emission_unit_id=7b48d2ba-579d-49fb-a967-0f706caf9703

https://allegro.pl/oferta/modul-wemos-wifi-nodemcu-v3-esp8266-32mb-arduino-11509753053

https://allegro.pl/oferta/arduino-nano-v3-0-16mhz-usb-wemos-xi-8f328p-u-8514819430 - tą płytkę posiadam, ale nie wiem czy się nadaje do wykorzystania.

To tylko nieliczne z ofert jakie wypatrzyłem. A może warto zakupić jeszcze inną płytkę?

@ethanak mnie tez kłują w oczy nazwy stacji bez polskich znaków. Postaram się nad tym popracować, jednak z tego co zauważyłem wiąże się to kilkoma modyfikacjami i nie wiem czy to odpowiednie na moją wiedzę. Jest taka zasada - "jak się na czymś nie znasz, to się za to nie bierz bo spierd...". Mam nadzieję, że po przejściu kursu Arduino, będę mógł to dopracować.😀

Link do komentarza
Share on other sites

2 godziny temu, prezesedi napisał:

To tylko nieliczne z ofert jakie wypatrzyłem. A może warto zakupić jeszcze inną płytkę?

Ja tam jestem fanem Raspberry Pi Pico 😄 Dwa rdzenie, PIO, po dwa interfejsy i czegóż chcieć więcej...

Ale do takich bardziej przyziemnych zastosowań czasem ESP32/8266 też się przydaje (ale to głównie gdy potrzebuję WiFi).

Oprócz tego masz też STM32/GD32, ale to już "wyższa szkoła jazdy" i "ciut 'winkszy' koszt"

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

Ja tylko dodam, że esp32 lite (czyli lolin32 lite) niespecjalnie się do tego nadaje - to płytka przewidziana do zasilania z akumulatora i lubi wariować jak go nie ma.

Najmniej problemów sprawi NodeMCU, ew. ESP32 DevKit. RPi Pico jest świetny, ale trochę nie dla początkującego.

Link do komentarza
Share on other sites

27 minut temu, ethanak napisał:

RPi Pico jest świetny, ale trochę nie dla początkującego.

To zależy od punktu siedzenia, chyba każda wymieniona płytka działa z Arduino IDE i PlatformIO, chociaż sam wolę API od twórców, to czasem na szybko idzie klasyka lenistwa 😉 

Link do komentarza
Share on other sites

Zanim otrzymam nową płytkę, postanowiłem przetestować tę, którą posiadam. Opisywałem ją wcześniej - model "WeMos XI 8F328P-U 16MHz CH340".

Zmieniłem odpowiednio piny w moim kodzie i go wgrałem. Efekt - działa. Widać jednak jedną różnicę - mianowicie wszystko dzieje się jakby 3x wolniej.

Najlepiej jest to widoczne po wgraniu biblioteki BLINK. Przy <delay=1000> rzeczywisty czas to 3sek. Po zmianie na <delay=300> rzeczywisty czas to 1sek.

Co jest tego powodem, że ta płytka robi wszystko 3x wolniej?

Link do komentarza
Share on other sites

1 godzinę temu, prezesedi napisał:

Co jest tego powodem, że ta płytka robi wszystko 3x wolniej?

A jak masz ustawione Arduino IDE? Wgrałeś ten ich śmieszny program z githuba czy traktujesz go jako Nano?

Prawdopodobnie dlatego, że to "odpowiednik" atmegi, czyli klon klona zrobiony z klona i tylko jeden Chińczyk wie jak to działa.

 

Link do komentarza
Share on other sites

2 minuty temu, ethanak napisał:

tylko jeden Chińczyk wie jak to działa

🤣 taaaaaak, tak też może być.

Arduino mam ustawione tak, że traktuje płytkę jako Nano. W tej chwili już nie mam możliwości zmiany. Sprawdzę jutro z programem z githuba.

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.