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
Kodlarınızı da paylaşsaydınız keşke...
#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;
}
ben sorunuzu tam anlayamadım. yaptığınız android uygulamanın gönderdiği slider değerlerini mcu tarafında tam olarak alabiliyor musunuz?
..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..
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.
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ı.
}