Hirdetés

Új hozzászólás Aktív témák

  • tothferenc

    senior tag

    sziasztok. Egy kis programozói segítségre lenne szükségem. Egy Ds18b20 szenzorral, egy arduino nanoval és egy oled kijelzővel reszeltem egy egyszerű hőmérőt. Viszont nem jövök rá, mi kell a sketch-be, hogy csak 1 tizedesjegyig írja a hőfokot. :)) :W eléggé az elején vagyok az arduinoba.
    bedobom ide a kódot:
    //Libraries available at: https://github.com/adafruit/Adafruit_SSD1306
    // https://github.com/adafruit/Adafruit-GFX-Library
    //https://github.com/milesburton/Arduino-Temperature-Control-Library
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    const int SensorDataPin = 2;
    OneWire oneWire(SensorDataPin);
    DallasTemperature sensors(&oneWire);
    Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);
    void setup() {
    Serial.begin(115200);
    if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
    }
    delay(2000);
    display.clearDisplay();
    display.setTextColor(WHITE);
    }
    void loop() {
    dispTemp();
    display.clearDisplay();
    }
    void dispTemp(void) { // function to read and display temperature

    sensors.requestTemperatures(); // Send the command to DS18B20 to get temperatures
    float temperatureDegC = sensors.getTempCByIndex(0);
    displaytemp(temperatureDegC,'C'); // call to function void displaytemp(float temp, char C_F) giving temperature in Deg C and character C
    }
    void displaytemp(float temp, char C_F) // function to display temp, takes temperature and character C or F from calling function void dispTemp(void)
    {
    display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE); // draws the outer rectangular boundary on the screen
    //display.print("Temperature: "); display.print(temperature_Celsius); display.println(" *C");
    display.setTextSize(1,2);
    display.setCursor(32,6);
    display.print("Homerseklet");

    display.setTextColor(WHITE); // i have white OLED display, you can use other colors in case you have multicolored display
    display.setTextSize(1); // i have used large font to display temperature, it can be varied as per your taste
    display.setCursor(106,30);
    display.print("o"); // this prints the "o" symbol to show Degree
    display.setTextSize(2);
    display.setCursor(112,37);
    display.print(C_F); // this takes character from function call either C or F for centigrade of farenheit
    if(temp >=100 || temp < 0){ //i have reduced font size if temp goes in 3 digits or is -ve, keeps text in center of display , it can be varied as per your taste
    display.setTextSize(3);
    display.setCursor(25,30);
    }
    else if(temp < 10 && temp >= 0){ //some adjustments to keep text in center of display , it can be varied as per your taste
    display.setTextSize(3);
    display.setCursor(25,30);
    }
    else
    {
    display.setTextSize(3); //i have used large font to display temperature, it can be varied as per your taste
    display.setCursor(10,30);

    }
    display.print(temp); // finally prints the temperature on your OLED display
    display.display();

    }

    i5 2500k + 8GB RAM + Gigabyte R9 270X 4GB ~ iPhone 13 mini - MediaPad M3

Új hozzászólás Aktív témák