Motordan bip sesi geliyor.

sessizl1q

Üye
Katılım
17 Tem 2021
Mesajlar
9
Puanları
1
Yaş
30
Arduino ile motor çalıştırıyorum. dc 775 motor ile yaptığım projede 12V 3.8 A adaptör ile besliyorum sürücüyü. motordan bip sesi geliyor. Bunu Kod içerisinde mi hallediyoruz. Farklı bir yol ile mi?. Gelen bip sesini nasıl engellerim? Neden kaynaklanır. Nasıl engellerim bunu. Yardımcı olabilirseniz sevinirim. Şimdiden teşekkürler.
 
Nasıl bir ayar yapmam gerekiyor. Kodlarla mı düzeltmeliyim. Hangi kodlar olacak bir bilgim yok pek.
 
Kodlarınızı ve Arduino modelinizi paylaşınız.
 
Arduino Uno

C++:
#include <Arduino.h>

enum buton{durdur,baslat,hiz_artir,hiz_azalt,toplam_buton};
const uint8_t butonlar [toplam_buton]  = {5,4,3,2};  //buton pinleri

enum led{bir,iki,uc,dort,toplam_led};
const uint8_t ledler[toplam_led]  = {6,7,8,12};       //led pinleri

enum motor{MotorE,MotorR,MotorL,motor_toplam};
const uint8_t motorlar[motor_toplam] = {10,11,9}; // motor pinleri


enum durumlar{kademe_1,kademe_2,kademe_3,kademe_4,duruyor};
const uint8_t durum_sureleri[5] = {5,10,15,20,0};  //dk cinsinden süreler
uint8_t durum_indexi = duruyor;

const int calisma_suresi  = 500;  //ms cinsinden
const int durma_suresi  = 300;  //ms cinsinden
int hiz =50;
unsigned long hareket_gecikmesi = 0;
unsigned long hareket_zaman_sayaci = 0;
unsigned long simdiki_zaman_sayaci = 0;

void motor_dur(),motor_baslat(),hiz_artirma(),hiz_azaltma(),led_yakma(uint8_t); //Gereken fonksiyonlar

void setup() {
  for(uint8_t i=0;i<toplam_led;i++)
    pinMode(ledler[i],OUTPUT);
  led_yakma(4); //Hepsi sönük
  for(uint8_t j=0;j<toplam_buton;j++)
    pinMode(butonlar[j],INPUT_PULLUP);


 for (uint8_t k=0;k<motor_toplam;k++)
      pinMode(motorlar[k],OUTPUT);
    
}

void loop() {
  simdiki_zaman_sayaci = millis();
  if(!digitalRead(butonlar[durdur])){
    delay(150);
    while(!digitalRead(butonlar[durdur]));
    motor_dur();
    hareket_zaman_sayaci = 0; //motor dursun
    }
    
  if(!digitalRead(butonlar[hiz_artir])){
    delay(250);
    while(!digitalRead(butonlar[hiz_artir]));
    hiz_artirma();
    }
    
  if(!digitalRead(butonlar[hiz_azalt])){
    delay(250);
    while(!digitalRead(butonlar[hiz_azalt]));
    hiz_azaltma();
    }
    
  if(!digitalRead(butonlar[baslat])){
    delay(250);
    while(!digitalRead(butonlar[baslat]));
    durum_indexi++;
    hareket_gecikmesi = durum_sureleri[durum_indexi%5];
    hareket_zaman_sayaci = simdiki_zaman_sayaci + (hareket_gecikmesi *60*60);    //dk'yı ms'ye çevirdi
    led_yakma(durum_indexi%5);
  }
 
    if(simdiki_zaman_sayaci >= hareket_zaman_sayaci){
      motor_dur();
      led_yakma(4); //ledler sönsün
      durum_indexi = duruyor;
      hareket_gecikmesi = durum_sureleri[durum_indexi];
      hareket_zaman_sayaci = 0;
    }
    else{
      if(((hareket_zaman_sayaci-simdiki_zaman_sayaci)%(calisma_suresi+durma_suresi))< calisma_suresi){
        motor_baslat();
        }
      else {
        motor_dur();
        }
    }
}


void motor_dur(){

digitalWrite(motorlar[MotorR], LOW);
    digitalWrite(motorlar[MotorL], LOW);
  analogWrite(motorlar[MotorE], 0);
}
void motor_baslat(){
  digitalWrite(motorlar[MotorR], HIGH);
    digitalWrite(motorlar[MotorL], LOW);
  analogWrite(motorlar[MotorE], hiz);

}
void hiz_artirma(){
  hiz = hiz+25;
  delay(100);
 
  if(hiz>=150)
  {
    hiz=150;
  }
  Serial.println(hiz);

}
void hiz_azaltma(){
  hiz=hiz-25;
  delay(100);
  if(hiz<=50)
  hiz=50;
  Serial.println(hiz);

}
void led_yakma(uint8_t ln){
  for (size_t i = 0; i < toplam_led; i++)
  {
    digitalWrite(ledler[i],LOW);
  }
  if(ln<toplam_led)
    digitalWrite(ledler[ln],HIGH);
 
}
 
D5 ve D6 pini ile denedim bişey değişmedi. Attığınız linki denedim de çok anlamıyorum yapamadım. Kodda hata veriyor ekleyince oradaki TCCR1B = TCCR1B ve B11111000 | B00000100; bu kodu d10 için kullandım hata verdi.
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,879
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst