Arduino Uno R4 Minima ve WiFi: R3 Farkları ve İlk Proje
Arduino Uno R4 Minima ve WiFi nedir, R3'ten farkı ne? 32 bit RA4M1, 12 bit DAC, 8 mA pin sınırı, eski kod uyumu ve LED matris ile Wi-Fi'li ilk proje rehberi.
Arduino Uno R4, dünyanın en çok kullanılan geliştirme kartı Uno'nun dördüncü sürümüdür ve Uno ailesinde ilk kez 8 bitlik AVR yerine 32 bitlik bir işlemci kullanır. Kartın iki modeli vardır: sade ve daha ucuz Uno R4 Minima ile Wi-Fi, Bluetooth ve 12x8 LED matrisli Uno R4 WiFi. İkisi de R3 ile aynı boyutta, aynı pin diziliminde ve aynı 5 V gerilimde çalışır; yani shield'lerin ve devrelerinin çoğu olduğu gibi takılır. Buna karşılık program belleği 8 kat, işlemci hızı 3 kat artmış; gerçek analog çıkış (DAC), CAN hattı, dahili saat (RTC) ve USB klavye-fare desteği eklenmiştir.
Bu rehberde R4'ün R3'ten tam olarak hangi noktalarda ayrıldığını, Minima ile WiFi arasında nasıl seçim yapacağını, eski kodların ve kütüphanelerin hangilerinin sorunsuz çalıştığını, hangilerinin derlenmediğini ve neden pin başına 8 mA sınırına dikkat etmen gerektiğini öğreneceksin. Sonunda da R4 WiFi'nin LED matrisini ve Wi-Fi'sini birlikte kullanan, telefondan kontrol edilen ilk projeni kuracağız.

Arduino Uno R4 nedir? Minima ve WiFi modelleri
İki modelin kalbinde de Renesas firmasının RA4M1 (R7FA4M1AB3CFM) mikrodenetleyicisi bulunur: 48 MHz'te çalışan, kayan nokta birimi (FPU) olan bir Arm Cortex-M4 çekirdek. Bu yonga, 32 bitlik kartların çoğunun aksine 5 V ile çalışır; Arduino'nun R4 için RA4M1'i seçmesinin en önemli nedeni de budur. Minima yalnızca bu yongayı taşır. WiFi modelinde ise ek olarak bir ESP32-S3-MINI-1 modülü vardır: hem Wi-Fi ve Bluetooth'u sağlar hem de bilgisayarla USB üzerinden konuşan köprü görevini üstlenir. ESP32-S3 3,3 V ile çalıştığı için iki yonganın arasına bir seviye dönüştürücü yerleştirilmiştir.
| Özellik | Uno R4 Minima | Uno R4 WiFi |
|---|---|---|
| Ana işlemci | RA4M1, 32 bit, 48 MHz | RA4M1, 32 bit, 48 MHz |
| Wi-Fi ve Bluetooth | Yok | ESP32-S3: Wi-Fi 4 (2,4 GHz) ve Bluetooth 5 LE |
| LED matris | Yok | 12x8, 96 kırmızı LED |
| Qwiic konnektörü | Yok | Var (Wire1, yalnızca 3,3 V) |
| USB bağlantısı | RA4M1'in kendi USB'si | ESP32-S3 üzerinden köprü |
| CAN pinleri | D4 (TX), D5 (RX) | D10 (TX), D13 (RX) |
| Hata ayıklama başlığı | SWD konnektörü | ESP32-S3 başlığı (3,3 V) |
| Ek pinler | Yok | OFF (kartı kapatma) ve VRTC (saat pili) |
| 3,3 V pini | RA4M1'in dahili USB regülatöründen, düşük akım | Ayrı 3,3 V regülatör |
Uno R3 ile Uno R4 arasındaki farklar
| Özellik | Uno R3 | Uno R4 (Minima ve WiFi) |
|---|---|---|
| İşlemci | ATmega328P, 8 bit, 16 MHz | RA4M1 Cortex-M4, 32 bit, 48 MHz, FPU |
| Flash (program belleği) | 32 KB | 256 KB |
| SRAM | 2 KB | 32 KB |
| EEPROM | 1 KB | 8 KB (veri flaşı) |
| Çalışma gerilimi | 5 V | 5 V |
| Pin başına akım | 20 mA önerilen, 40 mA mutlak sınır | 8 mA |
| Analog giriş (ADC) | 6 kanal, 10 bit | 6 kanal, 14 bite kadar (varsayılan 10 bit) |
| Analog çıkış (DAC) | Yok | 1 kanal, 12 bit (A0) |
| Op-amp | Yok | Dahili (A1, A2, A3) |
| CAN hattı | Yok | Var (harici alıcı-verici gerekir) |
| Gerçek zaman saati (RTC) | Yok | Dahili |
| USB | USB-B, ATmega16U2 köprü | USB-C, klavye ve fare (HID) desteği |
| VIN giriş gerilimi | 7–12 V önerilen | 6–24 V |
| Seri port | Serial: USB ve D0/D1 ortak | Serial: USB, Serial1: D0/D1 |
Tablodaki en önemli satırlar bellek ve hızdır. R3'teki 2 KB'lık SRAM, birkaç String değişkeni ve bir ekran tamponuyla dolar; OLED ekran, uzun diziler ya da JSON işleyen projelerde kart rastgele donmaya ya da yeniden başlamaya başlar. R4'teki 32 KB bu sorunu neredeyse ortadan kaldırır. FPU sayesinde float işlemleri (sensör kalibrasyonu, PID, trigonometri) donanımda yapılır ve R3'e göre kat kat hızlanır. Besleme tarafında da büyük bir değişiklik var: R3'teki doğrusal regülatör 12 V'ta ısınırken R4'te anahtarlamalı bir buck dönüştürücü kullanılır; bu yüzden kart 24 V'a kadar giriş kabul eder ve çok daha az ısınır.
R4 ile gelen yeni donanımlar
- 12 bit DAC (A0): PWM'in aksine gerçek bir analog gerilim üretir; ses, sinüs dalgası ve basit sinyal üreteci için kullanılır. Kart paketindeki analogWave kütüphanesi sinüs, kare ve testere dişi dalgayı tek satırla üretir.
- 14 bit ADC: analogReadResolution(14) ile 0–16383 arası okursun; 5 V referansta bir adım yaklaşık 0,3 mV'tur, R3'te ise 4,9 mV'tur. Eski kodlar bozulmasın diye varsayılan çözünürlük yine 10 bittir.
- Dahili op-amp: A1 (+), A2 (–) ve A3 (çıkış) pinlerinde; küçük sensör sinyallerini ek entegre kullanmadan yükseltebilirsin. Temel bilgiler için Op-amp Nedir? yazısına bak.
- CAN hattı: Otomobillerde ve endüstride kullanılan dayanıklı haberleşme hattıdır; SN65HVD230 ya da TJA1050 gibi bir alıcı-verici modülü ve kart paketindeki Arduino_CAN kütüphanesiyle kullanılır.
- RTC: Ek modül olmadan tarih ve saat tutar (RTC.h kütüphanesi). R4 WiFi'de VRTC pinine 1,6–3,6 V arası bir pil bağlarsan saat, kartın beslemesi kesildiğinde de çalışmaya devam eder.
- USB HID: Kart bilgisayara klavye ya da fare olarak tanıtılabilir; eskiden bunun için Leonardo gerekirdi (Arduino Leonardo ile USB klavye).
- Kapasitif dokunma: Bazı pinler, Arduino_CapacitiveTouch kütüphanesiyle ek modül olmadan dokunmatik düğme gibi çalışabilir.
Bu özelliklerden ikisini hemen deneyebilirsin. Aşağıdaki kod DAC'tan sırayla artan gerilimler üretir ve aynı gerilimi 14 bitlik ADC ile geri okur. A0 ile A1 pinlerini bir jumper kabloyla birleştirmen yeterli; Seri Monitör'ü 115200 baud hızında aç:
1// A0 (DAC) ile A1'i bir jumper kabloyla bağla / connect A0 (DAC) to A1 with a jumper wire
2
3void setup() {
4 Serial.begin(115200);
5 while (!Serial) {} // USB seri port açılana kadar bekle / wait for the USB serial port
6 analogWriteResolution(12); // DAC: 0–4095
7 analogReadResolution(14); // ADC: 0–16383
8}
9
10void loop() {
11 for (int value = 0; value < 4096; value += 512) {
12 analogWrite(DAC, value); // A0'dan gerçek analog gerilim / true analog voltage on A0
13 delay(10);
14 int raw = analogRead(A1); // 14 bit okuma / 14-bit reading
15 float volts = raw * 5.0 / 16383.0; // 5 V referans / 5 V reference
16 Serial.print("DAC: ");
17 Serial.print(value);
18 Serial.print(" ADC: ");
19 Serial.print(raw);
20 Serial.print(" V: ");
21 Serial.println(volts, 3);
22 delay(500);
23 }
24}Çıktıda DAC değeri her 512 arttığında okunan değerin yaklaşık 2048 arttığını görürsün: 12 bitlik çıkışın bir adımı, 14 bitlik girişte 4 adıma karşılık gelir. Hesapta 5,0 V kullandık; ama kart USB'den beslendiğinde koruma diyodu yüzünden 5 V hattı yaklaşık 4,7 V'a düşer. Hassas ölçüm istiyorsan 5V pinini multimetreyle ölç ve formüldeki 5.0 yerine bu değeri yaz. Koddaki while (!Serial) satırı, Seri Monitör açılmadan gönderilen ilk satırların kaybolmasını önler; kart bilgisayara bağlı olmadan çalışacaksa bu satırı sil, yoksa program orada bekler. Analog okumanın temellerini ADC ve analog-dijital dönüşüm yazısında bulabilirsin.
Pin akım sınırı: R4'te neden 8 mA?
R4'e geçenlerin en çok gözden kaçırdığı fark budur. R3'ün ATmega328P'si pin başına 20 mA'i rahatça verir (mutlak sınır 40 mA); bu yüzden internetteki örneklerin çoğu LED'i 220 Ω dirençle doğrudan pine bağlar. Arduino ise R4 için pin başına en fazla 8 mA çekilmesini söyler. Ohm kanunuyla hesaplayalım: 5 V'luk pinden kırmızı bir LED (yaklaşık 2 V) sürerken 220 Ω dirençte akım (5 − 2) / 220 ≈ 13,6 mA olur; bu, R4'ün sınırının neredeyse iki katıdır. LED büyük ihtimalle yanar ama pin zamanla zarar görebilir ve bu hasar çoğu zaman fark edilmeden birikir.

