Advertisement
bangnaga

Arduino Seterika Portable

Feb 7th, 2022
1,011
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.76 KB | None | 0 0
  1.  
  2.  
  3. #include <Wire.h>           //menggunakan librarry wire
  4. #include <Adafruit_GFX.h>
  5. #include <Adafruit_SSD1306.h>
  6.  
  7. #define SCREEN_WIDTH 128 // OLED display width,  satuan pixels
  8. #define SCREEN_HEIGHT 64 // OLED display height, satuan  pixels
  9.  
  10. #define ADC_VREF_mV    5000.0 // nilai tegangan reference ADC dalam satuan millivolt
  11. #define ADC_RESOLUTION 1024.0
  12. #define PIN_LM35 A1 // pin sensor temperature - LM35
  13. byte potensio= A0;  // pin analog A0 potensiometer
  14. int nilai;
  15. int target;
  16. Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Koleksi display OLED SSD1306 menggunakan I2C
  17. String tempString;
  18.  
  19. void setup() {
  20.   Serial.begin(9600);
  21.   pinMode(LED_BUILTIN, OUTPUT);   // Set PIN untuk Relay
  22.   // Inisialisasi Alamat I2C 0x3C Oled dispplay 128x64
  23.   if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  24.     Serial.println(F("Display Oleh Gagal Terhubung"));
  25.     while (true);
  26.   }
  27.  
  28.   delay(2000);         // tunda 2 detik
  29.   oled.clearDisplay(); // bersihkan tampilan display
  30.  
  31.   oled.setTextSize(2);      // set ukuran text
  32.   oled.setTextColor(WHITE); // set warna putih
  33.   oled.setCursor(0, 10);    // set posisi kursor
  34.   tempString.reserve(10);   // untuk menghindari fragmentasi memori saat menggunakan String
  35. }
  36.  
  37. void loop() {
  38.   // mendapakan nilai analog dari putran potensio meter
  39.   nilai= analogRead(potensio);
  40.   // memetakan nilai analog dari 0 s/d 1023 ke rentang nilai 0 s/d 100
  41.   target= map(nilai, 0, 1023, 0, 100);
  42.   // mendapatkan nilai ADC dari sensor temperature LM35
  43.   int adcVal = analogRead(PIN_LM35);
  44.   // convert  ADC ke tegangan (millivolt)
  45.   float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
  46.   // convert nilai tegangan ke Celsius
  47.   float tempC = milliVolt / 10;
  48.  
  49.   tempString += "Temp  :";
  50.   tempString  += String(tempC, 2);
  51.   //tampilAdc ("Target: ");
  52.   Serial.print(target);  
  53.   Serial.print("\t");  
  54.   Serial.println(String(tempC, 2));  
  55.  
  56.   if ( tempC < target) {
  57.     digitalWrite(LED_BUILTIN, HIGH);
  58.   }else{
  59.       digitalWrite(LED_BUILTIN, LOW);
  60.     }
  61.    
  62.  
  63.  
  64.   oled.clearDisplay();        // Bersihkan display
  65.   oled.setCursor(10, 10);     // Set posisi kursor ke baris kolom 10 dan baris 40
  66.   oled.println("Target:");    // Tampilkan Tulisan Target ke display
  67.   oled.setCursor(90, 10);     // Set posisi kursor ke baris kolom 90 dan baris 10
  68.   oled.println(target);       // Tampilkan nilai target dari putaran potensio rentang 0-100
  69.   oled.setCursor(10, 40);     // Set posisi kursor ke baris kolom 10 dan baris 40
  70.   oled.println("Aktual:");    // Tampilkan Tulisan Target ke display
  71.   oled.setCursor(90, 40);     // Set posisi kursor ke baris kolom 90 dan baris 40
  72.   oled.println(String(tempC, 0));  // Tamapilkan nilai temperature dari sensor LM35
  73.   oled.display();             // Refresh tampilan
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement