Hejsa alle.
Jeg sidder og roder lidt med at lave en lille styring i arduino med
4 tmp9700 temperatur sensorer som skal vise temperaturen diverse steder og starte en blæser hvis en af dem bliver for varm. Samtidig med skal der være en lysstyring som jeg gerne ville have til at køre med en encoder og et PWM
output. Men problemet er at når arduinoen udregner de 4 temperaturer så kan jeg ikke bruge en encoder . Den tæller slet ikke. Jeg har så sat en alm. pot ind og bruger den på en analog input og ud fra den kan jeg sagtens styre output fint nok. men fra jeg drejer på potten til der sker noget tager ca 1 sekund.
Nogen som har mod på at fortælle mig hvor det går galt henne i den her kode ?
- #include <LiquidCrystal.h>
- #include <Encoder.h>
-
- LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
-
- const int LED = 13;
- const int FAN = 3;
- const int potPin = A4;
- int tempMin = 10;
- int tempMax = 30;
- int fanSpeed;
- int fanLCD;
- const int analogInPin = A4; // potentiometer
- const int analogOutPin = 5; // LED
-
- int sensorValue = 0; // value read from the pot
- int outputValue = 0; // value output to the PWM (analog out)
- int lightLCD = 0;
-
-
- void setup()
- {
- Serial.begin(9600);
- lcd.begin(20, 4);
- pinMode(LED, OUTPUT);
- pinMode(FAN, OUTPUT);
- pinMode(5, OUTPUT);
-
- }
-
- void loop()
- {
- // read the analog in value:
- sensorValue = analogRead(analogInPin);
- // map it to the range of the analog out:
- outputValue = map(sensorValue, 0, 1023, 0, 255);
- // change the analog out value:
- lightLCD = map(outputValue, 0, 255, 0, 100);
- analogWrite(analogOutPin, outputValue);
-
-
- float temperature1 = 0.0;
- float temperature2 = 0.0;
- float temperature3 = 0.0;
- float temperature4 = 0.0;
- int sample1;
- int sample2;
- int sample3;
- int sample4;
- float ten_samples1 = 0.0;
- float ten_samples2 = 0.0;
- float ten_samples3 = 0.0;
- float ten_samples4 = 0.0;
-
-
- for (sample1 = 0; sample1 < 10; sample1++) {
- temperature1 = ((float)analogRead(A0) * 5.0 / 1024.0) - 0.5;
- temperature1 = temperature1 / 0.01;
- delay(100);
- ten_samples1 = ten_samples1 + temperature1; }
- for (sample2 = 0; sample2 < 10; sample2++) {
- temperature2 = ((float)analogRead(A1) * 5.0 / 1024.0) - 0.5;
- temperature2 = temperature2 / 0.01;
- delay(100);
- ten_samples2 = ten_samples2 + temperature2; }
- for (sample3 = 0; sample3 < 10; sample3++) {
- temperature3 = ((float)analogRead(A2) * 5.0 / 1024.0) - 0.5;
- temperature3 = temperature3 / 0.01;
- delay(100);
- ten_samples3 = ten_samples3 + temperature3; }
- for (sample4 = 0; sample4 < 10; sample4++) {
- temperature4 = ((float)analogRead(A3) * 5.0 / 1024.0) - 0.5;
- temperature4 = temperature4 / 0.01;
- delay(100);
- ten_samples4 = ten_samples4 + temperature4; }
-
- temperature1 = ten_samples1 / 10.0;
- temperature2 = ten_samples2 / 10.0;
- temperature3 = ten_samples3 / 10.0;
- temperature4 = ten_samples4 / 10.0;
-
- lcd.setCursor(0, 0);
- lcd.print("INDE ");
- lcd.print(temperature1);
- lcd.setCursor(0, 1);
- lcd.print("UDE ");
- lcd.print(temperature2);
- lcd.setCursor(0, 2);
- lcd.print("KOLE ");
- lcd.print(temperature3);
- lcd.setCursor(0, 3);
- lcd.print("FAN ");
- lcd.print(temperature4);
-
-
-
- if (temperature1 < tempMin) {
- fanSpeed = 0;
- digitalWrite(FAN, LOW);
- }
-
- if((temperature1 >= tempMin) && (temperature1 <= tempMax)) {
- fanSpeed = map(temperature1, tempMin, tempMax, 32, 255);
- fanLCD = map(temperature1, tempMin, tempMax, 0, 100);
- analogWrite(FAN, fanSpeed);
- }
-
- if(temperature1 > tempMax) {
- digitalWrite(LED, HIGH);
- } else {
- digitalWrite(LED, LOW);
- }
-
- lcd.setCursor(11, 0);
- lcd.print("FAN SPEED");
- lcd.setCursor(11, 1);
- lcd.print(fanLCD);
- lcd.print("%");
- lcd.setCursor(11, 2);
- lcd.print("LYS");
- lcd.setCursor(11, 3);
- lcd.print(lightLCD);
- lcd.print("%");
- }