Arduniomda devreden bağımsız led çalıştırma sorunu

Katılım
24 Nis 2021
Mesajlar
4
Puanları
1
Yaş
23
Arkadaşlar akıllı çöp kovası yapmaya çalışıyorum fakat çöp kovasına nefes alma efektli bir led eklemek istiyorum bu ledin devreden bağımsız olarak sürekli efekt yapması gerek (amacı çöp kovasının çalıştığını anlamak ve süsleme :) )

Kod:
int buzzerPin = 7;
int led1Pin = 6;
int led2Pin = 5;
int potPin = A1;           
int potVal;   
#define trigPin 9
#define echoPin 8
#include <Servo.h>
Servo myservo;

long zaman, uzaklik;


void setup()
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(led1Pin, OUTPUT);
 
  myservo.attach(13);
  myservo.write(0);
 
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop()
{

 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 zaman = pulseIn(echoPin, HIGH);
 uzaklik = (zaman/2) / 29.1;
 delay(10);
 Serial.println (uzaklik);

if ( uzaklik > 5)
{
  
  for (int i=0;i<256;i++){
    analogWrite(5,i);
    delay(5);
  }
  for (int i=255;i>0;i--){
    analogWrite(5,i);
    delay(5);
 
}
 
if ( uzaklik < 5) {

 
   digitalWrite(buzzerPin,HIGH);
   digitalWrite(led1Pin, HIGH);   
  delay (100);       
   digitalWrite(buzzerPin, LOW);           
digitalWrite(led1Pin, LOW);   
delay (100);
   digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);   
  delay (100);           
     digitalWrite(buzzerPin, LOW);       
digitalWrite(led1Pin, LOW); 
 delay (100); 
digitalWrite(led1Pin, HIGH);   
  delay (100);                 
digitalWrite(led1Pin, LOW);   


   myservo.write(180);
   delay(5000);     

              
  digitalWrite(buzzerPin,HIGH);
   digitalWrite(led1Pin, HIGH);   
  delay (100);       
   digitalWrite(buzzerPin, LOW);           
digitalWrite(led1Pin, LOW);   
delay (100);
   digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);   
  delay (100);           
     digitalWrite(buzzerPin, LOW);       
digitalWrite(led1Pin, LOW); 
 delay (100); 
digitalWrite(led1Pin, HIGH);   
  delay (100);                 
digitalWrite(led1Pin, LOW);   


   myservo.write(0);
   }
   else {potVal = analogRead(potPin);         
  potVal = map(potVal, 0, 1023, 0, 180);
  myservo.write(potVal);               
  delay(1); }

}
}

bu kod ile led çalışıyor fakat ultrasonik sensör devre dışı kalıyor resmen , ne yaparsam hem ultrasonik sensör çalışır hem led efektini yapar ?
 
En alttaki } hatalı yerde. if (uzaklık >5) e ait bu parantez. Alttan silip yukarıya ekle
 
Kod:
int buzzerPin = 7;
int led1Pin = 6;
int led2Pin = 5;
int potPin = A1;          
int potVal;  
#define trigPin 9
#define echoPin 8
#include <Servo.h>
Servo myservo;

long zaman, uzaklik;


void setup()
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(led1Pin, OUTPUT);

  myservo.attach(13);
  myservo.write(0);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop()
{

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
zaman = pulseIn(echoPin, HIGH);
uzaklik = (zaman/2) / 29.1;
delay(10);
Serial.println (uzaklik);

if ( uzaklik > 5)
{
 
  for (int i=0;i<256;i++){
    analogWrite(5,i);
    delay(5);
  }
  for (int i=255;i>0;i--){
    analogWrite(5,i);
    delay(5);

}
}

if ( uzaklik < 5) {


   digitalWrite(buzzerPin,HIGH);
   digitalWrite(led1Pin, HIGH);  
  delay (100);      
   digitalWrite(buzzerPin, LOW);          
digitalWrite(led1Pin, LOW);  
delay (100);
   digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);  
  delay (100);          
     digitalWrite(buzzerPin, LOW);      
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);  
  delay (100);                
digitalWrite(led1Pin, LOW);  


   myservo.write(180);
   delay(5000);    

             
  digitalWrite(buzzerPin,HIGH);
   digitalWrite(led1Pin, HIGH);  
  delay (100);      
   digitalWrite(buzzerPin, LOW);          
digitalWrite(led1Pin, LOW);  
delay (100);
   digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);  
  delay (100);          
     digitalWrite(buzzerPin, LOW);      
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);  
  delay (100);                
