• 27-02-2021, 17:37:48
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Engelden kaçan araba ve bluetoothla çalışan araba yapmak istiyorum. yaptım da. ama kod kısmında anlayamadığım hatalar alıyorum, yardım edebilen olursa çok sevinirim..

    ******************************* KOD****************

    #include <Servo.h>
    Servo servom
    #define button 13 // buton pini olarak tanımladım
    int buttonState = 0; // push butonu yaylı buton gibi kullanmak için
    boolean on=false;
    int echoPin = 2;
    int trigPin = 7; // echo ve trig pinlerini tanımladım
    int mesafe;
    int sure;
    int motorA1 = 9; // L298N IN1 girişi
    int motorA2 = 6; // L298N IN2 girişi
    int motorB1 = 5; // L298N IN3 girişi
    int motorB2 = 3; // L298N IN4 girişi
    int state; // Bluetooth cihazından gelecek sinyalin değişkeni
    int vSpeed = 255; // Standart Hız, 0-255 arası değer alabilir


    void setup() {
    servom.attach(11);
    pinMode(button,INPUT);
    pinMode(motorA1,OUTPUT);
    pinMode(motorA2,OUTPUT);
    pinMode(motorB1,OUTPUT);
    pinMode(motorB2,OUTPUT);
    Serial.begin(9600);
    }

    void loop() {
    buttonState = digitalRead(button);
    if (buttonState == HIGH) {
    if(on==true){
    on=false;
    } else{
    on=true;
    }
    }



    int mesafeR = 0; // engelden kaçan robot için
    int mesafeL = 0;

    // ****************Bluetooth İçin*************************
    if (on == true){
    if(Serial.available()>0){
    state = Serial.read();
    }

    /* Uygulamadan ayarlanabilen 4 hız seviyesi.(Değerler 0-255 arasında olmalı)*/
    if (state == '0'){
    vSpeed=0;}
    else if (state == '1'){
    vSpeed=100;}
    else if (state == '2'){
    vSpeed=180;}
    else if (state == '3'){
    vSpeed=200;}
    else if (state == '4'){
    vSpeed=255;}
    /********İleri*********/
    //Gelen veri F ise araba ileri gider.
    if (state == 'F') {
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    }
    /*******İleri Sol*********/
    //Gelen veri G ise araba ileri sol(çapraz) gider.
    else if (state == 'G') {
    analogWrite(motorA1,vSpeed );
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed/3);
    analogWrite(motorB2, 0);
    }
    /*******İleri Sağ*********/
    //Gelen veri I ise araba ileri sağ(çapraz) gider.
    else if (state == 'I') {
    analogWrite(motorA1, vSpeed/3);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    }
    /********Geri*********/
    //Gelen veri B ise araba geri gider.
    else if (state == 'B') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    }
    /*******Geri Sol*********/
    //Gelen veri H ise araba geri sol(çapraz) gider
    else if (state == 'H') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed/3);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    }
    /*******Geri Sağ*********/
    //Gelen veri J ise araba geri sağ(çapraz) gider
    else if (state == 'J') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed/3);
    }
    /**********Sol**********/
    //Gelen veri L ise araba sola gider.
    else if (state == 'L') {
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, vSpeed/2);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    }
    /**********Sağ**********/
    //Gelen veri R ise araba sağa gider
    else if (state == 'R') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, vSpeed/2);
    }
    /*********Stop**********/
    //Gelen veri S ise arabayı durdur.
    else if (state == 'S'){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    }
    }
    }


    else {
    // *****************ENGELDEN KAÇAN ROBOT****************//
    ileri();
    if(mesafe <= 20) //mesafe 20cmden küçük eşitse
    {
    dur();
    delay(200);
    mesafeR = sagaBak();
    delay(300);
    mesafeL = solaBak();
    delay(300);


    if(mesafeR>=mesafeL)
    {
    sag();
    dur();
    }
    else
    {
    sol();
    dur();
    }
    }
    ileri();
    //tekrar yeni mesafe ölçümü alıyoruz
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    gecenSure= pulseIn(echoPin, HIGH);
    mesafe= (gecenSure/2) / 29.1;
    }





    // Kod karmaşasından kaçınmak için geri, ileri sağ ve sol şeylerini tanımladık
    void geri(){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    delay(400);
    }
    void sag(){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, vSpeed/2);
    delay(400);
    }
    void sol(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, vSpeed/2);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    delay(400);
    }
    void ileri(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    delay(400);
    }
    void dur(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    delay(400);
    }





    void sagaBak(){
    servom.write(0); //servoyu tam sağa çevir
    delay(500);
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    sure= pulseIn(echoPin, HIGH);
    mesafe=(sure/2) / 29.1;
    delay(100);
    servom.write(100); //servoyu ortala
    return mesafe;
    delay(100);
    }

    void solaBak(){
    servom.write(180); //servo tam sola
    delay(500);
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    sure= pulseIn(echoPin, HIGH);
    mesafe=(sure/2) / 29.1;
    delay(100);
    servom.write(100); //servoyu ortala
    return mesafe;
    delay(100);
    }

    *************************ALDIĞIM HATALAR***************************
    KOD_V2:4:1: error: expected initializer before 'int'
    int buttonState = 0; // push butonu yaylı buton gibi kullanmak için
    ^~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void setup()':
    KOD_V2:19:1: error: 'servom' was not declared in this scope
    servom.attach(11);
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:19:1: note: suggested alternative: 'Servo'
    servom.attach(11);
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void loop()':
    KOD_V2:29:3: error: 'buttonState' was not declared in this scope
    buttonState = digitalRead(button);
    ^~~~~~~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:29:3: note: suggested alternative: 'button'
    buttonState = digitalRead(button);
    ^~~~~~~~~~~
    button
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: At global scope:
    KOD_V2:136:2: error: expected unqualified-id before 'else'
    else {
    ^~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void sagaBak()':
    KOD_V2:217:3: error: 'servom' was not declared in this scope
    servom.write(0); //servoyu tam sağa çevir
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:217:3: note: suggested alternative: 'Servo'
    servom.write(0); //servoyu tam sağa çevir
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:228:10: warning: return-statement with a value, in function returning 'void' [-fpermissive]
    return mesafe;
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void solaBak()':
    KOD_V2:233:3: error: 'servom' was not declared in this scope
    servom.write(180); //servo tam sola
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:233:3: note: suggested alternative: 'Servo'
    servom.write(180); //servo tam sola
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:244:10: warning: return-statement with a value, in function returning 'void' [-fpermissive]
    return mesafe;
    ^~~~~~
    exit status 1
    expected initializer before 'int'
  • 27-02-2021, 22:26:49
    #2
    Sinoper5767 adlı üyeden alıntı: mesajı görüntüle
    Engelden kaçan araba ve bluetoothla çalışan araba yapmak istiyorum. yaptım da. ama kod kısmında anlayamadığım hatalar alıyorum, yardım edebilen olursa çok sevinirim..

    ******************************* KOD****************

    #include <Servo.h>
    Servo servom
    #define button 13 // buton pini olarak tanımladım
    int buttonState = 0; // push butonu yaylı buton gibi kullanmak için
    boolean on=false;
    int echoPin = 2;
    int trigPin = 7; // echo ve trig pinlerini tanımladım
    int mesafe;
    int sure;
    int motorA1 = 9; // L298N IN1 girişi
    int motorA2 = 6; // L298N IN2 girişi
    int motorB1 = 5; // L298N IN3 girişi
    int motorB2 = 3; // L298N IN4 girişi
    int state; // Bluetooth cihazından gelecek sinyalin değişkeni
    int vSpeed = 255; // Standart Hız, 0-255 arası değer alabilir


    void setup() {
    servom.attach(11);
    pinMode(button,INPUT);
    pinMode(motorA1,OUTPUT);
    pinMode(motorA2,OUTPUT);
    pinMode(motorB1,OUTPUT);
    pinMode(motorB2,OUTPUT);
    Serial.begin(9600);
    }

    void loop() {
    buttonState = digitalRead(button);
    if (buttonState == HIGH) {
    if(on==true){
    on=false;
    } else{
    on=true;
    }
    }



    int mesafeR = 0; // engelden kaçan robot için
    int mesafeL = 0;

    // ****************Bluetooth İçin*************************
    if (on == true){
    if(Serial.available()>0){
    state = Serial.read();
    }

    /* Uygulamadan ayarlanabilen 4 hız seviyesi.(Değerler 0-255 arasında olmalı)*/
    if (state == '0'){
    vSpeed=0;}
    else if (state == '1'){
    vSpeed=100;}
    else if (state == '2'){
    vSpeed=180;}
    else if (state == '3'){
    vSpeed=200;}
    else if (state == '4'){
    vSpeed=255;}
    /********İleri*********/
    //Gelen veri F ise araba ileri gider.
    if (state == 'F') {
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    }
    /*******İleri Sol*********/
    //Gelen veri G ise araba ileri sol(çapraz) gider.
    else if (state == 'G') {
    analogWrite(motorA1,vSpeed );
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed/3);
    analogWrite(motorB2, 0);
    }
    /*******İleri Sağ*********/
    //Gelen veri I ise araba ileri sağ(çapraz) gider.
    else if (state == 'I') {
    analogWrite(motorA1, vSpeed/3);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    }
    /********Geri*********/
    //Gelen veri B ise araba geri gider.
    else if (state == 'B') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    }
    /*******Geri Sol*********/
    //Gelen veri H ise araba geri sol(çapraz) gider
    else if (state == 'H') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed/3);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    }
    /*******Geri Sağ*********/
    //Gelen veri J ise araba geri sağ(çapraz) gider
    else if (state == 'J') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed/3);
    }
    /**********Sol**********/
    //Gelen veri L ise araba sola gider.
    else if (state == 'L') {
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, vSpeed/2);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    }
    /**********Sağ**********/
    //Gelen veri R ise araba sağa gider
    else if (state == 'R') {
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, vSpeed/2);
    }
    /*********Stop**********/
    //Gelen veri S ise arabayı durdur.
    else if (state == 'S'){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    }
    }
    }


    else {
    // *****************ENGELDEN KAÇAN ROBOT****************//
    ileri();
    if(mesafe <= 20) //mesafe 20cmden küçük eşitse
    {
    dur();
    delay(200);
    mesafeR = sagaBak();
    delay(300);
    mesafeL = solaBak();
    delay(300);


    if(mesafeR>=mesafeL)
    {
    sag();
    dur();
    }
    else
    {
    sol();
    dur();
    }
    }
    ileri();
    //tekrar yeni mesafe ölçümü alıyoruz
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    gecenSure= pulseIn(echoPin, HIGH);
    mesafe= (gecenSure/2) / 29.1;
    }





    // Kod karmaşasından kaçınmak için geri, ileri sağ ve sol şeylerini tanımladık
    void geri(){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, vSpeed);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, vSpeed);
    delay(400);
    }
    void sag(){
    analogWrite(motorA1, 0);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, vSpeed/2);
    delay(400);
    }
    void sol(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, vSpeed/2);
    analogWrite(motorB1, 0);
    analogWrite(motorB2, 0);
    delay(400);
    }
    void ileri(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    delay(400);
    }
    void dur(){
    analogWrite(motorA1, vSpeed);
    analogWrite(motorA2, 0);
    analogWrite(motorB1, vSpeed);
    analogWrite(motorB2, 0);
    delay(400);
    }





    void sagaBak(){
    servom.write(0); //servoyu tam sağa çevir
    delay(500);
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    sure= pulseIn(echoPin, HIGH);
    mesafe=(sure/2) / 29.1;
    delay(100);
    servom.write(100); //servoyu ortala
    return mesafe;
    delay(100);
    }

    void solaBak(){
    servom.write(180); //servo tam sola
    delay(500);
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin,LOW);
    sure= pulseIn(echoPin, HIGH);
    mesafe=(sure/2) / 29.1;
    delay(100);
    servom.write(100); //servoyu ortala
    return mesafe;
    delay(100);
    }

    *************************ALDIĞIM HATALAR***************************
    KOD_V2:4:1: error: expected initializer before 'int'
    int buttonState = 0; // push butonu yaylı buton gibi kullanmak için
    ^~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void setup()':
    KOD_V2:19:1: error: 'servom' was not declared in this scope
    servom.attach(11);
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:19:1: note: suggested alternative: 'Servo'
    servom.attach(11);
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void loop()':
    KOD_V2:29:3: error: 'buttonState' was not declared in this scope
    buttonState = digitalRead(button);
    ^~~~~~~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:29:3: note: suggested alternative: 'button'
    buttonState = digitalRead(button);
    ^~~~~~~~~~~
    button
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: At global scope:
    KOD_V2:136:2: error: expected unqualified-id before 'else'
    else {
    ^~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void sagaBak()':
    KOD_V2:217:3: error: 'servom' was not declared in this scope
    servom.write(0); //servoyu tam sağa çevir
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:217:3: note: suggested alternative: 'Servo'
    servom.write(0); //servoyu tam sağa çevir
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:228:10: warning: return-statement with a value, in function returning 'void' [-fpermissive]
    return mesafe;
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino: In function 'void solaBak()':
    KOD_V2:233:3: error: 'servom' was not declared in this scope
    servom.write(180); //servo tam sola
    ^~~~~~
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:233:3: note: suggested alternative: 'Servo'
    servom.write(180); //servo tam sola
    ^~~~~~
    Servo
    C:UserstekneDesktopCAS PROJEMMMMKOD_V2KOD_V2.ino:244:10: warning: return-statement with a value, in function returning 'void' [-fpermissive]
    return mesafe;
    ^~~~~~
    exit status 1
    expected initializer before 'int'
    Servo servom kodu ; ile bitmeli. Fonksiyondan return ile değer döndürecekseniz void kullanmayın. Değer döndüreceğiniz tiple oluşturun. void solaBak() yerine int solaBak() gibi yani.