int i = 1; // Gönderilecek veri
void setup() {
Serial.begin(9600); // UART iletişimi başlat
}
void loop() {
// Veriyi belirli bir formatta gönder (örneğin: [adres, veri])
Serial.print("<01,"); // Adres (örneğin: "01")
Serial.print(i); // Gönderilecek veri
Serial.println(">"); // Mesajı bitirme
i++; // Veriyi artır
delay(1000); // 1 saniye bekle
} arduino kısmında böyle bir kod yazdım seri porttan airhmı ya gidiyor aırhmı da ise 2 farklı kod yazdım birini chate yazdırdım birini kullanıcı klavuzundan bakarak ben yazdım ikisindede olmadı alt alta atıyorıum airhmı da ki kodumuda #include "stk.h"
#include "stdio.h"
char a[50];
char uartData[3000];
int i;
uartDataGet(uartData ,&i );
LabelSet("ELabel1" ,"Text" ,a); bu kodu yazdım lakin burda sanırsam adresleme olmadığı için çalışmadı chate yazdırdım o biraz daha kompleks yazdı o kodda şu şekilde #include "stk.h"
#include "stdio.h"
#include "string.h"
char uartData[3000]; // UART'tan gelen veri
int uartSize; // Veri uzunluğu
void main() {
while (1) {
// UART üzerinden veri al
uartDataGet(uartData, &uartSize);
if (uartSize > 0) { // Veri alındıysa
uartData[uartSize] = '\0'; // String terminator ekle
// Mesaj başlangıcını ve bitişini kontrol et
if (uartData[0] == '<' && uartData[uartSize - 2] == '>') {
char adres[3]; // Adres kısmı
char veri[50]; // Veri kısmı
// Adresi ve veriyi ayır
sscanf(uartData, "<%2[^,],%s>", adres, veri);
// Doğru adresse mi bak (örneğin: "01")
if (strcmp(adres, "01") == 0) {
// Alınan veriyi işle (örneğin, Label'e yazdır)
LabelSet("ELabel1", "Text", veri);
}
}
}
}
}
Uart kodunuz bu şekilde olmalı timer kısmında . Airhmi void main gibi fonksıyon tanımlayamazsınız. Tanımlıyorsanızda altta bunu çağırmanız lazım yoksa o kod hıcbır sekılde calısmaz. While diye de bir şey olmaz. Timer zamanı gelınce ısını halleder. Bu şekilde yaparsanız kod çalışır . Dediğim uygulamayı yuklersenız daha detaylı gorursunuz.
#include "stk.h"
#include "stdio.h"
#include "string.h"
char uartData[3000]; // UART'tan gelen veri
int uartSize; // Veri uzunluğu
// UART üzerinden veri al
uartDataGet(uartData, &uartSize);
if (uartSize > 0) { // Veri alındıysa
uartData[uartSize] = '\0'; // String terminator ekle
// Mesaj başlangıcını ve bitişini kontrol et
if (uartData[0] == '<' && uartData[uartSize - 2] == '>') {
char adres[3]; // Adres kısmı
char veri[50]; // Veri kısmı
// Adresi ve veriyi ayır
sscanf(uartData, "<%2[^,],%s>", adres, veri);
// Doğru adresse mi bak (örneğin: "01")
if (strcmp(adres, "01") == 0) {
// Alınan veriyi işle (örneğin, Label'e yazdır)
LabelSet("ELabel1", "Text", veri);
}
}
}
Merhaba dediğim tasarımı yukledınız mı ? Onda ekranda herhangı bır sey yazmıyor mu ? tam anlayamıyorum ?
Whatsapp uzerınden yazarsanız arayım sızı.
Yadığınız kodda sorun olabılır dedıgım gıbı örnek uygulmayı ekranı yukleyın aynı verıyı gonderın orda alabiliyor musunuz kontrol edın. Yine olmazsa Whatsapp hattından yazın Anydesk üzerinden bakalım.
Merhaba ; Örnek projeler kısmında SERIAL PORT (UART)
UYGULAMA sını yukleyerek deneyebilir misiniz ? Ekranda gönderdiğiniz veriyi görebiliyor musunuz ?