Arduino 2 kod birleştirme

b5t

Üye
Katılım
12 Tem 2023
Mesajlar
1
Puanları
0
Yaş
14
arduino 2 kod birleştirmeyi denedim ama kod

A function-definition is not allowed here before '{' token hatası veriyor​

C++:
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

String readSerial;

void setup() {
  mySoftwareSerial.begin(9600);
  Serial.begin(9600);
  Serial.println(F("Voice Controlled mp3 player Demo."));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true);
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.setTimeOut(500); //Set serial communictaion time out 500ms

  //----Set volume----
  myDFPlayer.volume(30);  //Set volume value (0~30).

  //----Set different EQ----
  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
}

void loop() {
  if (Serial.available()) {
    readSerial = Serial.readStringUntil('#');
    Serial.println(readSerial);

    if (readSerial == "play song number 1")      myDFPlayer.play(1);

    else if (readSerial == "play song number 2")      myDFPlayer.play(2);

    else if (readSerial == "play song number 3")      myDFPlayer.play(3);

    else if (readSerial == "play song number 4")      myDFPlayer.play(4);

    else if (readSerial == "stop song")               myDFPlayer.stop();

    else if (readSerial == "pause song")              myDFPlayer.pause();

    else if (readSerial == "resume song")             myDFPlayer.start();

    else if (readSerial == "play next song")          myDFPlayer.next();

//////////////////////////////////////////////////////////////////////   2. KOD
/[CODE=cpp]/
String voice; // voice değişkeni tanımlanıyor
int
led1 = 2, //led'lerin bağlı olduğu pinler
led2 = 3,
led3 = 4,
led4 = 5,
led5 = 6;
//--------------------------Fonksiyonların tanımlanması-------------------------------//
void allon(){ // allon,hepsini aç fonksiyonu,tüm çıkışlar aktif
     digitalWrite(led1, HIGH);
     digitalWrite(led2, HIGH);
     digitalWrite(led3, HIGH);
     digitalWrite(led4, HIGH);
     digitalWrite(led5, HIGH);
}
void alloff(){ //allof,hepsini kapa fonksiyonu,tğm çıkışlar pasif
     digitalWrite(led1, LOW);
     digitalWrite(led2, LOW);
     digitalWrite(led3, LOW);
     digitalWrite(led4, LOW);
     digitalWrite(led5, LOW);
}
//-----------------------------------------------------------------------//
void setup() {
  Serial.begin(9600); // seri iletişim başlar
  pinMode(led1, OUTPUT); // led'ler çıkış elemanı
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
}
//-----------------------------------------------------------------------//
void loop() {
  while (Serial.available()){  //bilgi geldiği sürece
  delay(10); //güvenlik gecikmesi uygula
  char c = Serial.read(); //verileri oku c karekterine at
  if (c == '#') {break;} //# işareti gelirse,yani okuma bitmişse döngüyü durdur.
  voice += c; //gelen her karekteri ekle ve komut cümlesini tamamla
  }
  if (voice.length() > 0) {
    Serial.println(voice);
//-----------------------------------------------------------------------// 
  //----------Tüm ledlerin kontrolü----------//
       if(voice == "*all on") {allon();}  //all on denirse ledlerin hepsini aç
  else if(voice == "*all off"){alloff();} //all off denirse ledlerin hepsini kapa

bu kodları nasıl birleştirilir
 
  //----------Adım Adım Açma komutlar----------//
  else if(voice == "*TV on") {digitalWrite(led1, HIGH);} //tv açma komutu
  else if(voice == "*fan on") {digitalWrite(led2, HIGH);} // fan çalıştırma komutu
  else if(voice == "*computer on") {digitalWrite(led3, HIGH);} // bilgisayar açma komutu
  else if(voice == "*bedroom lights on") {digitalWrite(led4, HIGH);} // yatak odası lambasını açma
  else if(voice == "*bathroom lights on") {digitalWrite(led5, HIGH);} // banyo lambasını açma
  //----------Adım Adım Kapatma komutları----------//
  else if(voice == "*TV off") {digitalWrite(led1, LOW);}
  else if(voice == "*fan off") {digitalWrite(led2, LOW);}
  else if(voice == "*computer off") {digitalWrite(led3, LOW);}
  else if(voice == "*bedroom lights off") {digitalWrite(led4, LOW);}
  else if(voice == "*bathroom lights off") {digitalWrite(led5, LOW);}
//-----------------------------------------------------------------------//
voice="";}} //komutlar bitincce voice değişkenini sıfırla


BU KODLARI NASIL BİRLEŞTİRİLİR
 
Kodlar nasıl birleştirilir demişsin ama, birleştirilecek iki ayrı kod vereceğine zaten birleşmiş bir kod vermişsin. Üstelik verdiğin kodun içine de yazılar ve BBCODE tagleri serpiştirmişsin. Bu şekilde zaten programın derlemesi mümkün değil. Bağımsız olarak hata vermeden derlenen iki ayrı kodu ekle, onun üzerinden gidelim.
 
birleştirilmiş hali aşağıda kardeşim ;

Kod:
#include <SoftwareSerial.h>

#include <DFRobotDFPlayerMini.h>



SoftwareSerial mySoftwareSerial(2, 3); // RX, TX

DFRobotDFPlayerMini myDFPlayer;



String readSerial;

String voice; // voice değişkeni tanımlanıyor



int led1 = 2, //led'lerin bağlı olduğu pinler

    led2 = 3,

    led3 = 4,

    led4 = 5,

    led5 = 6;



void allon() {

  digitalWrite(led1, HIGH);

  digitalWrite(led2, HIGH);

  digitalWrite(led3, HIGH);

  digitalWrite(led4, HIGH);

  digitalWrite(led5, HIGH);

}



void alloff() {

  digitalWrite(led1, LOW);

  digitalWrite(led2, LOW);

  digitalWrite(led3, LOW);

  digitalWrite(led4, LOW);

  digitalWrite(led5, LOW);

}



void setup() {

  mySoftwareSerial.begin(9600);

  Serial.begin(9600);

  Serial.println(F("Voice Controlled mp3 player Demo."));

  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));



  if (!myDFPlayer.begin(mySoftwareSerial)) {

    Serial.println(F("Unable to begin:"));

    Serial.println(F("1.Please recheck the connection!"));

    Serial.println(F("2.Please insert the SD card!"));

    while (true);

  }

  Serial.println(F("DFPlayer Mini online."));



  myDFPlayer.setTimeOut(500);

  myDFPlayer.volume(30);

  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);

  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);



  pinMode(led1, OUTPUT);

  pinMode(led2, OUTPUT);

  pinMode(led3, OUTPUT);

  pinMode(led4, OUTPUT);

  pinMode(led5, OUTPUT);

}



void loop() {

  if (Serial.available()) {

    readSerial = Serial.readStringUntil('#');

    Serial.println(readSerial);



    if (readSerial == "play song number 1")      myDFPlayer.play(1);

    else if (readSerial == "play song number 2")      myDFPlayer.play(2);

    else if (readSerial == "play song number 3")      myDFPlayer.play(3);

    else if (readSerial == "play song number 4")      myDFPlayer.play(4);

    else if (readSerial == "stop song")               myDFPlayer.stop();

    else if (readSerial == "pause song")              myDFPlayer.pause();

    else if (readSerial == "resume song")             myDFPlayer.start();

    else if (readSerial == "play next song")          myDFPlayer.next();



    voice = readSerial;



    if (voice == "*all on") {allon();}

    else if (voice == "*all off") {alloff();}

    else if (voice == "*TV on") {digitalWrite(led1, HIGH);}

    else if (voice == "*fan on") {digitalWrite(led2, HIGH);}

    else if (voice == "*computer on") {digitalWrite(led3, HIGH);}

    else if (voice == "*bedroom lights on") {digitalWrite(led4, HIGH);}

    else if (voice == "*bathroom lights on") {digitalWrite(led5, HIGH);}

    else if (voice == "*TV off") {digitalWrite(led1, LOW);}

    else if (voice == "*fan off") {digitalWrite(led2, LOW);}

    else if (voice == "*computer off") {digitalWrite(led3, LOW);}

    else if (voice == "*bedroom lights off") {digitalWrite(led4, LOW);}

    else if (voice == "*bathroom lights off") {digitalWrite(led5, LOW);}



    voice = "";

  }

}

Bu şekilde, iki kodu birleştirdim. Artık hem DFPlayer Mini'yi kontrol edebilirsiniz hem de sesle komutlarla LED'leri kontrol edebilirsiniz. Lütfen kodu dikkatlice kontrol edin ve gerektiğinde bağlantıları ve pin numaralarını ihtiyaçlarınıza göre ayarlayın.
 
Moderatör tarafında düzenlendi:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…