| LED direnci | Akım (kırmızı LED, 5 V) | Uno R3 | Uno R4 |
|---|---|---|---|
| 220 Ω | ≈ 13,6 mA | Uygun | Sınırın üstünde |
| 330 Ω | ≈ 9,1 mA | Uygun | Sınırın biraz üstünde |
| 470 Ω | ≈ 6,4 mA | Uygun | Uygun |
| 1 kΩ | ≈ 3 mA | Uygun | Uygun, LED hâlâ net görünür |
Eski kodlar ve kütüphaneler R4'te çalışır mı?
Kısa cevap: çoğu evet. digitalWrite, analogRead, millis, Serial, Wire (I2C), SPI, EEPROM, Servo ve tone gibi standart Arduino komutlarıyla yazılmış kodlar R4'te değişiklik yapmadan derlenir. Sorun, doğrudan ATmega328P'nin donanımına erişen kodlarda çıkar: PORTB, DDRD gibi kayıtlarla yapılan hızlı pin işlemleri, Timer1 ayarları, avr/ ile başlayan başlık dosyaları ve bunları kullanan kütüphaneler R4'te derlenmez. Örneğin PORTB kullanan bir kod 'PORTB' was not declared in this scope hatası verir.
| Kütüphane ya da kod | R4'te durum | Not |
|---|---|---|
| Servo, Wire, SPI, EEPROM, SoftwareSerial | Çalışır | R4 desteği resmi olarak vardır |
| Adafruit NeoPixel, FastLED | Çalışır | Güncel sürümleri kur |
| DHT sensor library | Çalışır | Adafruit kütüphanesi |
| IRremote | Kısmen çalışır | 4.x sürümleri R4'te IR alıcıyı okur; kütüphane belgesine göre R4 WiFi'de gönderme çalışmıyor |
| LiquidCrystal I2C, MFRC522 | Çalışır, uyarı verir | Mimari uyarısı zararsızdır |
| TimerOne | Derlenmez | Yerine kart paketindeki FspTimer sınıfı |
| PORTB, DDRD, PIND kayıtları | Derlenmez | digitalWrite ve digitalRead kullan |
| serialEvent() | Çağrılmaz | loop içinde Serial.available() kontrol et |
Kütüphane derlenirken WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on renesas_uno architecture(s). gibi bir uyarı görebilirsin. Bu bir hata değildir; kütüphanenin yazarı desteklenen mimariler listesine yalnızca AVR'yi yazmıştır. Kod yükleniyor ve çalışıyorsa sorun yok. Gerçek bir hata alırsan önce kütüphanenin güncel sürümünü kur (Arduino'ya kütüphane ekleme), yine olmazsa R4 desteği olan bir alternatif ara.
Dikkat edilmesi gereken bir fark daha var: R3'te tek bir seri port vardır ve hem USB'ye hem de D0/D1 pinlerine bağlıdır. R4'te ise Serial yalnızca USB'dir; D0 ve D1 pinleri Serial1 adıyla ayrı çalışır. HC-05 Bluetooth ya da GPS gibi bir modülü D0/D1'e bağlayıp Serial ile okuyan eski bir kod R4'te hiçbir veri almaz. Aşağıdaki köprü kodu modülden gelen veriyi Seri Monitör'e, Seri Monitör'e yazdıklarını da modüle aktarır:
1// R4'te Serial = USB, Serial1 = D0 (RX) ve D1 (TX) / on the R4, Serial = USB, Serial1 = D0 (RX) and D1 (TX)
2
3void setup() {
4 Serial.begin(115200); // bilgisayar (Seri Monitör) / computer (Serial Monitor)
5 Serial1.begin(9600); // D0/D1'e bağlı modül, örn. HC-05 / module on D0/D1, e.g. HC-05
6}
7
8void loop() {
9 if (Serial1.available()) {
10 Serial.write(Serial1.read()); // modülden bilgisayara / module to computer
11 }
12 if (Serial.available()) {
13 Serial1.write(Serial.read()); // bilgisayardan modüle / computer to module
14 }
15}Arduino IDE'ye Uno R4 kurulumu
- Arduino IDE 2'yi kur ya da güncelle (Arduino IDE kurulumu).
- Soldaki Kart Yöneticisi'ni aç, UNO R4 yaz ve Arduino UNO R4 Boards paketini kur. Bu resmî bir paket olduğu için ek bir URL eklemen gerekmez.
- Kartı veri taşıyan bir USB-C kablosuyla bağla ve Araçlar > Kart menüsünden Arduino UNO R4 Minima ya da Arduino UNO R4 WiFi seç.
- Araçlar > Port menüsünden kartın portunu seç, Dosya > Örnekler > 01.Basics > Blink örneğini aç ve yükle. D13'e bağlı dahili LED yanıp sönmeye başlar.
- Port görünmüyorsa ya da yükleme yarıda kalıyorsa RESET düğmesine hızlıca iki kez bas: kart önyükleyici (bootloader) moduna geçer ve port yeniden belirir. Yükleme sorunlarının tamamı için Arduino kod yüklenmiyor rehberine bak.
Uno R4 WiFi: ESP32-S3 ve 12x8 LED matris
R4 WiFi'deki ESP32-S3, varsayılan olarak Arduino'nun yüklediği bir ara yazılımla çalışır ve RA4M1'den gelen komutları Wi-Fi ve Bluetooth işlemlerine çevirir. Sen kodu yine RA4M1 için yazarsın: Wi-Fi için kart paketiyle gelen WiFiS3, Bluetooth için ArduinoBLE kütüphanesini kullanırsın. İki önemli sınır var: modül yalnızca 2,4 GHz ağlara bağlanır ve anteni ortak kullandığı için Wi-Fi ile Bluetooth'u aynı anda çalıştıramazsın. Bazı yeni özellikler ESP32-S3 yazılımının güncel olmasını ister; IDE'deki Araçlar > Firmware Updater menüsüyle bu yazılımı güncelleyebilirsin.
Kartın ön yüzündeki matris, 8 satır ve 12 sütundan oluşan 96 kırmızı LED'dir. Kutudan ilk çıktığında üzerinde Tetris animasyonu oynar. LED'ler charlieplexing denen yöntemle RA4M1'in 11 iç pinine bağlıdır; bu pinler başlıklara çıkmaz, yani matrisi kullanmak D0–D13 ya da A0–A5 pinlerinden hiçbirini harcamaz. Kart paketindeki Arduino_LED_Matrix kütüphanesi bir kareyi (frame) iki biçimde kabul eder: 8x12'lik bir bayt dizisi ya da üç tane 32 bitlik sayı. Dizi yöntemi daha okunaklıdır, çünkü 1'lerin oluşturduğu şekli kodun içinde görürsün:
1#include "Arduino_LED_Matrix.h" // kart paketiyle gelir / ships with the board package
2
3ArduinoLEDMatrix matrix;
4
5// 8 satır x 12 sütun: 1 = LED yanar / 8 rows x 12 columns: 1 = LED on
6uint8_t kalp[8][12] = {
7 { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
8 { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
9 { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
10 { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
11 { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
12 { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
13 { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
14 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
15};
16
17void setup() {
18 matrix.begin();
19}
20
21void loop() {
22 matrix.renderBitmap(kalp, 8, 12); // kendi çizimin / your own drawing
23 delay(1000);
24 matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY); // kütüphanedeki hazır kare / ready-made frame from the library
25 delay(1000);
26 kalp[7][11] = 1; // tek bir LED'i yak: satır 7, sütun 11 / turn on one LED: row 7, column 11
27}renderBitmap() kendi çizdiğin diziyi gösterir, loadFrame() ise kütüphanedeki hazır kareleri yükler: LEDMATRIX_HEART_BIG, LEDMATRIX_EMOJI_HAPPY, LEDMATRIX_EMOJI_SAD ve LEDMATRIX_DANGER bunlardan birkaçıdır. loadSequence() ve play() ile LEDMATRIX_ANIMATION_TETRIS ya da LEDMATRIX_ANIMATION_WIFI_SEARCH gibi hazır animasyonları oynatabilirsin. Matrise yazı yazmak ve kaydırmak için Kütüphane Yöneticisi'nden ArduinoGraphics kütüphanesini kurman gerekir. Daha büyük bir ekran istersen MAX7219 LED matris ve WS2812B NeoPixel yazılarına göz at.
İlk proje: LED matrisi telefondan kontrol etmek
Şimdi iki özelliği birleştirelim. Kart ev ağına bağlanırken matriste Wi-Fi arama animasyonu oynar, bağlanınca IP adresini kayan yazıyla gösterir. Bu adresi aynı ağa bağlı telefonunun tarayıcısında açtığında karşına çıkan düğmelerle matriste kalp, mutlu ya da üzgün yüz gösterebilir, IP adresini yeniden kaydırabilir ya da matrisi kapatabilirsin. Bunun için kart dışında hiçbir malzeme gerekmez.
- Kütüphane Yöneticisi'nden ArduinoGraphics kütüphanesini kur; WiFiS3 ve Arduino_LED_Matrix kart paketiyle gelir.
- Koddaki ağ adını ve şifreyi kendi bilgilerinle değiştir; büyük-küçük harfe dikkat et.
- Kart olarak Arduino UNO R4 WiFi seç, kodu yükle ve Seri Monitör'ü 115200 baud hızında aç.
- Matriste kayan ya da Seri Monitör'de yazan IP adresini telefonunun tarayıcısına yaz.
- Sayfadaki düğmelere bas; matris anında değişir.
1#include "ArduinoGraphics.h" // Arduino_LED_Matrix'ten ÖNCE eklenmeli / must come BEFORE Arduino_LED_Matrix
2#include "Arduino_LED_Matrix.h"
3#include "WiFiS3.h"
4
5char ssid[] = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
6char pass[] = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
7
8ArduinoLEDMatrix matrix;
9WiFiServer server(80);
10
11void scrollText(String text) {
12 matrix.beginDraw();
13 matrix.stroke(0xFFFFFFFF);
14 matrix.textScrollSpeed(60); // her adım 60 ms / 60 ms per step
15 matrix.textFont(Font_5x7);
16 matrix.beginText(0, 1, 0xFFFFFF);
17 matrix.print(" " + text + " ");
18 matrix.endText(SCROLL_LEFT); // yazıyı sola kaydır / scroll the text to the left
19 matrix.endDraw();
20}
21
22void sendPage(WiFiClient &client) {
23 client.println("HTTP/1.1 200 OK");
24 client.println("Content-Type: text/html; charset=utf-8");
25 client.println("Connection: close");
26 client.println();
27 client.println("<!DOCTYPE html><html><head><meta name='viewport' content='width=device-width'></head><body>");
28 client.println("<h2>UNO R4 WiFi</h2>");
29 client.println("<p><a href='/kalp'><button>Kalp / Heart</button></a></p>");
30 client.println("<p><a href='/mutlu'><button>Mutlu / Happy</button></a></p>");
31 client.println("<p><a href='/uzgun'><button>Uzgun / Sad</button></a></p>");
32 client.println("<p><a href='/ip'><button>IP</button></a></p>");
33 client.println("<p><a href='/kapat'><button>Kapat / Off</button></a></p>");
34 client.println("</body></html>");
35}
36
37void setup() {
38 Serial.begin(115200);
39 matrix.begin();
40
41 if (WiFi.status() == WL_NO_MODULE) { // ESP32-S3 yanıt vermiyor / ESP32-S3 not responding
42 Serial.println("WiFi modulu bulunamadi / WiFi module not found");
43 matrix.loadFrame(LEDMATRIX_DANGER);
44 while (true) {}
45 }
46
47 matrix.loadSequence(LEDMATRIX_ANIMATION_WIFI_SEARCH); // bağlanırken animasyon / animation while connecting
48 matrix.play(true);
49
50 while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
51 Serial.println("Baglaniyor / connecting...");
52 delay(5000);
53 }
54 while (WiFi.localIP() == IPAddress(0, 0, 0, 0)) { // DHCP adresini bekle / wait for the DHCP address
55 delay(100);
56 }
57
58 server.begin();
59 Serial.print("IP: ");
60 Serial.println(WiFi.localIP());
61 scrollText(WiFi.localIP().toString()); // IP adresini matriste göster / show the IP on the matrix
62 matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY);
63}
64
65void loop() {
66 WiFiClient client = server.available();
67 if (!client) {
68 return;
69 }
70
71 String request = client.readStringUntil('\n'); // ör. "GET /kalp HTTP/1.1" / e.g. "GET /kalp HTTP/1.1"
72 while (client.available()) {
73 client.read(); // kalan başlıkları at / discard the remaining headers
74 }
75
76 bool showIp = false;
77 if (request.indexOf("GET /kalp") >= 0) {
78 matrix.loadFrame(LEDMATRIX_HEART_BIG);
79 } else if (request.indexOf("GET /mutlu") >= 0) {
80 matrix.loadFrame(LEDMATRIX_EMOJI_HAPPY);
81 } else if (request.indexOf("GET /uzgun") >= 0) {
82 matrix.loadFrame(LEDMATRIX_EMOJI_SAD);
83 } else if (request.indexOf("GET /kapat") >= 0) {
84 matrix.clear();
85 } else if (request.indexOf("GET /ip") >= 0) {
86 showIp = true;
87 }
88
89 sendPage(client);
90 delay(10);
91 client.stop(); // bağlantıyı kapat / close the connection
92
93 if (showIp) {
94 scrollText(WiFi.localIP().toString()); // sayfa gittikten sonra kaydır / scroll after the page is sent
95 }
96}Kodun mantığı basit: WiFi.begin() bağlantı kurulana kadar tekrar denenir, ardından DHCP'nin IP adresi vermesi beklenir ve 80 numaralı portta bir web sunucusu başlatılır. Telefondan gelen isteğin ilk satırı (örneğin "GET /kalp HTTP/1.1") okunur, indexOf() ile hangi düğmeye basıldığı anlaşılır ve uygun kare matrise yüklenir. endText(SCROLL_LEFT) yazı kayarken programı bekletir; bu yüzden IP adresini yeniden kaydırma işini sayfayı gönderip bağlantıyı kapattıktan sonra yapıyoruz. Matris tehlike simgesini gösterip duruyorsa ESP32-S3 yanıt vermiyordur; kartın USB kablosunu çıkarıp tak ve ara yazılımı güncelle. Bağlantı hiç kurulmuyorsa ESP32 Wi-Fi'ye bağlanmıyor yazısındaki 2,4 GHz ve şifre kontrolleri burada da geçerlidir.
Güç beslemesi: VIN, 5V ve 3,3 V pinleri
R4, DC jakından ya da VIN pininden 6–24 V arası gerilim kabul eder; kart üzerindeki buck dönüştürücü bunu 5 V'a indirir. Arduino'nun R4 WiFi belgelerine göre kart VIN'den beslenirken 5V pininden yaklaşık 1,2 A çekilebilir; USB'den beslenirken kart 2 A'e kadar dayanır ama gerçek sınırı bilgisayarının USB portu belirler. Bu akım sensörler ve küçük modüller içindir, motorlar ve servolar için değil. Minima'nın 3,3 V pini RA4M1'in dahili regülatöründen beslendiği için yalnızca küçük sensörlere yeter; ESP-01 ya da PA+LNA antenli nRF24L01 gibi yüksek akım çeken modülleri buradan besleme. R4 WiFi'de ayrıca OFF pini (GND'ye bağlanınca kartın 5 V beslemesini keser) ve RTC pili için VRTC pini bulunur. Besleme seçeneklerinin tamamı için Arduino nasıl beslenir? yazısına bak.
Uno R4 ile proje fikirleri
- Wi-Fi hava istasyonu: DHT11 ile ölçtüğün sıcaklığı hem matriste kayan yazıyla hem de telefondan açılan bir sayfada göster.
- Matris oyunları: 12x8 matriste yılan, Tetris ya da zıplayan top; daha fazla fikir için Arduino oyun projeleri yazısına bak.
- İnternet saati: Saati internetten (NTP) alıp dahili RTC'ye yaz, VRTC pinine pil takarak elektrik kesilse de saati koru.
- USB makro klavyesi: Dört düğmeyle bilgisayarda kısayol tetikleyen bir tuş takımı yap; R4'ün HID desteği sayesinde Leonardo'ya gerek kalmaz.
- DAC ile ses: analogWave kütüphanesiyle A0'dan sinüs dalgası üret, bir ses yükselteci ve hoparlörle basit bir synthesizer kur.
- Telefondan lamba kontrolü: Bu yazıdaki web sunucuyu bir röle modülüyle birleştirip lambayı uzaktan aç.
Sık yapılan hatalar ve çözümleri
| Belirti | Neden | Çözüm |
|---|---|---|
| 'PORTB' was not declared in this scope | Kod AVR kayıtlarını doğrudan kullanıyor | digitalWrite ve digitalRead ile yeniden yaz |
| 'class TimerOne' has no member named 'initialize' | TimerOne yalnızca AVR zamanlayıcılarını tanıyor | Kart paketindeki FspTimer sınıfını kullan |
| 'class ArduinoLEDMatrix' has no member named 'beginDraw' | ArduinoGraphics eksik ya da matris kütüphanesinden sonra eklenmiş | ArduinoGraphics'i kur ve Arduino_LED_Matrix'ten önce ekle |
| WiFiS3 dosyalarında 'D24' was not declared gibi hatalar | Kart olarak R4 Minima seçili | Araçlar > Kart menüsünden R4 WiFi seç |
| D0/D1'deki modülden veri gelmiyor | R4'te Serial yalnızca USB'dir | Serial yerine Serial1 kullan |
| Port görünmüyor ya da yükleme yarıda kalıyor | Çalışan kod USB'yi kilitledi ya da kablo yalnızca şarj kablosu | RESET'e iki kez bas, veri kablosu kullan |
| Bir pin çalışmayı bıraktı | Pin 8 mA sınırının üstünde zorlandı | LED'lerde 470 Ω–1 kΩ kullan, büyük yükleri transistörle sür |
| Qwiic'e takılan sensör bulunamıyor | Qwiic ikinci I2C hattına (Wire1) bağlı | Kodda Wire yerine Wire1 kullan |
Hangisini almalısın: R3, R4 Minima mı, R4 WiFi mı?
- Uno R4 WiFi: İnternete, telefona ya da Bluetooth'a bağlanacak projeler yapacaksan ve kartın üzerinde hazır bir gösterge istiyorsan en iyi seçimdir. Yeni başlayanlar için de eğlencelidir, çünkü kodunun çalıştığını matriste hemen görürsün.
- Uno R4 Minima: Kablosuz bağlantıya ihtiyacın yoksa ve daha fazla bellek, hız, DAC ve USB-C istiyorsan uygundur. SWD konnektörü sayesinde harici bir hata ayıklayıcı bağlayıp kodu adım adım çalıştırmak isteyenler için de iyi bir seçenektir.
- Uno R3 ya da uyumlu klonu: Elinde AVR'ye özel kütüphaneler kullanan eski projeler varsa, ders kitabındaki örnekleri birebir izlemek istiyorsan ya da en düşük maliyeti arıyorsan hâlâ mantıklıdır; pinleri 20 mA'i rahatça taşır.
- ESP32: Wi-Fi'yi daha fazla pin ve daha düşük fiyatla istiyorsan bir ESP32 kartı da düşünülebilir; ancak 3,3 V ile çalıştığını unutma (Arduino mu ESP32 mi?).
Kısacası Uno R4, Uno'nun alıştığın kolaylığını koruyup belleği, hızı ve yeni donanımları ekleyen bir yükseltmedir; yeter ki 8 mA sınırını ve Serial1 farkını aklında tut. Kartın pinlerini ayrıntılı tanımak için Arduino Uno pinleri yazısına göz at. BlueGrays uygulamasında LED, buton, sensör, LCD ve LED matris projelerini Arduino Uno için adım adım devre şeması ve kodlarıyla bulabilirsin; standart komutlarla yazılan bu projeler R4'te de çalışır, yalnızca LED dirençlerini 470 Ω'a yükseltmen yeterlidir.
Sıkça sorulan sorular
Arduino Uno R4 ile R3 arasındaki fark nedir?
Uno R4, R3'teki 8 bitlik ve 16 MHz'lik ATmega328P yerine 48 MHz'te çalışan 32 bitlik Renesas RA4M1 kullanır. Flash bellek 32 KB'tan 256 KB'a, SRAM 2 KB'tan 32 KB'a çıkar; ayrıca 12 bit DAC, 14 bit ADC, CAN, RTC, USB-C ve USB klavye-fare desteği gelir. Kart boyutu, pin dizilimi ve 5 V çalışma gerilimi aynı kalır.
Arduino Uno R3 kodları R4'te çalışır mı?
Standart Arduino komutlarıyla yazılmış kodların ve kütüphanelerin çoğu değişiklik yapmadan çalışır. PORTB gibi AVR kayıtlarına, Timer1 ayarlarına ya da avr/ başlık dosyalarına doğrudan erişen kodlar ise derlenmez. Ayrıca D0/D1 pinlerine bağlı modülleri okuyan kodlarda Serial yerine Serial1 yazman gerekir.
Arduino Uno R4 WiFi mi Minima mı almalıyım?
Wi-Fi, Bluetooth ya da telefondan kontrol gerektiren projeler yapacaksan R4 WiFi al; hazır LED matris ve Qwiic konnektörü de cabası. Kablosuz bağlantıya ihtiyacın yoksa Minima daha ucuzdur ve aynı işlemciyle aynı performansı verir.
Arduino Uno R4 pininden kaç mA akım çekilebilir?
Arduino, Uno R4 için pin başına en fazla 8 mA çekilmesini önerir; R3'te bu değer 20 mA idi. Bu yüzden LED'lerde 220 Ω yerine en az 470 Ω direnç kullanmalı, röle, motor ve buzzer gibi yükleri transistör ya da MOSFET üzerinden sürmelisin.
Arduino R3 shield'leri Uno R4'e takılır mı?
Evet. R4 Minima ve R4 WiFi, R3 ile aynı kart boyutuna, aynı başlık yerleşimine ve aynı 5 V lojik seviyesine sahiptir; motor sürücü, röle ve sensör shield'lerinin çoğu doğrudan takılır. Yalnızca shield'in kütüphanesi AVR'ye özel kod içeriyorsa yazılım tarafında güncelleme gerekebilir.
Arduino Uno R4 WiFi Bluetooth destekler mi?
Evet, kart üzerindeki ESP32-S3 modülü Bluetooth 5 LE destekler ve ArduinoBLE kütüphanesiyle kullanılır. Ancak Wi-Fi ile Bluetooth aynı anteni paylaştığı için ikisi aynı anda çalışmaz. HC-05'teki gibi klasik Bluetooth seri port bağlantısı desteklenmez; telefon uygulamasının BLE kullanması gerekir.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Led Yakma
Elektroniğin ilk merhabası: tek bir LED'i yakıp söndürmek. Arduino LED'i çok kısa aralıklarla yakıp söndürür, ışık hızlı hızlı göz kırpar. Kartın bir ışığı nasıl yönettiğini en sade haliyle görür, son

Trafik Lambası
Her gün yolda gördüğün trafik ışığının minik bir kopyası. Kırmızı iki saniye yanar, sarı kısa bir an parlar, yeşil iki saniye yanar, ardından yine sarı üzerinden kırmızıya dönülür ve döngü hiç durmaz.

Buton İle Led Yakma (Push)
Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

HC-SR04 Mesafe Ölçme (Serial Ekran)
Yarasalar karanlıkta yollarını nasıl buluyorsa HC-SR04 sensörü de öyle çalışır: duyamadığın bir ses gönderir, yankısını dinler ve önündeki cismin ne kadar uzakta olduğunu ölçer. Arduino bu mesafeyi sa

DHT11 İle Sıcaklık Ve Nem
Odan kaç derece, hava nemli mi, kuru mu? DHT11 sensörü sıcaklığı ve nemi ölçer, Arduino da bu değerleri iki satırlık LCD ekrana yazar ve birkaç saniyede bir yeniler. Sensöre bir şey olursa ekranda hat

Dot Matrix Saat ve Takvim (MAX7219, DS1307)
Masada ya da duvarda duran, saati ve tarihi kayan yazıyla gösteren ışıklı bir pano. 8x32 LED ekranda iki noktası her saniye yanıp sönen büyük rakamlı saat durur; her dakika başında günün adı ve tarih

Piksel Yılan: 8x8 Matris
Klasik yılan oyununu kendi ellerinle kur ve oyna. Renkli 8x8 ışık matrisinde yeşil yılanı oyun çubuğuyla yönlendirip kırmızı elmaları yersin; her elmada yılan uzar, biraz daha hızlanır ve puanın küçük

4x 32x8 Matrix LED Animasyon Ve Yazı
Dört uzun LED matris modülü üst üste dizilince binden fazla ışık noktası olan kare bir ekran çıkar. Önce filmlerdeki gibi yukarıdan harfler yağmur gibi düşer, ardından bir perde açılır ve iki satırda
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