digitalWrite(led1Pin, LOW);  


   myservo.write(0);
   }
   else {potVal = analogRead(potPin);        
  potVal = map(potVal, 0, 1023, 0, 180);
  myservo.write(potVal);              
  delay(1); }

}
 
Moderatör tarafında düzenlendi:
Kod:
int buzzerPin = 7;
int led1Pin = 6;
int led2Pin = 5;
int potPin = A1;          
int potVal;  
#define trigPin 9
#define echoPin 8
#include <Servo.h>
Servo myservo;

long zaman, uzaklik;

void setup()
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(led1Pin, OUTPUT);

  myservo.attach(13);
  myservo.write(0);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
zaman = pulseIn(echoPin, HIGH);
uzaklik = (zaman/2) / 29.1;
delay(10);
Serial.println (uzaklik);

if ( uzaklik > 5)
{
  for (int i=0;i<256;i++){
    analogWrite(5,i);
    delay(5);
  }
  for (int i=255;i>0;i--){
    analogWrite(5,i);
    delay(5);
}
}

if ( uzaklik < 5) {
digitalWrite(buzzerPin,HIGH);
digitalWrite(led1Pin, HIGH);  
delay (100);      
digitalWrite(buzzerPin, LOW);          
digitalWrite(led1Pin, LOW);  
delay (100);
digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);  
delay (100);          
digitalWrite(buzzerPin, LOW);      
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);  
delay (100);                
digitalWrite(led1Pin, LOW);  
myservo.write(180);
delay(5000);              
digitalWrite(buzzerPin,HIGH);
digitalWrite(led1Pin, HIGH);  
delay (100);      
digitalWrite(buzzerPin, LOW);          
digitalWrite(led1Pin, LOW);  
delay (100);
digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);  
delay (100);          
digitalWrite(buzzerPin, LOW);      
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);  
delay (100);                
digitalWrite(led1Pin, LOW);  
myservo.write(0);
}

else {potVal = analogRead(potPin);        
  potVal = map(potVal, 0, 1023, 0, 180);
  myservo.write(potVal);              
  delay(1); }
 
Son düzenleme:
int buzzerPin = 7;
int led1Pin = 6;
int led2Pin = 5;
int potPin = A1;
int potVal;
#define trigPin 9
#define echoPin 8
#include <Servo.h>
Servo myservo;

long zaman, uzaklik;


void setup()
{
pinMode(buzzerPin, OUTPUT);
pinMode(led1Pin, OUTPUT);

myservo.attach(13);
myservo.write(0);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}

void loop()
{

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
zaman = pulseIn(echoPin, HIGH);
uzaklik = (zaman/2) / 29.1;
delay(10);
Serial.println (uzaklik);

if ( uzaklik > 5)
{

for (int i=0;i<256;i++){
analogWrite(5,i);
delay(5);
}
for (int i=255;i>0;i--){
analogWrite(5,i);
delay(5);

}
}

if ( uzaklik < 5) {


digitalWrite(buzzerPin,HIGH);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(buzzerPin, LOW);
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(buzzerPin, LOW);
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(led1Pin, LOW);


myservo.write(180);
delay(5000);


digitalWrite(buzzerPin,HIGH);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(buzzerPin, LOW);
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(buzzerPin, HIGH);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(buzzerPin, LOW);
digitalWrite(led1Pin, LOW);
delay (100);
digitalWrite(led1Pin, HIGH);
delay (100);
digitalWrite(led1Pin, LOW);


myservo.write(0);
}
else {potVal = analogRead(potPin);
potVal = map(potVal, 0, 1023, 0, 180);
myservo.write(potVal);
delay(1); }

}
Hala aynı led ve efekt var sensör yok :(
 
led efekti kodlamasında için delay kullanmayın. Aksi taktirde sensör kodları delay süresince çalışmaz. delay yerine millis kullanımını öğrenip onu kullanın.
 
led efekti kodlamasında için delay kullanmayın. Aksi taktirde sensör kodları delay süresince çalışmaz. delay yerine millis kullanımını öğrenip onu kullanın.
Pazrtesiye yetiştirmem lazım yardımcı olabilirmisin ?
Bide kodu düzenleyip atsanda olur
 
Bugünlük bu kadar yeter ödev yardımları. Kolay gelsin.
 
Milis komutu nedir diye Google yazsan çok basit bir şekilde gösteriliyor Arduino çalışma zamanını kaydeden bir döngüde LED efektleri verebilir sin
 

Forum istatistikleri

Konular
128,170
Mesajlar
915,622
Kullanıcılar
449,934
Son üye
peldayilmaz

Yeni konular

Geri
Üst