logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Sterowanie samochodzikiem z ESP8266 i L298N nie działa - co robić?

kuba1234zxcvbnmo9 25 Lut 2024 01:41 1314 4
REKLAMA
  • #1 20977356
    kuba1234zxcvbnmo9
    Poziom 3  
    Posty: 11
    Witam, mam problem z moim projektem samochodzika, który zawiera moduł ESP8266 i sterownik silników L298N. Ten samochodzik ma być sterowany przez drugi moduł ESP8266, który zawiera 4 przyciski. Napisałem program, w którym moduły się łączą, ale gdy klikam przyciski, nic się nie dzieje. Proszę o pomoc, ponieważ został mi tylko tydzień na ukończenie tego projektu.
  • REKLAMA
  • #2 20977380
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 20977493
    tos18
    Poziom 42  
    Posty: 7137
    Pomógł: 1112
    Ocena: 1869
    kuba1234zxcvbnmo9 napisał:
    Proszę o pomoc, ponieważ został mi tylko tydzień na ukończenie tego projektu.

    Na podstawie zamieszczonych przez Kolegę schematów oraz kodów programów jak i dokumentacji fotograficznej uzupełnionej o wyczerpujący opis zachowania prototypu
    mogę z całą stanowczością stwierdzić że należy zlokalizować przyczynę niedziałania a następnie usunąć problem poprzez dokonanie zmian w prototypie.
  • REKLAMA
  • #4 20977803
    kuba1234zxcvbnmo9
    Poziom 3  
    Posty: 11
    "Wrócę wieczorem i podam wszystkie szczegóły. Chciałem się najpierw dowiedzieć, czy ktoś byłby zainteresowany pomogą w poprawieniu programu napisanego w C++."


    Dodano po 10 [godziny] 1 [minuty]:
    KOD DLA SAMOCHODZIKA
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>

    // Ustawienia sieci WiFi
    const char *ssid = "NazwaTwojejSieci";
    const char *password = "HasloTwojejSieci";

    // Ustawienia pinów dla sterownika silników L298N
    const int motor1A = D1;
    const int motor1B = D2;
    const int motor2A = D3;
    const int motor2B = D4;

    WiFiServer server(80);
    WiFiClient client;

    void setup() {
    // Inicjalizacja pinów silników
    pinMode(motor1A, OUTPUT);
    pinMode(motor1B, OUTPUT);
    pinMode(motor2A, OUTPUT);
    pinMode(motor2B, OUTPUT);

    // Połączenie z siecią WiFi
    Serial.begin(115200);
    Serial.println();
    Serial.print("Łączenie z siecią ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi połączone");

    // Inicjalizacja serwera
    server.begin();
    }

    void loop() {
    // Nasłuchuj połączenia klienta
    client = server.available();
    if (client) {
    while (client.connected()) {
    // Odczytaj pierwszy bajt danych (komenda) wysłanych przez pilota
    if (client.available()) {
    char command = client.read();
    executeCommand(command);
    }
    }
    client.stop();
    }
    }

    // Funkcja do wykonania odpowiedniej komendy
    void executeCommand(char command) {
    switch (command) {
    case 'F':
    forward();
    break;
    case 'B':
    backward();
    break;
    case 'L':
    left();
    break;
    case 'R':
    right();
    break;
    case 'S':
    stop();
    break;
    default:
    break;
    }
    }

    // Funkcje sterujące ruchem samochodzika
    void forward() {
    digitalWrite(motor1A, HIGH);
    digitalWrite(motor1B, LOW);
    digitalWrite(motor2A, HIGH);
    digitalWrite(motor2B, LOW);
    }

    void backward() {
    digitalWrite(motor1A, LOW);
    digitalWrite(motor1B, HIGH);
    digitalWrite(motor2A, LOW);
    digitalWrite(motor2B, HIGH);
    }

    void left() {
    digitalWrite(motor1A, LOW);
    digitalWrite(motor1B, HIGH);
    digitalWrite(motor2A, HIGH);
    digitalWrite(motor2B, LOW);
    }

    void right() {
    digitalWrite(motor1A, HIGH);
    digitalWrite(motor1B, LOW);
    digitalWrite(motor2A, LOW);
    digitalWrite(motor2B, HIGH);
    }

    void stop() {
    digitalWrite(motor1A, LOW);
    digitalWrite(motor1B, LOW);
    digitalWrite(motor2A, LOW);
    digitalWrite(motor2B, LOW);
    }
    KOD DLA PILOTA
    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>

    // Ustawienia sieci WiFi
    const char *ssid = "NazwaTwojejSieci";
    const char *password = "HasloTwojejSieci";

    // Ustawienia pinów dla przycisków
    const int button1 = D1;
    const int button2 = D2;
    const int button3 = D3;
    const int button4 = D4;

    WiFiClient client;

    void setup() {
    // Inicjalizacja pinów przycisków
    pinMode(button1, INPUT_PULLUP);
    pinMode(button2, INPUT_PULLUP);
    pinMode(button3, INPUT_PULLUP);
    pinMode(button4, INPUT_PULLUP);

    // Połączenie z siecią WiFi
    Serial.begin(115200);
    Serial.println();
    Serial.print("Łączenie z siecią ");
    Serial.println(ssid);
    WiFi.mode(WIFI_AP);
    WiFi.softAP(ssid, password);
    Serial.println("Hotspot uruchomiony");
    }

    void loop() {
    if (client.connect("adres_ip_samochodzika", 80)) {
    if (digitalRead(button1) == LOW) {
    client.write('F'); // Przycisk 1 - jazda do przodu
    } else if (digitalRead(button2) == LOW) {
    client.write('B'); // Przycisk 2 - jazda do tyłu
    } else if (digitalRead(button3) == LOW) {
    client.write('L'); // Przycisk 3 - skręt w lewo
    } else if (digitalRead(button4) == LOW) {
    client.write('R'); // Przycisk 4 - skręt w prawo
    } else {
    client.write('S'); // Brak wciśniętych przycisków - zatrzymanie
    }
    delay(100); // Opóźnienie zapobiegające nadmiernemu zatłoczeniu sieci
    client.stop();
    }
    }
    Płytki nawiązują połączenie między sobą, ale po kliknięciu przycisków, silniki nie reagują.
  • #5 20978756
    kuba1234zxcvbnmo9
    Poziom 3  
    Posty: 11
    sam rozwiazalem problem
REKLAMA