Arduino kodlama için yardım lütfen

Katılım
17 Ocak 2022
Mesajlar
4
Puanları
1
Yaş
34
arkadaşlar merhaba, arduinoda yeniyim ve bir proje kodu yazdım fakat sonuç istediğim gibi olmadı. kod şöyle;

//#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
//
void setup () {
Serial.begin (9600);
mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
mp3_set_volume (15);
}
//
void loop () {
int sensorValue = analogRead(A1);

if (sensorValue = 1.25) {
mp3_play (1);
delay (2900);
}
else { mp3_play (2);
}
}

burda sensorvalue 1.25 olunca sürekli mp3_1 çalıyor. Yine 1.25 olmadığı zamanda mp3_2 yi çalıyor sürekli.

amacım şu: sensorvalue 1.25 olunca bir kez mp3_1, 1.25 olmadığı zaman birkez mp3_2 çalacak. koşullar sağlandığında bu durumun tekrar etmesini istiyorum.

yardımınızı bekliyorum
 
Analog girişten 1.25 değerini okuyamazsın 0-5volt arasını 1024 parçaya böler. 1.25volt okumak istiyorsan 256 girmen gerekiyor. Basit bir bayrak atayarak mp3 lerin her seferinde bir kere çalmasını sağlayabilirsin.

Kod:
#include <DFPlayer_Mini_Mp3.h>
#define SENSOR_DEGERI 256    //0-1024 arası bir değer gerekli 1.25v için 256 lazım
bool sensor125OlduMu = false;
void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
    mp3_set_volume (15);
}
void loop () {
    int sensorValue = analogRead(A1);
    if (sensorValue = SENSOR_DEGERI ) {
        if(!sensor125OlduMu)
            mp3_play (1);
        else
            sensor125OlduMu = true;
        delay (2900);   //bu ne için bilmiyorum
    }
        else {
            if(sensor125OlduMu)
                mp3_play (2);
            else
                sensor125OlduMu = false;
    }
}
 
Son düzenleme:
Analog girişten 1.25 değerini okuyamazsın 0-5volt arasını 1024 parçaya böler. 1.25volt okumak istiyorsan 256 girmen gerekiyor. Basit bir bayrak atayarak mp3 lerin her seferinde bir kere çalmasını sağlayabilirsin.

Kod:
#include <DFPlayer_Mini_Mp3.h>
#define SENSOR_DEGERI 256    //0-1024 arası bir değer gerekli 1.25v için 256 lazım
bool sensor125OlduMu = false;
void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
    mp3_set_volume (15);
}
void loop () {
    int sensorValue = analogRead(A1);
    if (sensorValue = SENSOR_DEGERI ) {
        if(!sensor125OlduMu)
            mp3_play (1);
        else
            sensor125OlduMu = true;
        delay (2900);   //bu ne için bilmiyorum
    }
        else {
            if(sensor125OlduMu)
                mp3_play (2);
            else
                sensor125OlduMu = false;
    }
}
Fakirmaker düzeltme için teşekkürler. voltaj değeri için ekleme yaptım ve kod şöyle oldu

Kod:
#include <DFPlayer_Mini_Mp3.h>
bool sensor125OlduMu = false;
void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
    mp3_set_volume (15);
}
void loop () {
    int sensorValue = analogRead(A1);
    float voltage = sensorValue * (5.0 / 1024.0);

  Serial.print("   ");
  Serial.print(voltage);
  Serial.println(" V");
 
        if ( voltage = 1.25 ) {
        if(sensor125OlduMu)
            mp3_play (1);
        
        else
            sensor125OlduMu = true;
        delay (2900);   //bu ne için bilmiyorum - mp3 çalma süresi verme
    }
        else {
            if(sensor125OlduMu)
                mp3_play (2);
            else
                sensor125OlduMu = false;
    }
}

Kodu denediğimde sürekli mp3_1 çalıyor. Voltaj değerleri aşağıdaki gibiydi

1.25
2.52
4.38
0.23
1.25
0.00
0.00
0.41
1.25
1.25
1.25
1.59
2.24
2.22
1.25
.
.
.


Yapmak istediğim şeyi aşağıda anlatmaya çalıştım.

1.25 | mp3_1 (bir kez çalacak)
2.52 |
4.38 |
0.23 |
1.25 | mp3_2 ( sadece bir kez çalacak - 7 kez değil )
0.00 |
0.00 |
0.41 |
1.25 |
1.25 | mp3_1 (bir kez çalacak - 3kez değil)
1.25 |
1.59 |
2.24 | mp3_2 (bir kez çalacak - 3 kez değil)
2.22 |
1.25 | mp3_1 (bir kez çalacak)
.
.
.

