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 <servo.h>
//#include<sevseg.h>
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 &lt;= CAPACITY){
      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));
 
  
  }</sevseg.h></servo.h>

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 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);