-
Fototrend
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
-
Imy
veterán
Beleraktam a programba, de jelen esetben is össze vissza ugrál. Ha csak az encoder van benne, a hőmérséklet mérés ls kiírás nem, akkor jó. Okés, hogy a sok serial print, de az interuptnak nem kellene azt kiküszöbölnie?
#include <Adafruit_MAX31865.h>// Use software SPI: CS, DI, DO, CLKAdafruit_MAX31865 thermo = Adafruit_MAX31865(5, 6, 7, 8);// use hardware SPI, just pass in the CS pin//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);// Rotary Encoder Module connectionsconst int PinSW=3; // Rotary Encoder Switchconst int PinDT=4; // DATA signalconst int PinCLK=2; // CLOCK signal// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000#define RREF 430.0// The 'nominal' 0-degrees-C resistance of the sensor// 100.0 for PT100, 1000.0 for PT1000#define RNOMINAL 100.0//Resistance meterfloat Ra = 0.00385;float R0 = 20.9;float Rt;float T;///////ENCODER//////////////////////////// Variables to debounce Rotary Encoderlong TimeOfLastDebounce = 0;int DelayofDebounce = 0.01;// Store previous Pins stateint PreviousCLK;int PreviousDATA;int displaycounter=0; // Store current counter value/////////////////////////////// TEMPERATURE_SET///////////////////////////////////////////int Temp_set_pos;int Temp_set_last;int Temp_up;void setup() {Serial.begin(115200);Serial.println("Adafruit MAX31865 PT100 Sensor Test!");thermo.begin(MAX31865_2WIRE); // set to 2WIRE or 4WIRE as necessarypinMode(PinCLK,INPUT_PULLUP);pinMode(PinDT,INPUT_PULLUP);pinMode(PinSW,INPUT_PULLUP);// Put current pins state in variablesPreviousCLK=digitalRead(PinCLK);PreviousDATA=digitalRead(PinDT);// Set the Switch pin to use Arduino PULLUP resistorspinMode(PinSW, INPUT_PULLUP);}void loop() {///////////MAX31865////////////////////////////////////////////////////////////////////////////uint16_t rtd = thermo.readRTD();//Serial.print("RTD value: "); Serial.println(rtd);float ratio = rtd;ratio /= 32768;Rt = RREF * ratio;T = ((Rt - R0) / (R0 * Ra));//Serial.print("Ratio = "); Serial.println(ratio,8);Serial.print("Resistance = "); Serial.print(RREF * ratio, 2); Serial.println(" ohm");//Serial.print("Temperature = "); Serial.println(thermo.temperature(RNOMINAL, RREF));Serial.print("PakaTemp = "); Serial.print(T, 2); Serial.println(" C");// Check and print any faultsuint8_t fault = thermo.readFault();if (fault) {Serial.print("Fault 0x"); Serial.println(fault, HEX);if (fault & MAX31865_FAULT_HIGHTHRESH) {Serial.println("RTD High Threshold");}if (fault & MAX31865_FAULT_LOWTHRESH) {Serial.println("RTD Low Threshold");}if (fault & MAX31865_FAULT_REFINLOW) {Serial.println("REFIN- > 0.85 x Bias");}if (fault & MAX31865_FAULT_REFINHIGH) {Serial.println("REFIN- < 0.85 x Bias - FORCE- open");}if (fault & MAX31865_FAULT_RTDINLOW) {Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");}if (fault & MAX31865_FAULT_OVUV) {Serial.println("Under/Over voltage");}thermo.clearFault();}Serial.println();//delay(500);// If enough time has passed check the rotary encoderif ((millis() - TimeOfLastDebounce) > DelayofDebounce) {check_rotary(); // Rotary Encoder check routine belowPreviousCLK=digitalRead(PinCLK);PreviousDATA=digitalRead(PinDT);TimeOfLastDebounce=millis(); // Set variable to current millis() timer}// Check if Rotary Encoder switch was pressedif (digitalRead(PinSW) == LOW) {displaycounter=0; // Reset counter to zeroSerial.print("Counter = "); Serial.println(displaycounter);}}// Check if Rotary Encoder was movedvoid check_rotary() {if ((PreviousCLK == 0) && (PreviousDATA == 1)) {if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 0)) {displaycounter++;Serial.print("Counter = "); Serial.println(displaycounter);}if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 1)) {displaycounter--;Serial.print("Counter = "); Serial.println(displaycounter);}}if ((PreviousCLK == 1) && (PreviousDATA == 0)) {if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 1)) {displaycounter++;Serial.print("Counter = "); Serial.println(displaycounter);}if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 0)) {displaycounter--;Serial.print("Counter = "); Serial.println(displaycounter);}}if ((PreviousCLK == 1) && (PreviousDATA == 1)) {if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 1)) {displaycounter++;Serial.print("Counter = "); Serial.println(displaycounter);}if ((digitalRead(PinCLK) == 0) && (digitalRead(PinDT) == 0)) {displaycounter--;Serial.print("Counter = "); Serial.println(displaycounter);}}if ((PreviousCLK == 0) && (PreviousDATA == 0)) {if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 0)) {displaycounter++;Serial.print("Counter = "); Serial.println(displaycounter);}if ((digitalRead(PinCLK) == 1) && (digitalRead(PinDT) == 1)) {displaycounter--;Serial.print("Counter = "); Serial.println(displaycounter);}}Serial.print("Counter = "); Serial.println(displaycounter);}
Új hozzászólás Aktív témák
- Microsoft Surface Go 2 m3-8100Y 8GB 128GB 1 év garancia
- -ÚJ,2 ÉV GAR- GAMER PC: i5-14400F (10mag/16szál) +RX 6600/6700XT +16-64GB DDR4! SZÁMLA! 70 féle ház!
- Microsoft Surface Go 2 m3-8100Y 8GB 128GB 4G LTE 1 év garancia
- APPLE IPAD 10.GEN 64GB Wifi , Pink szinben, Üzletből, 27% ÁFÁS
- Apple MacBook Air 13 M1 8GB 256GB magyar bill 1 év garancia
- Eladó Realme gt neo 2 5g Dobozában tokkal
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Asrock B450M R5 5500 16GB DDR4 512GB SSD RTX 2060 Super 8GB THERMALTAKE VERSA H17 600W
- 24 GB-os RTX 3090 OEM
- HIBÁTLAN APPLE WATCH ULTRA 2 NATURAL TITANIUM 49MM -1 ÉV GARANCIA - MS3714, 97% AKKUMULÁTOR
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
ekkold