yardım için şimdiden teşekkür ediyorum.
 
Son düzenleme:
Kod:
if (sensorValue = SENSOR_DEGERI )

Kısmında bir = unutmuşum

Kod:
if (sensorValue == SENSOR_DEGERI )

Şeklinde olacak.

İkincisi float cinsinden değerleri == operatörü ile kontrol edilemiyor çoğu zaman. Ayrıca analog dönüştürücü her zaman sabit kalmaz ufak oynamalar yapar. Tavsiyem; float değere dönüştürmek yerine onun karşılığı olan int değerleri karşılaştır ve doğrudan == operatörü yerine yakın değerleri de işlemesi için < veya > operatörlerini kullan.
 
Kod:
if (sensorValue = SENSOR_DEGERI )

Kısmında bir = unutmuşum

Kod:
if (sensorValue == SENSOR_DEGERI )

Şeklinde olacak.

İkincisi float cinsinden değerleri == operatörü ile kontrol edilemiyor çoğu zaman. Ayrıca analog dönüştürücü her zaman sabit kalmaz ufak oynamalar yapar. Tavsiyem; float değere dönüştürmek yerine onun karşılığı olan int değerleri karşılaştır ve doğrudan == operatörü yerine yakın değerleri de işlemesi için < veya > operatörlerini kullan.
söylediğin gibi düzelttim fakirmaker 👍

Kod:
#include <DFPlayer_Mini_Mp3.h>
#define SENSOR_DEGERI 256    //0-1024 arası bir değer gerekli 1.25v için 256 lazım
bool sensor125OlduMu = false;

void setup () {
    Serial.begin (9600);
    mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
    mp3_set_volume (15);
}
void loop () {
    int sensorValue = analogRead(A1);

  Serial.print("Sensör Değeri ");  
  Serial.print(sensorValue); 
  Serial.println(" ");
 
    if ( sensorValue == SENSOR_DEGERI ) {
        if(!sensor125OlduMu)
            mp3_play (1);
        else
            sensor125OlduMu = true;
        delay (2900);   //bu ne için bilmiyorum
    }
        else {
            if(sensor125OlduMu)
                mp3_play (2);
               
            else
                sensor125OlduMu = false;
    }
}

sonuç :
sensorValue 256 olunca mp3_1 çalıyor fakat olmayınca mp3_2 çalmıyor.

istediğim sonuç :
SensorValue 256 olunca yada olduğu müddetçe sadece 1 kez mp3_1 çalması (sürekli değil)
SensorValue 256 olmadığı zaman sadece 1 kez mp3_2 çalması (sürekli değil)

Bunun kodlaması nasıl olmalı ?
 
Son düzenleme:
Benimde istediğim sonuç, gençlerin herşeyi hazır beklemek yerine biraz da çaba göstermeleri ama şimdiye kadar forumda öyle biri çıkmadı karşıma. İlla ki sonuna kadar herşeyi halledip çalışır halde ellerine teslim etmemi istiyorlar. Biraz düşün bakalım neden 1 çalıyor 2 çalmıyor veya neden sürekli tekrar ediyor? belki ufak eklemelerle çalıştırabilirsin. Benden bu kadar.
 
Benimde istediğim sonuç, gençlerin herşeyi hazır beklemek yerine biraz da çaba göstermeleri ama şimdiye kadar forumda öyle biri çıkmadı karşıma. İlla ki sonuna kadar herşeyi halledip çalışır halde ellerine teslim etmemi istiyorlar. Biraz düşün bakalım neden 1 çalıyor 2 çalmıyor veya neden sürekli tekrar ediyor? belki ufak eklemelerle çalıştırabilirsin. Benden bu kadar.
Değerli hocam sizi çok iyi anlıyorum gençler konusunda haklısınız, keşke 30 yaş daha genç olsaydım. Araba için hobi olarak yapmak istedim, ama çok yeni olunca zorlanıyorum.
Emeğiniz için teşekkür ederim olursa yine değerli katkılarınızı bekliyorum fakirmaker hocam
 

Forum istatistikleri

Konular
129,835
Mesajlar
930,599
Kullanıcılar
452,662
Son üye
Yılmaz Çetiner

Yeni konular

Çevrimiçi üyeler

Geri
Üst