Arduino ide'de sayfalarla çalışma.

K

.kagan

Misafir
Yazdığım kodlar 1200-1500 satır arasında ve farklı ana bölümlerden oluşuyor. Düzeltme ve kontrollerde kod bölümlerini bulmakta zorlanıyorum. Lua sistemindeki gibi farklı bölümleri farklı sayfalara kaydederek çalışmasını istediğim yerlerde çağırabilirmiyim?

Teşekkürler.
 
her bölümü ayrı bir ino dosyasının içine koyabilirsin. Arduino IDE onları derleme sırasında birleştirip tek kaynak kodu olarak derliyor.
 
Hangi fonksiyonun hangi ino'da olduğu önemli değil. Orada yaşayabileceğin tek sorun "forward declaration" dan kaynaklanan warning'ler. Bunu engellemek için de bir header'a tüm fonksiyon prototiplerini koyarsın, bu header'i de bütün ino'lar include eder.
 
Yani harici sayfalara fonksiyon yazıp ana dosyada nerede çağırırsak orada işini görüyor. Peki normal kodlarda nasıl oluyor?
Mesela ikinci bir sayfaya lm35 kodları yazdık ama fonksiyon olarak değil, normal kodlama ile yazdık. Bu kod bloğunun void loop içinde atıyorum display kodlarından sonra çalışmasını istiyoruz. Bunu nasıl yaparız?

Ben php de kendimce web tasarımı yaparken header ve footer ları ayrı dosya olarak kodlayıp sonrada include(header.php); şeklinde istediğim yerde çağırıyodum.

Birde mesela 3d yazıcıdaki marlin derlemesini arduino ide ile açınca sekme sekme sayfalar çıkıyor. Bende bu sekmeler nasıl oluşturuluyor diye merak etmiştim ama araştırmaya fırsatım olmadı.
 
Bu video serisi işinizi görecektir.

İzledim ve uygulamaya çalıştım fakat her modülün kendi setup dosyası var olduğundan derleme hatası veriyor.
Arduino ide için bu modüler çalışmayı kullanmaya çalışıyorum. Fakat her modülün kendi setup dosyası olacağından derleme esnasında setup zaten var hatası (error: redefinition of 'void setup()') veriyor. Ne önerirsiniz. Örneğin;

Kod:
int sistem_led_pin = 2;  //sistem_led_pin NUMARASINI GİRİN.
int fan_pin = 15;        //fan_pin NUMARASINI GİRİN.

extern void setup() {
  pinMode(sistem_led_pin, OUTPUT);
  digitalWrite(sistem_led_pin, LOW);
  pinMode(fan_pin, OUTPUT);
  digitalWrite(fan_pin, HIGH);
}

void flasher() {
  digitalWrite(sistem_led_pin, HIGH);
  delay(100); }
 
ino ların sadece birinde setup ve loop olsun. Diğer inolara da fonksiyonları taksim edeceksin. Örnek:

gsm.ino gsm.h (GSM destek fonksiyonları)
sensor.ino sensor.h (Sensör okuma fonksiyonları)
filter.ino filter.h (Filtreleme fonksiyonları)

Aşağıda da afaki fonksiyon çağrıları için örnekler var

C++:
#include "gsm.h"
#include "sensor.h"
#include "filter.h"

void setup()
{
    gsm_init();
    sensor_init();
    filter_init();
}

void loop()
{
    /* ... */
    gsm_run();
    sensor_run();
    filter_run();
    /* ... */
}
 
Diğer inolara da fonksiyonları taksim edeceksin. Örnek:
Burada gsm.ino dosyasına gsm ile ilgili kodları yazacağımı anlıyorum. Eğer ana ino dostasına setup ve tanımlamaları yapacak isem gsm.h dosyasına ne yazacağım.

Aşağıdaki dosya ana dosya olsun. Mesela klimaKontrol.ino

void setup()
{
gsm_init();
sensor_init();
filter_init();
}

void loop()
{
/* ... */
gsm_run();
sensor_run();
filter_run();
/* ... */
}

Bununla aynı klasörde gsm.h olsun ve içeriği;

#include <>arduino.h

int resetPin = 5;
int stopPin = 4;
pinMode(reset_pin, INPUT);

pinMode(stopPin, OUTPUT);
digitalWrite(fan_pin, LOW);

Bu durumda da gsm.ino aşağıdaki gibi
void gsm_run() {
//.........if...else
}

Mantık bumu acaba?
Çünkü her özellik alt dosyasının kendi tanımlamalı içinde olmalı. Mesela gsm.ino dosyasının pin mod ayarları içinde olmaz ve bu ayarlar ana klimaKontrol.ino dosyasında olursa yine aynı karmaşa oluşacak. Sanırım C de .h dosyasında tanımlamalar ve .cpp dosyasında komutlar oluyor. Ama arduino ide ??
 
Last edited by a moderator:
Header dosyada sadece tip tanımlamaları ve fonksiyon prototipleri olacak. ino dosyalarda da fonksiyonların kendisi olacak.
 
Bunu sorma sebebim şöyle bir karmaşanın içinde olmamdır. Ana dosyanın setupundan önce aşağıdaki kadar global tanımlama işi var. Ve bunlar farklı fonksiyonlara ait.
//(ESP32)
#include <WiFi.h> //fb //db
#include "time.h" //ZAMAN KUTUPHANESI
#include <ArduinoJson.h>
#include <MD5.h> //ISLEMCI SERI NUMARASINI SIFRELEMEK ICIN GEREKLİ KUTUPHANE
#include "DHT.h" //DHT SENSOR KÜTÜPHANESİ EKLENİYOR. //fb
#include "LoRa_E32.h" //LoRa KÜTÜPHANESİ EKLENİYOR. //fb
#include <WiFiManager.h> //AUTOCONNECT İÇİN KÜTÜPHANE EKLENİYOR. https://github.com/tzapu/WiFiManager //fb
#include <Arduino.h> //db
#include <WiFiMulti.h> //fb //db
#include <HTTPClient.h> //fb //db
#define USE_SERIAL Serial //SERIAL MONITOR BAGLANTISI ICIN
#include "flasher.h"
//const char* googleApiKey = "AIzaSyCrfdKFOYLMbQOIY5nrrxYdFeR3Q7xc8rWFAfA"; //geolocasyon alabilmek için google cloud dan alınan apikey ekleniyor
//WifiLocation location(googleApiKey);

String VERSIYON = "5.9-sqldb"; //VERSIYON NUMARASI BURAYA YAZILACAK
String SISTEM_BILGI = "rrrrrrrrrrrrrrrrrrrrrrrr";
String token = "?#n5bH5&^2HE2VXq"; //16 haneli kod üretiliyor. //https://passwordsgenerator.net/
String cihazID; //CIHAZ NO GLOBAL DEĞİŞKEN OLARAK HAZIRLANIYOR
String KONUM; //KONUM GLOBAL DEĞİŞKEN OLARAK HAZIRLANIYOR
String anaLinkotomasyon = "http://rrrrrrrrrr/esp/servis/?sayfa=otomasyon";
String anaLinksensor = "http://rrrrrrrrrr/esp/servis/?sayfa=gonder";
String anaLinkrole = "http://rrrrrrrrrr/esp/servis/?sayfa=kontrol";
String anaLinkLora = "http://rrrrrrrrrr/esp/servis/?sayfa=kablosuz";
String linkSensor, linkData, sensorData, roleData, otomasyonData;
String str_time, vana, sensorId, zamanAcik, baslamaZaman, bitisZaman, nemSeviye, nemMin, nemMax, depoSeviye, depoMin, depoMax, basincliSu, sebeke, darbe;
int int_time, tm_wday; //anlık zaman
int data_1_vana, data_1_sensorID, data_1_zamanAcik, data_1_baslamaZaman, data_1_bitisZaman, data_1_nemSeviye, data_1_nemMin, data_1_nemMax, data_1_basincliSu, data_1_sebeke, data_1_darbe, data_1_depoSeviye, data_1_depoMin, data_1_depoMax, data_1_roleBaglantiDurum, data_1_bagliRole, data_1_timer, data_1_timer_sure, data_1_tetik, data_1_tetikZaman, data_1_otomasyonDurum;
int data_2_vana, data_2_sensorID, data_2_zamanAcik, data_2_baslamaZaman, data_2_bitisZaman, data_2_nemSeviye, data_2_nemMin, data_2_nemMax, data_2_basincliSu, data_2_sebeke, data_2_darbe, data_2_depoSeviye, data_2_depoMin, data_2_depoMax, data_2_roleBaglantiDurum, data_2_bagliRole, data_2_timer, data_2_timer_sure, data_2_tetik, data_2_tetikZaman, data_2_otomasyonDurum;
int data_3_vana, data_3_sensorID, data_3_zamanAcik, data_3_baslamaZaman, data_3_bitisZaman, data_3_nemSeviye, data_3_nemMin, data_3_nemMax, data_3_basincliSu, data_3_sebeke, data_3_darbe, data_3_depoSeviye, data_3_depoMin, data_3_depoMax, data_3_roleBaglantiDurum, data_3_bagliRole, data_3_timer, data_3_timer_sure, data_3_tetik, data_3_tetikZaman, data_3_otomasyonDurum;
int data_4_vana, data_4_sensorID, data_4_zamanAcik, data_4_baslamaZaman, data_4_bitisZaman, data_4_nemSeviye, data_4_nemMin, data_4_nemMax, data_4_basincliSu, data_4_sebeke, data_4_darbe, data_4_depoSeviye, data_4_depoMin, data_4_depoMax, data_4_roleBaglantiDurum, data_4_bagliRole, data_4_timer, data_4_timer_sure, data_4_tetik, data_4_tetikZaman, data_4_otomasyonDurum;
int data_5_vana, data_5_sensorID, data_5_zamanAcik, data_5_baslamaZaman, data_5_bitisZaman, data_5_nemSeviye, data_5_nemMin, data_5_nemMax, data_5_basincliSu, data_5_sebeke, data_5_darbe, data_5_depoSeviye, data_5_depoMin, data_5_depoMax, data_5_roleBaglantiDurum, data_5_bagliRole, data_5_timer, data_5_timer_sure, data_5_tetik, data_5_tetikZaman, data_5_otomasyonDurum;
int data_6_vana, data_6_sensorID, data_6_zamanAcik, data_6_baslamaZaman, data_6_bitisZaman, data_6_nemSeviye, data_6_nemMin, data_6_nemMax, data_6_basincliSu, data_6_sebeke, data_6_darbe, data_6_depoSeviye, data_6_depoMin, data_6_depoMax, data_6_roleBaglantiDurum, data_6_bagliRole, data_6_timer, data_6_timer_sure, data_6_tetik, data_6_tetikZaman, data_6_otomasyonDurum;
int data_7_vana, data_7_sensorID, data_7_zamanAcik, data_7_baslamaZaman, data_7_bitisZaman, data_7_nemSeviye, data_7_nemMin, data_7_nemMax, data_7_basincliSu, data_7_sebeke, data_7_darbe, data_7_depoSeviye, data_7_depoMin, data_7_depoMax, data_7_roleBaglantiDurum, data_7_bagliRole, data_7_timer, data_7_timer_sure, data_7_tetik, data_7_tetikZaman, data_7_otomasyonDurum;
int data_8_vana, data_8_sensorID, data_8_zamanAcik, data_8_baslamaZaman, data_8_bitisZaman, data_8_nemSeviye, data_8_nemMin, data_8_nemMax, data_8_basincliSu, data_8_sebeke, data_8_darbe, data_8_depoSeviye, data_8_depoMin, data_8_depoMax, data_8_roleBaglantiDurum, data_8_bagliRole, data_8_timer, data_8_timer_sure, data_8_tetik, data_8_tetikZaman, data_8_otomasyonDurum;
int root_0_vana_bir_durum, root_0_vana_iki_durum, root_0_vana_uc_durum, root_0_vana_dort_durum, root_0_makine_bir_acikmi, root_0_makine_iki_acikmi, root_0_makine_uc_acikmi, root_0_makine_dort_acikmi;
int data_basincliSu_durum, data_sebeke_durum, data_darbe_durum;
bool data1BasincSarti, data1ElektrikSarti, data1DarbeSarti, data1DepoSarti, data1NemSarti, data1ZamanSarti, data2BasincSarti, data2ElektrikSarti, data2DarbeSarti, data2DepoSarti, data2NemSarti, data2ZamanSarti, data3BasincSarti, data3ElektrikSarti, data3DarbeSarti, data3DepoSarti, data3NemSarti, data3ZamanSarti, data4BasincSarti, data4ElektrikSarti, data4DarbeSarti, data4DepoSarti, data4NemSarti, data4ZamanSarti; // 1-2-3-4 NUMARADA NEM SARTI DEGISKENI VAR
bool data5BasincSarti, data5ElektrikSarti, data5DarbeSarti, data5DepoSarti, data5ZamanSarti, data6BasincSarti, data6ElektrikSarti, data6DarbeSarti, data6DepoSarti, data6ZamanSarti, data7BasincSarti, data7ElektrikSarti, data7DarbeSarti, data7DepoSarti, data7ZamanSarti, data8BasincSarti, data8ElektrikSarti, data8DarbeSarti, data8DepoSarti, data8ZamanSarti; //5-6-7-8 NUMARADA NEM SARTI DEGISKENI YOK
bool data5TimerSarti, data5RoleSarti, data5TetikSarti, data6TimerSarti, data6RoleSarti, data6TetikSarti, data7TimerSarti, data7RoleSarti, data7TetikSarti, data8TimerSarti, data8RoleSarti, data8TetikSarti; // 5-6-7-8 NUMARALI ROLELERIN EK SART DEGISKENLERI
bool data_5_bagliRole1, data_5_bagliRole2, data_5_bagliRole3,data_5_bagliRole4; // role5 BAGLI ROLE DEGISKENLERI
bool data_6_bagliRole1, data_6_bagliRole2, data_6_bagliRole3,data_6_bagliRole4; // role6 BAGLI ROLE DEGISKENLERI
bool data_7_bagliRole1, data_7_bagliRole2, data_7_bagliRole3,data_7_bagliRole4; // role7 BAGLI ROLE DEGISKENLERI
bool data_8_bagliRole1, data_8_bagliRole2, data_8_bagliRole3,data_8_bagliRole4; // role8 BAGLI ROLE DEGISKENLERI
String str_data_1_baslamaZaman, str_data_2_baslamaZaman, str_data_3_baslamaZaman, str_data_4_baslamaZaman, str_data_5_baslamaZaman, str_data_6_baslamaZaman, str_data_7_baslamaZaman, str_data_8_baslamaZaman; // SAAT AYAR DEGISKENLERI
String str_data_1_bitisZaman, str_data_2_bitisZaman, str_data_3_bitisZaman, str_data_4_bitisZaman, str_data_5_bitisZaman, str_data_6_bitisZaman, str_data_7_bitisZaman, str_data_8_bitisZaman; //SAAT HESAP DEĞİŞKENİ
int int_baslamaSaati1, int_baslamaDakika1, int_calismaSuresiSaat1, int_calismaSuresiDakika1, int_baslamaSaati2, int_baslamaDakika2, int_calismaSuresiSaat2, int_calismaSuresiDakika2, int_baslamaSaati3, int_baslamaDakika3, int_calismaSuresiSaat3, int_calismaSuresiDakika3, int_baslamaSaati4, int_baslamaDakika4, int_calismaSuresiSaat4, int_calismaSuresiDakika4; // STRINGDEN INTEGER'E BASLAMA VE BITIS SAATI VERILERI
int int_baslamaSaati5, int_baslamaDakika5, int_calismaSuresiSaat5, int_calismaSuresiDakika5, int_baslamaSaati6, int_baslamaDakika6, int_calismaSuresiSaat6, int_calismaSuresiDakika6, int_baslamaSaati7, int_baslamaDakika7, int_calismaSuresiSaat7, int_calismaSuresiDakika7, int_baslamaSaati8, int_baslamaDakika8, int_calismaSuresiSaat8, int_calismaSuresiDakika8; // STRINGDEN INTEGER'E BASLAMA VE BITIS SAATI VERILERI
int durZamani1Saat, sonZaman1Saat, durZamani1Dakika, sonZaman1Dakika, durZamani2Saat, sonZaman2Saat, durZamani2Dakika, sonZaman2Dakika, durZamani3Saat, sonZaman3Saat, durZamani3Dakika, sonZaman3Dakika, durZamani4Saat, sonZaman4Saat, durZamani4Dakika, sonZaman4Dakika;
int durZamani5Saat, sonZaman5Saat, durZamani5Dakika, sonZaman5Dakika, durZamani6Saat, sonZaman6Saat, durZamani6Dakika, sonZaman6Dakika, durZamani7Saat, sonZaman7Saat, durZamani7Dakika, sonZaman7Dakika, durZamani8Saat, sonZaman8Saat, durZamani8Dakika, sonZaman8Dakika;
int ilkZaman1SaatVeDakika, int_anlikSaat, int_anlikDakika;
int sonZaman1SaatVeDakika;
int calismaZaman1SaatVeDakika;
int int_haftaninGunu, sonZaman1Gun;
int sistem1aktif;
int saat5=0, dakika5=0, saniye5=0, saat6=0, dakika6=0, saniye6=0, saat7=0, dakika7=0, saniye7=0, saat8=0, dakika8=0, saniye8=0;
unsigned long timer5=0, timer6=0,timer7=0, timer8=0, ilkZaman=0, simdikiZaman=0; //////////++
const unsigned long birSaniye=1000;
String data_toprak_nem;
String ortamIsi, ortamNem, ortamDarbe, ortamSuBasinc, ortamElektrik, ortamSuSeviye, ortamBatarya; //STRING E CEVRILMIS DEGERLERIN ETIKETLERI
String Str_toprakSensorNo, Str_toprakNem, Str_bataryaSeviyem, Str_toprakSicaklik;
int toprakSensorNo, toprakNem, bataryaSeviyem;
float toprakSicaklik;
char chr_time;
int su_seviye; // ESP den göndermek için su_seviye değerini integer olarak ayarla
bool su_basinci_varmi, elektrik_varmi, darbe_sensoru;
////////SAAT-TARIH ALIM AYARLARI/////////
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 10800; //TURKIYE GMT +3 (10800 sn fark var)
const int daylightOffset_sec = 0;
////////LOOP ICINDEKI GECIKME AYARLARI////////////
unsigned long zamanBir = 0; //sendDataPrevMillis
unsigned long zamanIki = 0; //sendDataPrevMillis
unsigned long zamanUc = 0; //sendDataPrevMillis
unsigned long zamanDort1 = 0; //NEM1 SENSORU KONTROL SURE DEGISKENI
unsigned long zamanDort2 = 0; //NEM2 SENSORU KONTROL SURE DEGISKENI
unsigned long zamanDort3 = 0; //NEM3 SENSORU KONTROL SURE DEGISKENI
unsigned long zamanDort4 = 0; //NEM4 SENSORU KONTROL SURE DEGISKENI
unsigned long count; //SAYAC DEGISKENI
bool on_line = false; //ONLINE-OFLINE DURUMU
uint32_t chipid; //ESP32 ID OGRENMEK ICIN GLOBAL DEGISKEN TANIMLANIYOR

///////////DHT AYARLARI//////////////////////
#define DHTPIN 21 // DHT sensor PİN NUMARASINI GİRİN. sadece giriş pini
#define DHTTYPE DHT22 // DHT SENSÖR TİPİNİ GİRİN.
DHT dht(DHTPIN, DHTTYPE);
// GSM VE LORA TX-RX PİNLERİ
#define RX 27 // LoRa rx pin bağlantı numarasını BELİRLEYİN!
#define TX 14 // LoRa tx pin bağlantı numarasını BELİRLEYİN!
HardwareSerial smartSerial(1); //HardwareSerial(1), smartSerial adıyla yeniden ayarlanıyor.
LoRa_E32 e32(TX, RX, &smartSerial, UART_BPS_RATE_9600);
//GSM TX 12
//GSM RX 13
//GİRİŞ PİNLER (INPUT) - 6 PİN
int su_seviye_sensor_pin = 34; //su_seviye_sensor_pin NUMARASINI GİRİN. sadece giriş
int su_basinc_sensor_pin = 19; //su_seviye_sensor_pin NUMARASINI GİRİN.
int batarya_seviye_pin = 22; //batarya_seviye_pin NUMARASINI GİRİN.
int darbe_sensoru_pin = 39; //darbe_sensoru_pin NUMARASINI GİRİN. sadece giriş
int elektrik_varmi_pin = 35; //elektrik_varmi_pin NUMARASINI GİRİN.
int sistem_reset_pin = 23; //sistem_reset_pin NUMARASINI GİRİN.
//ÇIKIŞ PİNLER (OUTPUT) - 10 PİN
int makine_bir_acikmi_pin = 26; //makine_bir_acikmi_pin NUMARASINI GİRİN.
int makine_iki_acikmi_pin = 25; //makine_iki_acikmi_pin NUMARASINI GİRİN.
int makine_uc_acikmi_pin = 33; //makine_uc_acikmi_pin NUMARASINI GİRİN.
int makine_dort_acikmi_pin = 32; //makine_dort_acikmi_pin NUMARASINI GİRİN.
String makina_bir_durum, makina_iki_durum, makina_uc_durum, makina_dort_durum;
bool makina1, makina2, makina3, makina4;
int vana_dort_durum_pin = 4; //vana_dort_durum_pin NUMARASINI GİRİN.
int vana_uc_durum_pin = 16; //vana_uc_durum_pin NUMARASINI GİRİN.
int vana_iki_durum_pin = 17; //vana_iki_durum_pin NUMARASINI GİRİN.
int vana_bir_durum_pin = 18; //vana_bir_durum_pin NUMARASINI GİRİN.
String vana_bir_durum, vana_iki_durum, vana_uc_durum, vana_dort_durum; //vana_dort_durum_pin NUMARASINI GİRİN.
bool vana1, vana2, vana3, vana4, vana5, vana6, vana7, vana8; //vana durum pinlerini kontrol eder
//int sistem_led_pin = 2; //sistem_led_pin NUMARASINI GİRİN.
//int fan_pin = 15; //fan_pin NUMARASINI GİRİN.

String toprak_nem_bir; //toprak_nem_bir degerler
String toprak_nem_iki; //toprak_nem_iki degerler
String toprak_nem_uc; //toprak_nem_uc degerler
String toprak_nem_dort; //toprak_nem_dort degerler
////////////////LoRa GELEN SİNYAL YAPISI BELİRTİLİYOR//////////////////
struct Sinyal {
char sifre[17] = "rrrrr"; // alıcılar tırnaklar dahil, 17 karakterlik "arrrrr" karakterlerini almazsa sinyali işleme almaz.
byte idNo[6]; //6 BYTE VERİ
byte role; //1 yada 0 gelecek
byte toprakNem[4]; //4019 gelse 4 byte eder. Byte, byte gidecek. Loop içinde float yada int olarak ayarlanabilir.
byte bataryaSeviye[4]; //9999 gelse 4 byte eder. Byte, byte gidecek. Loop içinde float yada int olarak ayarlanabilir.
byte toprakSicaklik[4];
} data;
//const char* ssid = "rrrrr";
//const char* password = "rrrrr.";
WiFiManager wm; //WiFi MANAGER NESNESİ (wm) TANIMLANIYOR. //db //fb
WiFiMulti wifiMulti;
/*
const char* ca = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n" \
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n" \
"DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n" \
"SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n" \
"GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" \
"AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n" \
"q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n" \
"SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n" \
"Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n" \
"a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n" \
"/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n" \
"AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n" \
"CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n" \
"bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n" \
"c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n" \
"VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n" \
"ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n" \
"MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n" \
"Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n" \
"AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n" \
"uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n" \
"wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n" \
"X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n" \
"PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n" \
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n" \
"-----END CERTIFICATE-----\n";
*/
 
Bunu sorma sebebim şöyle bir karmaşanın içinde olmamdır

Bu header file gereksiz yere son derece karmaşık olmuş. 10 tane sensör varsa, 10 ayrı değişken ismi yerine array kullanman lazım, yoksa program hem çok karışır hem de çok sayıda bug olur.
 
Örneğin aşağıdaki
int data_1_vana, data_1_sensorID, data_1_zamanAcik, data_1_baslamaZaman, data_1_bitisZaman, data_1_nemSeviye, data_1_nemMin, data_1_nemMax, data_1_basincliSu, data_1_sebeke, data_1_darbe, data_1_depoSeviye, data_1_depoMin, data_1_depoMax, data_1_roleBaglantiDurum, data_1_bagliRole, data_1_timer, data_1_timer_sure, data_1_tetik, data_1_tetikZaman, data_1_otomasyonDurum;

int data_2_vana, data_2_sensorID, data_2_zamanAcik, data_2_baslamaZaman, data_2_bitisZaman, data_2_nemSeviye, data_2_nemMin, data_2_nemMax, data_2_basincliSu, data_2_sebeke, data_2_darbe, data_2_depoSeviye, data_2_depoMin, data_2_depoMax, data_2_roleBaglantiDurum, data_2_bagliRole, data_2_timer, data_2_timer_sure, data_2_tetik, data_2_tetikZaman, data_2_otomasyonDurum;

