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 <= 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>