Hirdetés
-
Rossz üzlet az EV-kölcsönzés
it Küszködik az EV-kölcsönzés miatt a Hertz Global, még több EV-t adnak el.
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
-
Konzolokra is megjelenik a Deathbound
gp A PC-s verzió mellett megkapjuk a teljes kiadást PlayStation és Xbox platformokra is.
-
Mobilarena
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
-
lanszelot
addikt
válasz ReFleXx #20004 üzenetére
félre értettél, ha benyomom a gombot, akkor nem érzékel.
de valami gond lesz a programmal azért:
mivel ha be van kötve úgy ahogy a képen, akkor
avrdude.exe: stk500_recv(): programmer is not responding
avrdude.exe: stk500_getsync() attempt 1 of 10: not in sync: resp=0xeehibával nem tudok feltölteni a nano-ra semmit
ha lehúzom a kéket, akkor megszűnik a hiba
tehát vagy a bekötésem nem jó, vagy a program.
és ezért nem reagál a gombnyomásra.Az normális, hogy ha le van húzva pin5, akkor változik a "gombNyomas " nevű változó értéke, aminek pin5 inputnál kellene változni?
-
ReFleXx
addikt
válasz lanszelot #20005 üzenetére
normalis , mert akkor lebeg a pin5, ha bekotod akkor az ellenallassal lehuzod GNDre.
igy a kep alapjan jonak tunik a bekotes, eloszor elforgatva neztem
mekkora az ellenallas amit hasznalsz?
vagy vedd ki az ellenallast es hasznald az input_pulldownt ha van olyan.
ha nem akkor megkell forditani a logikat, pullupolni kell a pint es a gombbal meg a gndre kell lehuzni, ehez a programot is igazitani[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
lanszelot
addikt
válasz bagarol #20007 üzenetére
De hát a közelebb lévő lábakat zárja, úgy van bekötve.
gnd -> R -> kék ---- ez alapból zárva van, és gombnyomásra zárva is marad
5V -> piros ---- ezt zárja a gomb össze a kékkelNem így kell?
ReFleXx - sajnos ezt nem értem, kezdő vagyok nagyon
barna fekete fekete piros barna - 10k
ha fordítva van akkor - 120
képen látszik, de nem tudom eldönteni melyik a kezdő szín
sztem 10kvalami nem ok ezzel így
hibák:
5-ös pin , ha ezen van a gomb a gáz érzékelő nem mér
ezért át raktam 4-es pin-re
így a gáz érzékelő mér, de a gomb így se működik jól.
random váltogat, amikor épp kedve van, ha nyomkodom a gombot, és van hogy 1 nyomást 2-nek vesz.
tehát a változó értékét nem növeli a gomb nyomás, csak néha, és van hogy 2-vel növeli meg az értéket
tuti ezzel lesz gond:else if (gombNyomas > 3) {
gombNyomas = 1;
}
mert van 4-es érték , ha Serial Monitoron nézem a változó értékét -
Tankblock
aktív tag
válasz bagarol #20007 üzenetére
A kódban le kellene kezelni a váltást is, mert jelenleg ha lenyomja folyamatosan fogja pörgetni a számlálót felfele ....
4 értékű állapotot nem kellene elérni a feltétel vizsgálatakor. Előtte a modulóját illene venni, vagy ha 4 értékű akkor számlálót 1re tenni....
Release the Beast....
-
ReFleXx
addikt
válasz lanszelot #20009 üzenetére
persze hogy van, eloszor kiiratod es utana allitod 1re, 5 mar nincs is.
helyedbe kiprobalnam csak a gombot, kiveszed az ellenallast, pinmodenal input_pulluppal allitod be nem csak inputtal.
4 v 5-s pin -gomb - GND
gomb benyomaskor igy LOW lesz , alapbol meg HIGH.
a kod tobbi reszet kivennem es csak a gomb reszt hagynam bemt, ha az mar megy akkor menj tovabb.[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
Tankblock
aktív tag
válasz lanszelot #20013 üzenetére
A kapcsoló fizikai volta végett nem egyetlen egységugrást fog végrehajtani, hanem sok kicsit. Mivel gyors contorollered szépen mindegyiket állapotváltásnak fogja regisztrálni.
Ha a gombot megnyomva egy ellenálláson keresztül egy kondenzátort töltesz akkor ez pergés nem fog látszani a uControllered számára.A másik effekt ha csak egy állapotot figyelsz a relatíve gyors loop() függvényeddel akkor azt fogod tapasztalni, hogy folyamatosan változik az értéked....
Erre vannak megoldások : [link] vagy van még sokkal másabbak is lsd első link, és még azon kívül is....
Release the Beast....
-
lanszelot
addikt
válasz lanszelot #20003 üzenetére
A programmal lesz gond, nem a kapcsolóval, ez tuti.
Jelen állapotában, ha be van kötve a kapcsoló, akkor indulásnál, vagy amikor bedugom a kapcsolót, akkor kifagy
#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*/
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) {
mindenRajtaVan();
gombNyomas++;
} else if (gombNyomas == 2) {
homeroVanRajta();
gombNyomas++;
} else if (gombNyomas == 3) {
gazVanRajta();
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(500);
/*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();
}
Serial.println(gombNyomas);
}Egyenlőre feladtam, kiszellőztetem a fejem.
-
nagyúr
válasz lanszelot #20016 üzenetére
A programmal lesz gond, nem a kapcsolóval, ez tuti.
A gond az, hogy nemigen fogadod meg, amit az itteniek sok év tapasztalattal állítanak.
Valamint olyan dolgokra kérdezel rá, amit egyébként 2 perc guglizással egyedül is ki tudnál deríteni (pl felhúzó ellenállás, prell). (Az angol nyelvű leírások, fórumok tudtommal nem jelentenek akadályt)[ Szerkesztve ]
-
ReFleXx
addikt
válasz Tankblock #20015 üzenetére
nem hiszem h prelleges a gond jelenleg, van a loopjaban egy 500as delay, na ha most pont ez alatt az 500ms alatt klikkel a kapcsolon, akkor azt pont nem fogja észrevenni a kontroller.
most ha a tobbi utasitas a loopban durvan eltulozva is instant lefut a legjobb esetben masodpercenkent 2x nezi meg a button allapotot.2020-as dakota közmondás: "Intel a csórók AMD-je"
-
lanszelot
addikt
Azt nem értem hogy ha sok kis kapcsolásnak érzékeli, akkor miért nem vált 1-et se. Hiába nyomkodom.
Erre írtam hogy nem a kapcsoló lesz a gond.Pl delay közben nyomom a gombot. Nem tudom hogy pontosan hogy futnak a programok. Így nem tudom nem az okoz e gondot.
De a delay kell a max6675 -nek. -
ReFleXx
addikt
mar miert nem lenne baj, szerinted akkor mi tortenik ha az 500as delay alatt kattint a gombbal? ha kiveszi akkor fog prellegni
itt az arduinos debounce tutorial: https://docs.arduino.cc/built-in-examples/digital/Debounce
[ Szerkesztve ]
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
lanszelot
addikt
válasz ReFleXx #20028 üzenetére
van itthon multimeterem
A megosztott progiban van egy nagy hiba, amit már nem javítottam, mert elegem lett és elmentem kicsit sportolni.
A hiba, hogy induláskor nem fut le semmi, csak a serial print
Meg kell nyomni a gombot, hogy legyen valami
Próbáltam a function-t elindítani az elején, de hibát dob /tuti nem úgy kell azért/
Hogy kell egy function-t elindítani, de nem a loop-ban? Mert csak indulásnál kell lefusson.#20025 pontosan, van amikor működik, teljesen random.
Ezért gondoltam a delay -re
van, hogy 5-ből 1szer működik, de van hogy 2-ből 1szerez alapján van a gomb
ugyanez a gomb, ugyanez az ellenállás, ugyanez a bekötés működik digispak -al, ott a videó a #19986 -ban
Ezért gondolom, hogy a program lesz a gond.Tomika86: azért raktam function-ba, hogy ne legyen 4 az érték
-
nagyúr
válasz lanszelot #20029 üzenetére
Hogy kell egy function-t elindítani, de nem a loop-ban? Mert csak indulásnál kell lefusson.
A setup()-ba tedd be.
ugyanez a bekötés működik digispak -al, ott a videó a #19986 -ban
Ezért gondolom, hogy a program lesz a gond.Értsd meg, hogy a Digispark lapon van egy csomó kiegészítő elektronika néhány lábon (1,3,4). Tehát nem ugyanez a bekötés.
Írták az INPUT helyett az INPUT_PULLUP beépített felhúzó ellenállás használatát, valamint a gomb állapota beolvasásánál ne a HIGH legyen a gombnyomás, hanem a LOW (a gomb a +5V helyett a GND-re zárja a pin-t), és nem kell kiegészítő ellenállás (a prell-t ez nem szünteti meg), ezt már megfogadtad?
[ Szerkesztve ]
-
ReFleXx
addikt
válasz lanszelot #20029 üzenetére
itt egy egyszeru kod:
const int buttonPin = 4;
int buttonState = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
delay(1000);
}
void loop() {
buttonState = digitalRead(buttonPin);
Serial.print("buttonState: ");
Serial.println(buttonState);
delay(50);
}
ha ezt feltoltve a gombot benyomva 0-ra kell veltozzon a buttonState, ha elengeded akkor 1, az ellenallast vedd ki, a kapcsolo legyen a 4-es pin es a GND között.
2020-as dakota közmondás: "Intel a csórók AMD-je"
-
bagarol
junior tag
válasz lanszelot #20029 üzenetére
Tanácsért fordulsz a fórumhoz, de nem fogadod meg.
Szomorú, hogy a hivatalos arduino oldalon így van a gomb.
A legnagyobb gond, hogy nem frissül a programod csak ha gombot nyomsz.
Tehát egyszer kiírja az adatokat és kész, utána a loopban pörög.
A setup utolsó sora legyenmindenRajtaVan()
; így nem üres képernyő fogad. -
lanszelot
addikt
válasz bagarol #20034 üzenetére
a program a gomb működését nézi
Azt mondtátok vegyek ki mindent, kivettem.
Csak mindig másolgatnom kellett a kódot ezért akartam, hogy lefusson egy function egyszer.
De már megtaláltam a hibát, a delay az.
A hőmérőnek viszont minimum 270-es delay kell, amúgy nem mutat semmit.
ezért raktam 300-ra, így már kevés a nem vett gombnyomás
Amit nem értek nem tudom megcsinálni. Kérdeztelek fentebb, hogy mivel legyen párhuzamosan kötve a kondenzátor. Nem kaptam választ. Így azt nem tudtam kipróbálni.ReFleXx:
igen, tökéletesen működik a progi
minden gombnyomás megvan.
ellenállás nélkül, és ellenállással is -
Janos250
őstag
válasz lanszelot #20035 üzenetére
Ne delay-el old meg, hanem egy max6675 olvasás után tárold el a ms értéket, és csak akkor olvass, ha az aktuális ms, és a letárolt közti különbség nagyobb egy megadott értéknél. A gomnyomást meg állapotban tárolhatod, és ha állapot is, ms is jó, akkor alvasol.
Ha egyszer átállsz ESP32-re, akkor ez egyszerűbb lesz.Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.
-
lanszelot
addikt
válasz bagarol #20036 üzenetére
oh, azt nem vettem észre
megcsináltam, egyáltalán nem jó
a képernyő folyamatos loop-ban van, és nem lehet kihozni belőle
hiába a változó értékeJanos250
ez azért nem jó, mert ha szobahőmérségletről berakom a fagyasztóba, akkor nem lesz 300-as delay és nem fog mérni, újra kell indítani
olyan megoldás kell ahol minimum 270-et minden esetben késleltet a lekérés
az pedig a delay vagy ha berakok egy relét az áramkörbe -
lanszelot
addikt
válasz Tomika86 #20039 üzenetére
Leírtam hogy miért nem lehet úgy megoldani.
Nagy hőkülönbségnél nem azonnal mutatja , hanem kell neki pár masodperc, míg a helyes hőfokot mutatja.
Ekkor nem lesz meg a 270 -es delay.
A hőmérő mérései között minimum 270 ezredmp kell.
Ott van a leírásában.
Tehát minden körülmény között így kell működnie.
Delay nélkül hogy ne kérje le addig a program?
Lehet az is hogy hogy csinálok egy stoppert, és minden 300-al osztható egesz számnál futtatja csak a lekérést.
Ekkor nem áll a program, tehát a gomb fog működni, de eszi a memóriát.
És ez jobb mint amit fent írtak, mert itt tuti nem fog addig lekerni. -
Tomika86
senior tag
válasz lanszelot #20040 üzenetére
Mit hogyan?
Elöször pont mérni fog egyet, utána meg 300ms-onként csinál 1 mérést.
Meséld el, hogy mivel másabb a delay? (arról beszélek ami a loopban van).
Belép a loop függvénybe a program és szünetelteti a delay a programfutást, amikor letil tovább megy, lefut minden kiírja az adatokat, megint szünet... Stb
Delay esetén ha a delay közepette van esemény akkor azt nem is látod, pl ha akkor nyomsz gombot.Setup blokk utolsó 2000ms is sok szerintem.
-
lanszelot
addikt
válasz Tomika86 #20042 üzenetére
Aryes mutatta nekem:
uint32_t lastms= 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if (millis() - lastms > 1000) {
lastms = millis();
Serial.println(lastms/1000);
}
}ez az időzítő , ebben lévő másodpercenként fut le
ezen kívül van :if (gombNyomas == 1) {
mindenRajtaVan();
} else if (gombNyomas == 2) {
homeroVanRajta();
} else if (gombNyomas == 3) {
gazVanRajta();
}tehát a gombnyomást érzékeli, és a változó értéke megváltozik, viszont 1mp múlva hajtja végre ami az első "if" -ben van
delay, de még sem az, hisz a program nem áll meg
[ Szerkesztve ]
-
its_grandpa
tag
válasz lanszelot #20000 üzenetére
Előrebocsájtom, hogy nem ismerem ezt a Digispark lapot, úgy ötletelek.
A gombnyomások számát a loop-ban figyeljük 10 sec-enként.A gombnyomás(ok) számolásához kell egy interrupt fv. a pin, meg egy változó.
const byte interruptPin = 2;
volatile int gombNyomas = 0 ; /*valtozo a gomb nyomas szamlalasara*/
void gombotnyom(){
gombNyomas ++; /* növeljük 1-el a gombnyomások számát */
}
A setup: (zanzásítva)
void setup() {
Serial.begin(9600); /*elindítja a sorosportot ...*/
pinMode(interruptPin, INPUT_PULLUP); /*inicializálja a gomb pin-t inputnak , default HIGH !!! */
attachInterrupt(digitalPinToInterrupt(interruptPin), gombotnyom, LOW); /* meghívjuk az fv.-t ha LOW-ra húzod a pin-t */
/* ami még a setupba kell */
} /* setup_end */
És most jöjjön a loop.
void loop() {
if (millis() - lastms > 10000) /* eltelt 10 sec ? */
{
lastms = millis();
if gombNyomas > 0 /* volt valamennyi gombnyomás */
{
megnyomva();
gombNyomas = 0 ; /* nullázzuk a nyomások számát
}
} /* gombnyomások számának olvasás időzítése */
Serial.println(gombNyomas); /* kiírjuk hány gombnyomásnál tartasz */
} /* loop_end */
Jöjjön a megnyomva fv.void megnyomva() {
switch (gombNyomas) {
case 1:
mindenRajtaVan();
break;
case 2:
homeroVanRajta();
break;
case 3:
gazVanRajta();
break;
}
} /* megnyomva_end */
Most látom írtál közben.
A kódomban az interrupt pin a 2-es, neked ott a gázérzékelő van, szóval valamit módosítani kell. Én az arduinóból indultam ki, ott az Uno, Nano, Mini, other 328-based lapokon csak a 2,3 pin használható interruptra. -
nagyúr
válasz its_grandpa #20046 üzenetére
Ha kódot illesztesz be, előtte állítsd át a szerkesztőt a "régi szerkesztő"-re, mert akkor olvasható lesz a kód!
-
nagyúr
válasz its_grandpa #20048 üzenetére
🫡
-
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#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);
}