yldrm byzt
Üye
- Katılım
- 28 Ara 2019
- Mesajlar
- 86
- Puanları
- 1
sayın AG Mehmet,1. loop() fonksiyonunuzdaki mySwitch.available() şartını kaldırın.
2. Pin 2'ye bir sinyal alındığında tetiklenecek bir ISR ekleyin. Bu, Arduinonun uykudan uyanmasını sağlar.
KOD:
void wakeUp() {
// Sadece Arduinoyu uyandırmamız gerektiği için boş bir fonksiyon
}
3. setup() fonksiyonunuzda, Arduinoyu uyku moduna geçirmek için yapılandırmaları yapın ve kesmeyi (interrupt) ekleyin:
KOD:
attachInterrupt(digitalPinToInterrupt(2), wakeUp, RISING);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // Uyku modunu güç kapalıya ayarla
sleep_enable(); // Uyku modunu etkinleştir
4. Switch case'lerinizden sonra, Arduinoyu uyku moduna geçirin:
KOD:
sleep_mode(); // Uyku moduna girin
5. Uyandığında uyku modunu devre dışı bırakın:
loop() fonksiyonunun başına bu satırı ekleyin:
KOD
sleep_disable();
6. Eğer güç tüketimini daha da azaltmak istiyorsanız, kullanılmayan bileşenleri devre dışı bırakabilirsiniz. Örneğin, ADC'yi ve analog karşılaştırıcıyı (Komparatör) devre dışı bırakabilirsiniz:
KOD:
power_adc_disable();
power_all_disable();
Bu kodu setup() fonksiyonunun başına ekleyin.
Bu değişikliklerle, Arduino çoğu zaman uyuyacak ve yalnızca pin 2'de bir kesme alındığında uyanacaktır. Kesme işlemi tamamlandıktan sonra tekrar uyku moduna geçecektir.
Kolay gelsin
mehmet bey, ben diğer iletiye cevap yazarken siz aynı konuyu yazmışsınız çoktan.D2 ve D3 aynı özellikte. İlgili mcunun INT0
ve INT1 pinleri bunlar.
Belki vericinin iki kere aynı kodu yollama
seçeneği/özelliği varsa, ikincide veriyi belki
yakalayabilir.
önerilerinizi bu gece kodlamama eklemlendirmeye çalışacağım
Düzeltilmiş kodunuzun tamamı:
#include <RCSwitch.h>
#include <SimpleSDAudio.h>
int vericikodu;
unsigned long int num;
RCSwitch mySwitch = RCSwitch();
#define CS 4
void wakeUp() {
// Sadece Arduinoyu uyandırmamız gerektiği için boş bir fonksiyon
}
void setup()
{
Serial.begin(9600);
mySwitch.enableReceive(0);
if (!SdPlay.init(SSDA_MODE_HALFRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER)) {
while (1);
}
SdPlay.setSDCSPin(4);
pinMode(2, INPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
digitalWrite(A1, LOW);
digitalWrite(A2, LOW);
digitalWrite(A3, LOW);
attachInterrupt(digitalPinToInterrupt(2), wakeUp, RISING);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
}
void loop()
{
sleep_disable();
mySwitch.disableReceive();
mySwitch.enableReceive(0);
if (mySwitch.available())
{
num = mySwitch.getReceivedValue();
Serial.println("vericikodu;" + String(num));
switch (num)
{
case 12718372: //K1
digitalWrite(A1, HIGH);
SdPlay.setFile("o1.wav");
SdPlay.play();
delay(6000);
digitalWrite(A1, LOW);
break;
case 12325156: //K2
digitalWrite(A2, HIGH);
SdPlay.setFile("o2.wav");
SdPlay.play();
delay(6000);
digitalWrite(A2, LOW);
break;
case 13555684: //K3
digitalWrite(A3, HIGH);
SdPlay.setFile("o3.wav");
SdPlay.play();
delay(6000);
digitalWrite(A3, LOW);
break;
default:
break;
}
mySwitch.resetAvailable();
mySwitch.enableReceive(0);
}
sleep_mode();
}
Bu kod, Arduino'nun büyük bir kısmını uyku modunda geçirecek ve yalnızca pin 2'de bir kesme algılandığında uyanacaktır. Kesme işlemi tamamlandıktan sonra tekrar uyku moduna geçecektir.
Hoparlörü nasıl bağladınız? (şema ile)hoparlörden müzik yerine sadece buton basılı tutuldukça aralıksız bir cızırtı gelmesi
Hoparlörü nasıl bağladınız? (şema ile)
sayın AG Mehmet,Hoparlör mü bağladınız yoksa buzzer mı? Direncini ölçün, omajı düşükse, ekteki videoyu izleyin.
Araya böyle bir devre kullanmak daha doğru, bunu sonra halledebilirsiniz..sayın AG Mehmet,
mini hoparlör bağlı.
buzzer değil.
aynı düzeneğe kesme'siz kodu tekrar yüklediğimde her şey sorunsuz çalışıyor.
hoparlör sd karta yüklediğim müziği çalıyor ve led yanıyor.
yani donanımsal bir hata olsa idi kesme'siz kodda da müzik çalmazdı diye düşünüyorum.
seri port ekranında kesme'siz kodlamada her kumandanın kendine özgü kod nosu kumanda butonuna basılınca yazılıyor.Asıl kodun çalışması önemli.
Öncelikle "seri monitör" pencersinden kodun çalışıp çalışmadığına bakın, hata mesajı varmı?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?