Bu videoda Arduino Uno R4‘ün 14-bit ADC‘sinden başlayarak Arduino kartların ADC’lerini detaylı olarak inceliyorum.
Bildiğimiz gibi uzun yıllardır kullandığımız Arduino Uno R3‘te kullanılan Atmel üretimi ATmega328P mikrokontrolcüsü 10-bit ADC‘ye sahip ve böylece girilen gerilim değerini 0-1023 arasında okuyabiliyoruz.
Arduino UNO R4 ailesinde kullanılan Renesas üretimi RA4M1 mikrokontrolcüsü ise 14-bit ADC desteğine sahip. Bu, 0-16383 değerleri arasında ölçümler yapabileceğimiz anlamına geliyor.
Peki daha yüksek çözünürlüklü ADC’ler gerçekten daha mı iyi? Cevabı videoda.
Videoda gösterilen Arduino sketch koduna aşağıdan ulaşabilirsiniz.
BİLGİ: Aşağıdaki sketch kodu U8G2 ekran kütüphanesi kullanılarak hazırlanmıştır. OLED ekran olarak da 128×64 çözünürlüğünde bir ekran kullanılması gerekir. Kullandığınız ekranın kullandığı çip SSD1306 veya SH1106 olabilir. Kodun üst tarafında uygun satırı aktifleştirip diğerini yorum yapabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/* Arduino Uno R4 ADC analogReadResolution() U8G2 ekran kütüphanesi ile çalışır. METE HOCA, 2024 WS: www.metehoca.com YT: www.youtube.com/MeteHoca IG: www.instagram.com/metehoca */ #include <Wire.h> #include <U8g2lib.h> //U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // SSD1306 0.96" I2C OLED U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // SH1106 1.3" I2C OLED #define SagaYasla(x) (128-u8g2.getUTF8Width(x)) int adc; void setup() { u8g2.begin(); u8g2.setFontPosTop(); } void loop() { u8g2.clearBuffer(); u8g2.setFont(u8g2_font_6x10_tr); u8g2.drawStr(4, 2, "METE HOCA UNO R4 ADC"); u8g2.setFont(u8g2_font_courB14_tr); analogReadResolution(10); u8g2.drawStr(0, 18, "10-bit: "); adc = analogRead(A2); u8g2.setCursor(SagaYasla(String(adc).c_str()), 18); u8g2.print(adc); delay(5); analogReadResolution(12); u8g2.drawStr(0, 34, "12-bit: "); adc = analogRead(A2); u8g2.setCursor(SagaYasla(String(adc).c_str()), 34); u8g2.print(adc); delay(5); analogReadResolution(14); u8g2.drawStr(0, 50, "14-bit: "); adc = analogRead(A2); u8g2.setCursor(SagaYasla(String(adc).c_str()), 50); u8g2.print(adc); delay(5); u8g2.sendBuffer(); delay(100); } |