Otopark Projesi
  • Merhaba;

    Bir otopark projem var, otopark girişinde 1 bariyer A sensörü ve B sensörü var.
    Otoparkta 20 araçlık yer var
    Her araç A sensörüne geldiğinde içeride 20 den az araba var ise bariyer'e kuru kontak yollayacak.
    Araç A sensöründen > B Sensörüne geçince sayı artacak tam tersinde azalacak.
    içerideki araç 20 den az ise yeşil ışık yanacak,20 ise kırmızı yanacak.

    Elimde şöyle bir kod var burada sadece servo motor kontrolü var servo motor yerine ben kuru kontak göndermek istiyorum.
    digital tabela yerine de kırmızı ve yeşil ışık yakmak istiyorum.

    Bu konuda ücretlide olsa yardımcı olabilecek arkadaşlar var ise sevinirim.
    teşekkürler.

    #include
    //#include
    Servo myservo; //servo motor tanimlamis


    #define ServoM 12 //servo motor kontrol pini
    #define Bright 11
    #define Exit 9 //cikis butonu tanimlamis
    #define In 8 // giris butonu tanimlamis

    #define BarLow 177 // Bariyerin en dusuk pozisyonu ayarlanmis
    #define BarUp 85 // Bariyerin en yuksek pozisyonu ayarlanmis
    #define CAPACITY 8 // otopark kapasitesi belirlenmistir
    #define INTEN 80
    //7 segment bacakları tanımlanmıs
    int redPin = 22 ;
    int sensorPin = A0;

    int segA=1;
    int segB =2;
    int SegC= 3;
    int SegD =4;
    int SegE=5;
    int SegF =6;
    int SegG =7;
    //0-9 arasındaki rakamlari 7 segmente gönderilmesi icin bir dizi tanimlanmistir
    byte segments[10]={

    B00111111, //0
    B00000110, //1
    B01011011, //2
    B01001111, //3
    B01100110, //4
    B01101101, //5
    B01111101, //6
    B00000111, //7
    B01111111, //8
    B01101111 //9
    };
    void setup(){
    pinMode(redPin, OUTPUT);
    myservo.attach(ServoM); // tanimlanan servo kontrol pini ile servo degiskeni birlestir
    pinMode(Exit,INPUT);
    pinMode(In,INPUT);
    digitalWrite(Exit,HIGH);
    digitalWrite(In,HIGH);

    pinMode(1,OUTPUT);
    pinMode(2,OUTPUT);
    pinMode(3,OUTPUT);
    pinMode(4,OUTPUT);
    pinMode(5,OUTPUT);
    pinMode(6,OUTPUT);
    pinMode(7,OUTPUT);
    pinMode(Bright,OUTPUT);
    analogWrite(Bright,255*INTEN/100);
    myservo.write(BarLow);


    }

    int Available=9; // otoparktaki bos alan bilgisi integer olarak ayarlandi

    void loop(){
    int blinkRate = analogRead(sensorPin);
    Serial.println(blinkRate);
    if(blinkRate < 5 )
    {
    digitalWrite(redPin, HIGH);
    }
    else
    {

    digitalWrite(redPin, LOW);
    }
    Display(Available);
    if(digitalRead(In)==0)
    {
    if(Available !=0){

    Available--;
    myservo.write(BarUp);
    delay(3000);
    myservo.write(BarLow);
    }

    }
    if(digitalRead(Exit)==0)
    {
    if(Available <= CAPACITY){<br /> Available++;
    myservo.write(BarUp);
    delay(3000);
    myservo.write(BarLow);
    }
    }

    }

    void Display(int number){

    byte segs= ~segments[number];

    digitalWrite(1, bitRead(segs, 0));
    digitalWrite(2, bitRead(segs, 1));
    digitalWrite(3, bitRead(segs, 2));
    digitalWrite(4, bitRead(segs, 3));
    digitalWrite(5, bitRead(segs, 4));
    digitalWrite(6, bitRead(segs, 5));
    digitalWrite(7, bitRead(segs, 6));


    }
  • bir role pini sec HIGH LOW yap yeter. role nasıl bağlanır dıyorsan forumun başındaki linklerde bır çok bağlantı şeklinin oldugu bır yazı var orada role de anlatılmış transıstorle sureceksin.
  • Bence en baştan başla,
    Önce A B dediğin sensörleri bir oku,
    daha sonra algoritmanı temizinden oluştur.
    En sonda da algoritmana göre röleyi aç veya kapat.
  • şöyle yaptım
  • Merhaba son hali bu
    8 araçlık yer var otopark dolunca led yakıyor araç çıkışı olunca led sönüyor. bu led yerine dolu tabelası kullanacağım.
    birde otopark yer sayısını 20 yapmak istiyorum 7 digit display yerine çift haneli ne kullanabilirim.
    örnek kod var mı?


    #define Bright 11 //servo library disable PWM on pins 9 and 10.
    #define Exit 9 //Pin connected to the EXIT button.
    #define In 8 //Pin connected to the IN button.
    #define Bariyer 12 //bariyer
    #define Dolu 10 //dolu

    #define CAPACITY 8 //Capacity of the parking lot.
    #define INTEN 80 //Display intensity %

    //Pins conections to segments (cathodes).
    #define segA 0
    #define segB 1
    #define segC 2
    #define segD 3
    #define segE 4
    #define segF 5
    #define segG 6

    //Array with the segments to represent the decimal numbers (0-9).
    byte segments[10] = {
    // pgfedcba <--- segments<br /> B00111111, // number 0
    B00000110, // number 1
    B01011011, // number 2
    B01001111, // number 3
    B01100110, // number 4
    B01101101, // number 5
    B01111101, // number 6
    B00000111, // number 7
    B01111111, // number 8
    B01101111 // number 9
    };

    void setup(){


    pinMode(Exit, INPUT); // set "EXIT" button pin to input
    pinMode(In, INPUT); // set "IN" button pin to input
    pinMode(Bariyer, OUTPUT); // set "IN" button pin to input
    pinMode(Dolu, OUTPUT); // set "IN" button pin to input
    digitalWrite(Exit, HIGH); // Connect Pull-Up resistor.
    digitalWrite(In, HIGH); // Connect Pull-Up resistor.
    pinMode(segA,OUTPUT);
    pinMode(segB,OUTPUT);
    pinMode(segC,OUTPUT);
    pinMode(segD,OUTPUT);
    pinMode(segE,OUTPUT);
    pinMode(segF,OUTPUT);
    pinMode(segG,OUTPUT);
    pinMode(Bright,OUTPUT);
    analogWrite(Bright,255*INTEN/100);

    //delay(10000);
    }

    int Available= 9; // Number of places available.

    //================================================================
    void loop(){
    Display(Available);
    if(digitalRead(In)==0)
    {
    if(Available != 0){
    Available--;
    digitalWrite(Bariyer,HIGH);
    delay(1000);
    digitalWrite(Bariyer,LOW);
    digitalWrite(Dolu,LOW);
    }


    }
    if(digitalRead(In)==1){ if(Available == 0){ digitalWrite(Dolu,HIGH);}

    }

    if(digitalRead(Exit)==0)
    {
    if(Available != CAPACITY){
    Available++;
    digitalWrite(Bariyer,HIGH);
    delay(1000);
    digitalWrite(Bariyer,LOW);
    digitalWrite(Dolu,LOW);
    }
    }
    }

    /*-------------------------------------------------------------------
    Put the segments according to the number.
    --------------------------------------------------------------------*/
    void Display(int number){
    byte segs = ~segments[number]; //"~" is used for commom anode.

    digitalWrite(segA, bitRead(segs, 0) );
    digitalWrite(segB, bitRead(segs, 1) );
    digitalWrite(segC, bitRead(segs, 2) );
    digitalWrite(segD, bitRead(segs, 3) );
    digitalWrite(segE, bitRead(segs, 4) );
    digitalWrite(segF, bitRead(segs, 5) );
    digitalWrite(segG, bitRead(segs, 6) );
    }
  • yazmanı beklediğim kodu yazmışsın oldu gibi görünüyor

    digitalWrite(Bariyer,HIGH);
    delay(1000);
    digitalWrite(Bariyer,LOW);
    digitalWrite(Dolu,LOW);

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.