int data_3_vana, data_3_sensorID, data_3_zamanAcik, data_3_baslamaZaman, data_3_bitisZaman, data_3_nemSeviye, data_3_nemMin, data_3_nemMax, data_3_basincliSu, data_3_sebeke, data_3_darbe, data_3_depoSeviye, data_3_depoMin, data_3_depoMax, data_3_roleBaglantiDurum, data_3_bagliRole, data_3_timer, data_3_timer_sure, data_3_tetik, data_3_tetikZaman, data_3_otomasyonDurum;

int data_4_vana, data_4_sensorID, data_4_zamanAcik, data_4_baslamaZaman, data_4_bitisZaman, data_4_nemSeviye, data_4_nemMin, data_4_nemMax, data_4_basincliSu, data_4_sebeke, data_4_darbe, data_4_depoSeviye, data_4_depoMin, data_4_depoMax, data_4_roleBaglantiDurum, data_4_bagliRole, data_4_timer, data_4_timer_sure, data_4_tetik, data_4_tetikZaman, data_4_otomasyonDurum;

1 tanesine örnek vermek gerekirse Array olarak nasıl yazabilirim?
 
Şöyle bir örnek koyayım oradan ilerleyebilirsin:

C++:
typedef struct
{
    int vana_id;
    int sensor_id;
    int baslama;
    int bitis;

} VANA_BILGISI;

static VANA_BILGISI vanalar[] =
{
    {0, 0, 0, 0},
    {1, 1, 0, 0},
    {2, 2, 0, 0},
};

void loop()
{
    for (unsigned int i = 0;
         i < (sizeof(vanalar) / sizeof(vanalar[0]));
         ++i)
    {
        VANA_BILGISI* vana = &vanalar[i];

        vana_oku(vana);
        vana_bilmemne_yap(vana);
    }
}

Eğer bu program sana hiç mantık yapmıyorsa veya anlamıyorsan, C++ ile ilgili çok temel eksiklerin var demektir. İyi bir kitap veya kurs bulup temel bilgileri edinmen lazım.
 

Forum istatistikleri

Konular
6,952
Mesajlar
118,759
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top