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:
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.
 
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
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…