Skocz do zawartości

ESP8266 - monitor portu szeregowego wyświetla jakieś dziwne znaki .....Serial.println("Nie działa !")


Pomocna odpowiedź

Napisano
// Program do regulowanej wysokosći paleniska w grilu betonowym.
//Program liczy ilość obrotów sinika i odłącza zasilanie włącznika do reguowania wysokości 


#include <Arduino.h>
#include <Wire.h>  // biblioteka czujnika światła 
#include <DS3231.h>   //BIBLIOTEKA ZEGARA
#include <DHT.h>
#include <ESP8266WiFi.h>




DHT dht;

DS3231 clockk;
RTCDateTime dt;

#define czuj_obr_ind 3
#define przekaz_wyl_przycisku_gora 4
#define przekaz_wyl_przycisku_dol 5

#define dioda_led_Arduino 13

#define przycisk_gora 1
#define przycisk_dol 0
#define LED 2



int i = 0; 
int obroty_walka = 0; 




void setup() {
  // put your setup code here, to run once:
  //SETUP
  //Serial.begin(9600);
  delay(10000);
  Serial.begin(74880);
  pinMode(czuj_obr_ind, INPUT);
  pinMode(dioda_led_Arduino,OUTPUT);
  pinMode(przycisk_gora, INPUT);
  pinMode(przycisk_dol, INPUT);
  pinMode(2, OUTPUT);

  

  //-----------------------------------zegar CZAS-----------------------------------
  clockk.begin();
  clockk.setDateTime( __DATE__ , __TIME__ );



  //Sprawdzenie ostatniej pozycji wysokości. ? 

  //Ustawienie wysokosci do punktu 0 (np. -5 -4 -3 -2 -1 .. 0 .. 1 2 3 4 5 )





}



void loop() {
  // put your main code here, to run repeatedly:
  // LOOP 
  Serial.println("");
  Serial.println("------------------------    ZEGAR    -------------------------------------------------------------------------------------");


   dt = clockk.getDateTime(); // ?????????????   ustawienie daty 
  Serial.println("");
  Serial.print(dt.day);    Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.year);   Serial.print("   ");
  
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");
  Serial.println("");

  // Sprawdzenie czujnika indukcyjnego 



  digitalWrite(LED, LOW);
  delay(1000);
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(1000);
  digitalWrite(LED, HIGH);
  delay(500);


  digitalWrite(LED, LOW);
  delay(150);
  digitalWrite(LED, HIGH);
  delay(150);
  digitalWrite(LED, LOW);
  delay(150);
  digitalWrite(LED, HIGH);
  delay(150);
  digitalWrite(LED, LOW);
  delay(150);
  digitalWrite(LED, HIGH);
  delay(150);
  digitalWrite(LED, LOW);
  delay(150);
  digitalWrite(LED, HIGH);
  
  digitalRead(czuj_obr_ind);
  
   if((czuj_obr_ind == LOW) || (przycisk_gora == HIGH)) 
   {
    
    obroty_walka = obroty_walka + 0,25; 
    
    Serial.println(" Metal wykryty ! "); 
    
    digitalWrite(dioda_led_Arduino, HIGH);

   }


}

  Program jest prosty i wgrywa się na płytkę i działa bo mruga dioda tak jak napisane w programie.  Wcześniej mogłem sprawdzić na Arduino Nano czy uno w monitorze portu szeregowego co dzieje się w programie. TERAZ gdy uzywam ESP8266 wyświetlają się znaczki w monitorze portu szer. Sterowniki mam zainstalowane, szybkość transmisji zmieniałem kilka razy. 9600, 74880 itd. Port jest ustawiony dobry.  Jedyne co mnie niepokoi to zdjecie z menagera urządzeń. 

g.jpg

Gdy uruchamiam monitor portu szeregowego to cały program Arduino IDE się zawiesza. Program wgrywa się znacznie dłużej niż w przypadku płytek Arduino. 

g.jpg

Dnia 4.09.2025 o 13:00, farmaceuta napisał:

@oska zmień na początek na 9600 i w kodzie i w monitorze...powinno normalnie działać, ja nigdy z tym nie miałem problemu

Nie działa.

Dnia 4.09.2025 o 15:10, orb777 napisał:

Przetestuj na najprostszym programie, wyświetlającym jakiś napis. Którą wersję arduino ide masz?

To jest prosty program. 1.8.12

(edytowany)

A ja bym jednak spróbował od nowa, odłączył wszystko od uc, wyczyścił pamięć lub wgrał pusty szkic, następnie najprostsze "witaj". W sumie nie wiadomo jakie kroki robisz, czy w arduino wybierasz właściwą płytkę, itd. Coś działa, bo sekwencje znaków powtarzają się, nie wygląda wszystko na losowe. O samej płytce też nic nie powiedziałeś, układy ESP8266 wlutowane są w różne "podstawki". Czy to nodemcu?

Edytowano przez orb777

ESP8266 na początku wyświetla różne swoje mądre rzeczy, tyle że nie zgadza mu się zegar i robi to z jakąś dziwną prędkością (stąd dzikie krzaki na monitorze).

Warto spróbować czegoś w stylu:

Serial.println();
Serial.println();
Serial.println("Czy to działa?");

U mnie przynajmniej zawsze działało w różnych terminalach (Arduino. gtkterm, socat)

2 godziny temu, jand napisał:

wysyłane z prędkością 74880 bps, a więc tu powinny być czytelne.

Teoretycznie ESP chce to wysłać z 57600, tyle że przy starcie nie wie że ma szybszy zegar. Ale to nie jest problemem.

Ważne jest w tym momencie to, że terminal interpretuje ottrzymany ciąg jako faktyczne krzaki i robi z nich jedną długaśną linię. W tejk sytuacji jeśli coś wypisemy na serialu, to nawet przy zgodności prędkości napis zostanie doklejony do tej linijki smieci i wyląduje jakieś dwa metry poza prawą krawędzią ekranu - co może sprawiać wrażenie  że program nie działa.

Dlatego przy ESP8266 daję zawsze dwa razy println, żeby zaczął uczciwie od nowej linii.

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...