arduino'ya enerji verilir verilmez
Böyle bir şey yapmayın, yani Arduino'yu kontrol etmek için enerji verilip kesmeyin, bunun yerine Arduino'yu kontrol sistemi olarak kullanın.
İstediğiniz kod bu şekilde olabilir
const int girisPin = 3; // Giriş pinini tanımlandı
const int cikisPin = 4; // Çıkış pinini tanımlandı
bool oncekiGirisDurum = LOW; // Giriş durumunu saklamak için değişken
bool cikisDurum = LOW; // Çıkış durumunu saklamak için değişken
unsigned long baslangicZamani = 0; // Zamanı takip etmek için değişken
const unsigned long tetiklemeSuresi = 10; // Tetikleme süresi (milisaniye cinsinden)
const unsigned long cikisSuresi = 10000; // Çıkış süresi (milisaniye cinsinden)
void setup() {
pinMode(girisPin, INPUT); // Giriş pinini giriş olarak ayarla
pinMode(cikisPin, OUTPUT); // Çıkış pinini çıkış olarak ayarla
}
void loop() {
// Giriş pininin durumunu oku
bool yeniGirisDurum = digitalRead(girisPin);
// Eğer giriş pininin durumu değiştiyse ve tetikleme süresi geçmişse
if (yeniGirisDurum != oncekiGirisDurum && millis() - baslangicZamani >= tetiklemeSuresi) {
// Giriş durumunu güncelle
oncekiGirisDurum = yeniGirisDurum;
// Eğer giriş aktifse
if (oncekiGirisDurum == HIGH) {
// Çıkışı aktif et
digitalWrite(cikisPin, HIGH);
cikisDurum = HIGH;
// Başlangıç zamanını kaydet
baslangicZamani = millis();
}
// Eğer giriş pasifse
else {
// Çıkışı kapat
digitalWrite(cikisPin, LOW);
cikisDurum = LOW;
}
}
// Eğer çıkış aktifse ve çıkış süresi geçmişse
if (cikisDurum == HIGH && millis() - baslangicZamani >= cikisSuresi) {
// Çıkışı kapat
digitalWrite(cikisPin, LOW);
cikisDurum = LOW;
}
}
Bu kod, giriş pininin belirli bir süre boyunca aktif olduğunda
(Yanlış tetiklenmeyi önlemek için, burada 10 milisaniye olarak belirlendi)
çıkışı 10 saniyeliğine aktif eder ve ardından çıkışı kapatır.
Umarım bu kod işinizi görür