Keresés

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

  • Tomika86

    senior tag

    válasz lanszelot #20043 üzenetére

    De csak a szenzor kiolvasást kell beletenni esetleg egyszerűbb akkor a kiiratást(ami vele együtt van)
    A gombnyomásos részt nem

    Olvasd el itt is, (blocking function=blokkolja a programfutást) [link]

  • lanszelot

    addikt

    válasz lanszelot #20043 üzenetére

    Ezzel a módszerrel sikerült.
    Ma reggel neki ültem, mert tegnap már nagyonm fáradt voltam.
    Minden gombnyomásra vált.
    Mindenkinek köszönöm szépen a segítséget :R

    #include <MQ135.h> /*gaz erzekelo, de nem kell neki igazabol*/
    #include <Adafruit_SSD1306.h> /*oled display*/
    #include <splash.h> /*oled display -nek kell*/
    #include <max6675.h> /*homero*/

    int thermoDO = 10; /*valtozo a homero DO pin -nek*/
    int thermoCS = 9; /*valtozo a homero CS pin -nek*/
    int thermoCLK = 8; /*valtozo a homero CLK pin -nek*/
    int gombNyomas = 1; /*valtozo a gomb nyomas szamlalasara*/
    int gombPin = 4; /*valtozo a gomb pin -nek*/
    int gombAllapot = 0; /*valtozo a gomb allapot olvasasahoz*/
    byte a = 0; /*valtozo a gaz erzekelo negyzet villogashoz*/
    int period = 1000; /*ennyi idot var a futtatashoz*/
    unsigned long time_now = 0;



    MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);


    Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);


    void mindenRajtaVan() {
    int sensorValue = analogRead(A0); /*valtozo a gaz erzekelo alalog pin -nek*/
    int isgas = digitalRead(2); /*valtozo a gaz erzekelo digitalis pin -nek, ez arra kell, ha gas van akkor jelet ad, nem kell kulon erteket adni*/
    String gas; /*valtozo a gaz erzekelo gas vagy no gas kiirasahoz*/
    display.clearDisplay(); /*this line to clear previous logo*/
    display.setTextSize(1); /*text size 3*/
    display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("Thermometer by Gabor");
    display.setTextSize(2); /*text size 2*/
    display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("C = ");
    display.print(thermocouple.readCelsius());/*Celsius*/
    display.setTextSize(1); /*text size 2*/
    display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("F = ");
    display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
    display.setTextSize(1); /*text size 2*/
    display.setCursor(0,50); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("CO2 = ");
    display.print(sensorValue);
    display.print(" PPM ");
    /*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
    if (sensorValue < 90) {gas = "No Gas";}
    else {gas = " Gas";
    if(a) {display.drawRoundRect(80, 47, 40, 15, 2, WHITE);} /*negyzet a gas felirat kore feher*/
    else {display.drawRoundRect(80, 47, 40, 15, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
    a^=1;
    }
    display.print(gas);
    display.display(); /*to shows or update your TEXT*/
    }

    void homeroVanRajta() {
    display.clearDisplay(); /*this line to clear previous logo*/
    display.setTextSize(1); /*text size 3*/
    display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("Thermometer by Gabor");
    display.setTextSize(2); /*text size 2*/
    display.setCursor(10,20); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("C = ");
    display.print(thermocouple.readCelsius());/*Celsius*/
    display.setTextSize(2); /*text size 2*/
    display.setCursor(10,40); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("F = ");
    display.print(thermocouple.readFahrenheit());/*Fahrenheit*/
    display.display(); /*to shows or update your TEXT*/
    }

    void gazVanRajta() {
    int sensorValue = analogRead(A0); /*valtozo a gaz erzekelo alalog pin -nek*/
    int isgas = digitalRead(2); /*valtozo a gaz erzekelo digitalis pin -nek, ez arra kell, ha gas van akkor jelet ad, nem kell kulon erteket adni*/
    String gas; /*valtozo a gaz erzekelo gas vagy no gas kiirasahoz*/
    display.clearDisplay(); /*this line to clear previous logo*/
    display.setTextSize(1); /*text size 3*/
    display.setCursor(3,0); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("Thermometer by Gabor");
    display.setTextSize(2); /*text size 2*/
    display.setCursor(0,20); /*ez tartja egy helyben a szöveget*/
    display.setTextColor(WHITE); /*without this no display*/
    display.print("CO2= ");
    display.print(sensorValue);
    display.setTextSize(1);
    display.print(" PPM");
    /*sensorValue < 90 ellenorzeshez, amugy igas valtozo kell ami a digitalis pin*/
    if (sensorValue < 90) {gas = "No Gas";}
    else {gas = " Gas";
    if(a) {display.drawRoundRect(30, 39, 60, 22, 2, WHITE);} /*negyzet a gas felirat kore feher*/
    else {display.drawRoundRect(30, 39, 60, 22, 2, BLACK);} /*negyzet a gas felirat kore fekete*/
    a^=1;
    }
    display.setTextSize(2);
    display.setCursor(20,42);
    display.print(gas);
    display.display(); /*to shows or update your TEXT*/
    }

    void megnyomva() {
    if (gombNyomas == 1) {
    gombNyomas++;
    } else if (gombNyomas == 2) {
    gombNyomas++;
    } else if (gombNyomas == 3) {
    gombNyomas = 1;
    }
    }


    void setup() {
    Serial.begin(9600); /*elindítja a sorosportot, 9600 baud beállítással. Ez azért jó, mert a Serial Monitoron a program futását tudod monitorozni*/

    pinMode(gombPin, INPUT); /*inicializálja a gomb pin -jet inputnak*/

    Serial.println("MAX6675 test");
    /*wait for MAX chip to stabilize*/
    delay(500);
    /*SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally*/
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C); /*Address 0x3C for 128x32*/

    display.display();
    delay(2000);


    }

    void loop() {

    /*For the MAX6675 to update, you must delay AT LEAST 250ms between reads!*/
    //delay(300);

    /*read the state of the pushbutton value:*/
    gombAllapot = digitalRead(gombPin);

    /*check if the pushbutton is pressed. If it is, the buttonState is HIGH:*/
    if (gombAllapot == HIGH) {
    megnyomva();
    }

    //time_now = millis();

    if(millis() >= time_now + period){
    time_now += period;

    if (gombNyomas == 1) {
    mindenRajtaVan();
    } else if (gombNyomas == 2) {
    homeroVanRajta();
    } else if (gombNyomas == 3) {
    gazVanRajta();
    }

    }

    Serial.println(gombNyomas);



    }

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