[ÇÖZÜLDÜ] Nodemcu Esp8266 Step Motor Sıkıntısı

Mantis35

Üye
Katılım
11 Ocak 2022
Mesajlar
2
Puanları
1
Yaş
28
Merhabalar. Forumda ve geliştirme kartları programlamasında yeniyim. Belki size kolay bir hata gelebilir ama benim günlerdir uykumu kaçıran bir sorun. Nodemcu esp8266 yardımıyla otomatik hayvan besleme programlaması yapıyorum. 28BYJ-48 step motorunu kullanıyorum. Sorunum; internet üzerinden çektiğim saat ile zamanladığım saat if komutunda çalıştığında motor istenilen konuma gelmeden bir kaç adım sonra duruyor. (Motor diğer örnek kodlamalarda çalışıyor.)Hatanın "zamanBelirleme" kısmında ki delayden dolayı olduğunu düşünüyorum ama bir çözüme ulaşamadım. Kodum şu şekildedir:

Kod:
#include <ESP8266WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <AccelStepper.h>

#define led D4
#define IN1 D1
#define IN2 D2
#define IN3 D5
#define IN4 D6

const char* ssid = "***********";           
const char* pass = "**********";  
const int stepsPerRevolution = 2048;
const int MamaSaati1 = 19;
const int MamaDakika1 = 56;



WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");


AccelStepper stepper(AccelStepper::HALF4WIRE, IN1, IN3, IN2, IN4);


void setup() {
  Serial.begin(115200);
  delay(100);

  pinMode(led, OUTPUT);
 
  Serial.println(ssid);
  Serial.println(" Ağına Bağlanılıyor");

  WiFi.begin(ssid, pass);

  while (WiFi.status() != WL_CONNECTED) {
  digitalWrite(led, LOW);
  delay(1000);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("Ağ Bağlantısı Sağlandı..!");
  Serial.print("IP Adresiniz: ");  Serial.println(WiFi.localIP());
  digitalWrite(led, HIGH);
 
  timeClient.begin();
  timeClient.setTimeOffset(10800);

 
  stepper.setMaxSpeed(700);
  stepper.setAcceleration(200);
  stepper.moveTo(stepsPerRevolution);

}

void zamanBelirleme() {
  timeClient.update();

 
  String formattedTime = timeClient.getFormattedTime();
  Serial.print("Formatted Time: ");
  Serial.println(formattedTime);

  int currentHour = timeClient.getHours();
 

  int currentMinute = timeClient.getMinutes();
 
 
 

 
  delay(1000);
 
}

void mamaZamanı() {

 
  if ((timeClient.getHours() == MamaSaati1) && (timeClient.getMinutes() == MamaDakika1)) {
  
   stepper.run();

  }




}

void loop() {
 
zamanBelirleme();
mamaZamanı();


}



İf komutunun içinde şöyle bir kod daha denedim "do {stepper.run();} while (stepper.distanceToGo() !=0);"
bu komuttan sonra da nodemcu crash yiyip kendini yeniden başlatmaya başladı her başlangıçta da motor biraz ilerleyip kartın tekrar kendini yeniden başlatmasına neden oldu. Bu sorunda da aldığım hata mesajı şu şekilde :


CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

>>>stack>>>

ctx: cont
sp: 3ffffdd0 end: 3fffffc0 offset: 01a0
3fffff70: 3fffdad0 00000000 3ffee5b8 402028cd
3fffff80: 3fffdad0 00000000 3ffee5b8 4020117f
3fffff90: 313a3531 30303a33 08000000 40100185
3fffffa0: 3fffdad0 00000000 3ffee794 40203950
3fffffb0: feefeffe feefeffe 3ffe85e0 40100bd1
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

ets Jan 8 2013,rst cause:2, boot mode: (3,6)

load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v00044870
~ld


Yardımlarınız için şimdiden çok teşekkürler. Kendim çözersem de örnek olmak adına buraya ileticem.
 
Öncelikle
Kod:
mamaZamanı()
olamamalı türkçe karakter kullanılamaz.
İkincisi stepper.run() boolean cinsinden motorun çalışıp çalışmadığı bilgisini verir onun yerine stepper.step0("adım sayısı") kullanırsan ne kadar adım istersen o kadar adım atacaktır. pozitif sayılar ileri negatif sayılar geri yönde
 
Son düzenleme:
Öncelikle
Kod:
mamaZamanı()
olamamalı türkçe karakter kullanılamaz.
İkincisi stepper.run() boolean cinsinden motorun çalışıp çalışmadığı bilgisini verir onun yerine stepper.step0("adım sayısı") kullanırsan ne kadar adım istersen o kadar adım atacaktır. pozitif sayılar ileri negatif sayılar geri yönde
Çok teşekkürler kod sıkıntısız çalıştı. Ufacık şeyin 2 gündür beni ne kadar strese soktuğunu anlatamam. Bu arada "stepper.step0("adım sayısı")" kodu hata verdi fakat "stepper.runToPosition()" ile sorunu hallettim. Saygılar.
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst