Merhaba
```
#include <LiquidCrystal.h>
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int pinSesArti = 6;
const int pinSesEksi = 7;
const int pinMetalAyrim = 8; // Değerli / Değersiz seçimi
int sesSeviyesi = 5;
bool sadeceDegerli = false;
void setup() {
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PULSE QRP R&G");
lcd.setCursor(0, 1);
lcd.print("ALAN TARAMA");
delay(2000);
pinMode(pinSesArti, INPUT_PULLUP);
pinMode(pinSesEksi, INPUT_PULLUP);
pinMode(pinMetalAyrim, INPUT_PULLUP);
ekranGuncelle();
}
void loop() {
if (digitalRead(pinSesArti) == LOW) {
if (sesSeviyesi < 10) sesSeviyesi++;
ekranGuncelle();
delay(200);
}
if (digitalRead(pinSesEksi) == LOW) {
if (sesSeviyesi > 0) sesSeviyesi--;
ekranGuncelle();
delay(200);
}
if (digitalRead(pinMetalAyrim) == LOW) {
sadeceDegerli = !sadeceDegerli;
ekranGuncelle();
delay(300);
}
}
void ekranGuncelle() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ses: ");
lcd.print(sesSeviyesi);
lcd.setCursor(0, 1);
if (sadeceDegerli) {
lcd.print("Mod: DEGERLI");
} else {
lcd.print("Mod: TUM METALLER");
}
}
```bu çalışmamız geliştirme sürecinde ina121a alıcı devremiz detayları ve şemayı paylaşağım
PulseQRParge Alan Tarama
```
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD Adresi genellikle 0x27 veya 0x3F'dir. Ekran gelmezse 0x3F olarak değiştirin.
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin Tanımlamaları
const int SENSOR_PIN = A0; // İyon sensör anten girişi
const int BUZZER_PIN = 8; // Sesli uyarı buzzerı
const int BUTTON_PIN = 3; // Eşik / Ses ayar butonu
// Degişkenler
int sensorValue = 0;
int threshold = 300; // Varsayılan tetiklenme eşiği
int soundMode = 1; // 0: Mute (Sessiz), 1: Normal, 2: Yüksek Hassasiyet
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 200;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
// LCD Başlatma
lcd.init();
lcd.backlight();
// Açılış Mesajı
lcd.setCursor(0, 0);
lcd.print(" PulseQRParge ");
lcd.setCursor(0, 1);
lcd.print(" Ion Scanner ");
// Açılış Sesi
tone(BUZZER_PIN, 1000, 150);
delay(200);
tone(BUZZER_PIN, 1500, 200);
delay(1800); // Açılış yazısının ekranda kalma süresi
lcd.clear();
}
void loop() {
// Sensör Okuma ve Filtreleme (Kararlı okuma için ortalama alma)
long total = 0;
for(int i = 0; i < 10; i++) {
total += analogRead(SENSOR_PIN);
delay(2);
}
sensorValue = total / 10;
// Buton Kontrolü (Ses ve Eşik Ayarı)
if (digitalRead(BUTTON_PIN) == LOW) {
if ((millis() - lastDebounceTime) > debounceDelay) {
soundMode = (soundMode + 1) % 3; // 0, 1, 2 arasında döner
switch(soundMode) {
case 0: threshold = 800; break; // Sessiz / Çok Düşük Hassasiyet
case 1: threshold = 300; break; // Normal
case 2: threshold = 100; break; // Yüksek Hassasiyet
}
// Kısa bip bildirimi
tone(BUZZER_PIN, 2000, 50);
lastDebounceTime = millis();
}
}
// Ekran Güncelleme
lcd.setCursor(0, 0);
lcd.print("ION:");
lcd.print(sensorValue);
lcd.print(" "); // Kalıntı karakterleri temizleme
lcd.setCursor(10, 0);
if (soundMode == 0) lcd.print("MOD:MUTE");
else if (soundMode == 1) lcd.print("MOD:NORM");
else if (soundMode == 2) lcd.print("MOD:HIGH");
// Görsel Sinyal Barları (Sinyal Şiddeti Göstergesi)
lcd.setCursor(0, 1);
int barCount = map(sensorValue, 0, 1023, 0, 16);
for (int i = 0; i < 16; i++) {
if (i < barCount) lcd.print((char)255); // Dolu blok karakteri
else lcd.print(" ");
}
// Sesli Uyarı Mantığı (Eşik değer geçildiğinde)
if (soundMode != 0 && sensorValue > threshold) {
// Sinyal şiddetine göre değişen tonda ses (Pitch modulation)
int pitch = map(sensorValue, threshold, 1023, 400, 2500);
tone(BUZZER_PIN, pitch, 40);
} else {
noTone(BUZZER_PIN);
}
delay(50);
}
```
Merhaba.
Yazılım arduino ile çalışıyor analog çatı
İna121a ve opa27 pullap dirençlerden oluşuyor
Şemayı çizip yükleyeceğim