Mit app inventor kullanak slider ile pwm kontrolu

Başlatan bbs2006, 01 Mayıs 2019, 10:22:58

bbs2006

Merhaba
Nodemcu ile araç kontrolu yaptım. Mit pp inventor kullanıp slider ile aracın pwm degerini ayarlamak istiyorum. Nodemcuya veriler gidiyor.her zaman 2 konumunda ki degeri gönderiyor.slider min degeri 0 mac degeri 10 bu degerlerin hepsinde
Hep aynı degeri.gönderiyor.ne yapabilirim

mehmet

Kodlarınızı da paylaşsaydınız keşke...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

bbs2006

#include <Servo.h>
#include <ESP8266WiFi.h>                             //wifi kütüphanesi yükleniyor
WiFiClient client;
WiFiServer server (80);

const char* ssidap     = "ESP";
const char* passwordap = "123456789";
//const char* ssid     = "f@tih";         // Bağlanmak istediğiniz Wi-Fi ağının SSID (adı).
//const char* password = "!1qaz2WSX3edc4RFV%56";                  // Wifi ağın şifresi
const char* ssid     = "TurkTelekom_TC140";         // Bağlanmak istediğiniz Wi-Fi ağının SSID (adı).
const char* password = "Uqan4gxv";                  // Wifi ağın şifresi
//const char* ssid     = "My ASUS";         // Bağlanmak istediğiniz Wi-Fi ağının SSID (adı).
//const char* password = "bbs5851849";                  // Wifi ağın şifresi

#define sol_led    16    //LED sol ışık    Nodemcunun D0 nolu pin
#define sag_led    10    //LED sag ışık    Nodemcunun S3 nolu pin
#define buzer      15    //Buzzer          Nodemcunun D8 nolu pin

#define PWMA       5     // Sag  motor Hız kontrol ucu 
#define PWMB       4     // Sol  motor Hız kontrol ucu

#define AIN1       0     // TB1 Sag  Motor Pin Kontrol ucu
#define AIN2       2     // TB1 Sag  Motor Pin Kontrol ucu
#define BIN1      14     // TB1 Sol  Motor Pin Kontrol ucu
#define BIN2      12     // TB1 Sol  Motor Pin Kontrol ucu

#define data_b      13     //Servo motor data ucu
Servo my_servo;
String  gelen = "";
//int led = 2;
int HIZ;
int aci=0;



void setup() {
 my_servo.attach(data_b);           //servo data ucu 13 nolu pine bağlıdır.
 my_servo.write(aci);               //servo 0dereceden başlamaktadır.
  pinMode(sag_led, OUTPUT);
  pinMode(sol_led, OUTPUT);
  pinMode(buzer, OUTPUT);

  pinMode(PWMA, OUTPUT);
  pinMode(PWMB, OUTPUT);

  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(BIN1, OUTPUT);
  pinMode(BIN2, OUTPUT);

  pinMode(sol_led, OUTPUT);
  pinMode(sag_led, OUTPUT);
 
 pinMode(data_b, OUTPUT);
  
  Serial.begin(115200);                             // Bilgisayara mesaj göndermek için Seri iletişimi başlatın
  delay(10);
  Serial.println('\n');

  // Aga bağlanıyor.

  WiFi.begin(ssid, password);
  Serial.print("Bağlanıyor.... ");
  Serial.print(ssid); Serial.println(" ...");

  int i = 0;
  while (WiFi.status() != WL_CONNECTED) {          // Wifi için Bağlantı Bekleniyor.
    delay(500);
    Serial.print(++i); Serial.print(' ');
  }

  Serial.println('\n');
  Serial.println("Bağlantı Kuruldu!");
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());                  // ESP8266'nın IP adresini bilgisayara gönderiliyor.

                                                   //Web sunucusu port 80 üzerinden başlatılıyor.
  server.begin();
  Serial.print("AP mod başlatılıyor");
  WiFi.softAP(ssidap, passwordap);


  Serial.print(WiFi.status());
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  server.begin();
}

void loop() {

  
  client = server.available();
  if (!client)return;

  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // ##################### GELEN VERİLERE GÖRE İŞLEM YAP ##################

  if (request.indexOf("/ileri") != -1)
  {
    motor_ileri();
    printok();
    client.println("ileri");
    return;

  }


  if (request.indexOf("/geri") != -1) {
    motor_geri();
    printok();
    client.println("geri");
    return;
  }
 if (request.indexOf("/stop") != -1)
  {
    motor_stop();
    printok();
    client.println("stop");
    return;

  }
if (request.indexOf("/sol") != -1)
  {
    motor_sol();
    printok();
    client.println("sol");
    return;

  }
if (request.indexOf("/sag") != -1)
  {
    motor_sag();
    printok();
    client.println("sag");
    return;

  }

while (request.indexOf("/kalk") != -1)
  {
    servo_kaldir();
    printok();
    client.println("kalk");
    return;

  }

if (request.indexOf("/indir") != -1)
  {
    servo_indir();
    printok();
    client.println("indir");
    return;

  }
if (request.indexOf("/isik_on") != -1)
  {
    yak();
    printok();
    client.println("yak");
    return;

  }

if (request.indexOf("/isik_of") != -1)
  {
    sondur();
    printok();
    client.println("sondur");
    return;
  }

  if (request.indexOf("/ses_on") != -1)
  {
    ses_ac();
    printok();
    client.println("ses aç");
    return;
  }
                     
  if (request.indexOf("/ses_of") != -1)
  {
    ses_kapat();
    printok();
    client.println("ses kapat");
    return;
  }
 
   if (request.indexOf("/0") != -1)
  {
    HIZ=100;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/1") != -1)
  {
    HIZ=120;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/2") != -1)
  {
    HIZ=135;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/3") != -1)
  {
    HIZ=155;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/4") != -1)
  {
    HIZ=170;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/5") != -1)
  {
    HIZ=185;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/6") != -1)
  {
    HIZ=250;
    printok();
    client.println("HIZ");
    return;
  }

  if (request.indexOf("/7") != -1)
  {
    HIZ=350;
    printok();
    client.println("HIZ");
    return;
  }
if (request.indexOf("/8") != -1)
  {
    HIZ=500;
    printok();
    client.println("HIZ");
    return;
  }

if (request.indexOf("/9") != -1)
  {
    HIZ=1023;
    printok();
    client.println("HIZ");
    return;
  }
  
  // ##################################################################


}


void printok() {
  // bu kısımda html kodlarını internet arayüzüne yazıdırıyoruz.

  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  client.print("TAMAM: ");

  client.println("");
  client.println("</html>");

}

void motor_ileri() {

  digitalWrite(AIN1, HIGH);          //TB1 Motor sürücüsü  ileri yönde  AO1 ve AO2 çıkışları kontrol ediyor. Sag  Motor
  digitalWrite(AIN2, LOW);
  analogWrite(PWMA, HIZ);
  
  digitalWrite(BIN1, HIGH);          //TB1 Motor sürücüsü  ileri yönde  BO1 ve BO2 çıkışları kontrol ediyor. Sol Motor
  digitalWrite(BIN2, LOW);
  analogWrite(PWMB, HIZ);
  Serial.println(HIZ);


}

void motor_geri() {
  digitalWrite(AIN1, LOW);           //TB1 Motor sürücüsü  geri yönde  AO1 ve AO2 çıkışları kontrol ediyor. Sol ön Motor
  digitalWrite(AIN2, HIGH);
  analogWrite(PWMA, HIZ);


  digitalWrite(BIN1, LOW);           //TB1 Motor sürücüsü  ileri yönde  BO1 ve BO2 çıkışları kontrol ediyor. Sol arka Motor
  digitalWrite(BIN2, HIGH);
  analogWrite(PWMB, HIZ);
}

void motor_sag() {
      digitalWrite(AIN1, LOW);
      digitalWrite(AIN2, HIGH);
 //   analogWrite(PWMA, HIZ);


      digitalWrite(BIN1, HIGH);
      digitalWrite(BIN2, LOW);
      analogWrite(PWMB, HIZ);
}

void motor_sol() {
      digitalWrite(AIN1, HIGH);
      digitalWrite(AIN2, LOW);
      analogWrite(PWMA, HIZ);


      digitalWrite(BIN1, LOW);
      digitalWrite(BIN2, HIGH);
   // analogWrite(PWMB, HIZ);




}
void servo_kaldir() {

      for(aci = 39; aci > 0; aci--)    // 180-0  derece geri tarama
    {                           
         my_servo.write(aci);       
         delay(40);   
    }
   
}

void servo_indir() {
    

 for(aci = 0; aci < 39; aci++)   // 0-180 derece tarama
     {                             
         my_servo.write(aci);   
         delay(40);     
           }   
}
void yak() {
      digitalWrite(sol_led, HIGH);
      digitalWrite(sag_led, HIGH);
      
}

void sondur() {
      digitalWrite(sol_led, LOW);
      digitalWrite(sag_led, LOW);
}

void ses_ac() {
      digitalWrite(buzer, HIGH);
}

void ses_kapat() {
      digitalWrite(buzer, LOW);
}

void motor_stop() {
      digitalWrite(AIN1, LOW);
      digitalWrite(AIN2, LOW);
      analogWrite(PWMA, HIZ);


      digitalWrite(BIN1, LOW);
      digitalWrite(BIN2, LOW);
      analogWrite(PWMB, HIZ);

}

String checkClient (void)
{
  while (!client.available()) delay(1);
  String request = client.readStringUntil('\r');
  request.remove(0, 5);
  request.remove(request.length() - 9, 9);
  return request;
}

tekosis

ben sorunuzu tam anlayamadım. yaptığınız android uygulamanın gönderdiği slider değerlerini mcu tarafında tam olarak alabiliyor musunuz?
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Andromeda

..anladığım kadarı ile telefonda ayarlanan slider değeri nodemcuya gidiyor ama hep aynı değer gidiyor..
dolayısı ile buradaki sorun android programında..slider in değişen değeri değişkene atanamıyor..
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

bbs2006

merhaba
slider min degeri 0 max değeri 10 ayarlı. ben slider 9 değerine kaydırdığım zaman nodemcuda ilgili if yapısı çalışması gerekiyor. çalışması gerçekleştiği zaman  pwm değeri 255 ayarlıysa pwm 255 yapması gerekiyor. ancak pwm değeri hep 120 çıkıyor. buda aşağıdaki kod yapısı çalışıyor.

if (request.indexOf("/1") != -1)
  {
    HIZ=120;
    printok();
    client.println("HIZ");
    return;
  }



slider  8 konumuna kaydırdıgım zaman if yapısındaki pwm nekadar ise o değeri  yapması gerekiyor. ancak yine pwm 120 ayarlıyor.

bbs2006

Dün programı denerken şu şekilde bir çalışma gördüm.

bu if yapısını
if (request.indexOf("/5") != -1)
  {
    HIZ=185;
    printok();
    client.println("HIZ");
    return;


ses_on blogundan önce yazdım. bu şekilde kullandığım zaman slider 5 konumuna ayarladğım zaman pwm değeri istenilen değerde ayarlandı.
  }