merhabalar AirHMI Control Board karta 0-24 arası dc voltaj vererek progressBar ilerlemesi ile ilgili projem var fakat yüzde ilerleme yapamıyorum kontrol edermisiniz nerede hata yapıyorum
#include "<AirHMI.h>" // AirHMI kütüphanesini dahil
int analogValue = 0; // Analog değeri saklamak için değişken
float voltageValue = 0.0; // Voltaj değerini saklamak için değişken
void setup() {
// ProgressBar 1 ayarları
ProgressBarSet("ProgressBar1", "Visible", "true");
ProgressBarSet("ProgressBar1", "Left", "69");
ProgressBarSet("ProgressBar1", "Top", "72");
ProgressBarSet("ProgressBar1", "Color", "Black");
ProgressBarSet("ProgressBar1", "Height", "30");
ProgressBarSet("ProgressBar1", "Width", "180");
ProgressBarSet("ProgressBar1", "Range", "100"); // Maksimum değer 100 olmalı
ProgressBarSet("ProgressBar1", "Value", "0"); // Başlangıç değeri 0 olmalı
// Timer 1 ayarlama
TimerSet(1 ,500); // 500 ms aralıkla timer ayarla
}
void loop() {
// loop fonksiyonu boş bırakılabilir çünkü veriler Timer 1 ile güncellenecek
}
// Timer 1 fonksiyonu
void onTimer1() {
// Analog 1'den veriyi oku (0-1023 arası)
analogValue = analogRead(1);
// Voltajı 0-24 aralığına çevir (0-1023 -> 0-24)
voltageValue = ("analogValue" * 24.0) / 1023.0; // 0-24 volt aralığına çevir
// Voltajı 0-100 aralığına çevir
float progressBarValue = ("voltageValue" / 24.0) * 100.0; // 0-24 volt değerini 0-100 birimine çevir
// ProgressBar 1'i güncelle
ProgressBarSet(ProgressBar1, value, string ); // Değer güncelleniyor
}
Merhaba Zeynel Bey,
Size şu şekilde bir örnek hazırladım.
Arduino projesinde bir ProgressBar (ilerleme çubuğu) elemanının değerini, her 100 mili saniye 1 birim artırarak 100’e kadar güncellemeyi amaçlıyor.
#include <Airhmi.h> AirProgressBar p1 = AirProgressBar("ProgressBar1"); AirTouch *air_listen_list[] = { NULL }; void setup() { Serial.begin(115200); airInit(); } void loop() { static int value = 0; // Başlangıç değeri 0 static unsigned long previousMillis = 0; // Zamanlayıcı için başlangıç unsigned long currentMillis = millis(); // Eğer 1000 ms geçtiyse (1 saniye) if (currentMillis - previousMillis >= 100) { previousMillis = currentMillis; // Zamanlayıcıyı güncelle if (value <= 100) { // 100’e kadar artır p1.Set_Value(value); value += 1; // 20 birim artır } else { value = 0; } } airLoop(air_listen_list); }