Ik heb een arduino nano met daar aan 2 lm35 temp sensors en een 16x2 lcd gesloten.
Maar nu heb ik het programmatie er in gezet maar nu leest hij beide sensors wel maar geeft hij dubbel de temperatuur aan dan als in de 1 sensor programma er in heb . Dus nu staat er temp 1 = 44 c en temp 2 = 46 c . Maar als in de 1 sensor programma er in set is de temperatuur 22 graden van sensor 1 . Hoe kan het dat in dubbel de waarde heb hij leest de sensors wel apart . Als ik de sensors warm maak kun je wel zien dat er maar 1 van de 2 warmer word
dit is mijn programmatej
#include <LiquidCrystal.h>
int reading1 = 0;
int sensorPin1 = A0;
int reading2 = 1;
int sensorPin2 = A1;
int relay1 = 13;
int relay2 = 10;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
}
Geen idee of het hier aan zou liggen maar misschien moet je van de eerste "celsius" "celsius1" maken
althans zo is het bij mij en dan werkt het wel.
En iets anders wat me opvalt is lcd.setCursor(0, 01); moet dat niet lcd.setCursor(0, 1); zijn ?
Volgens dat is de berekening voor de temperatuur :
temp = (5.0 * analogRead(tempPin) * 100.0) / 1024;
of
temp = analogRead(tempPin);
temp = temp * 0.48828125;
Dat kan de factor +/- 2 verklaren
int temp1 = 0;
int sensorPin1 = A0;
int temp2 = 1;
int sensorPin2 = A1;
int relay1 = 13;
int relay2 = 10;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
}
lm35 is 10mV /celsius.
en dus zoals vadeveni al verteld:
zul je een omrekening moeten maken
1024=5 volt = 500 graden
dus 500/1024 is die 0.488
en als dus 44 graden maal 0.488 doet dan krijg je precies de verwachting.
je hebt 3+1 delen in een programma
boven de setup voor declaraties en libs.
de setup voor allerlei settings zoals output etc.
loop voor je programma
en onder de loop de functies.
in de loop zet je dus de beide delen die nu in de loop staan en een verwijzing in de loop.
Pak twee van de voorbeeld sketches die je kunt combineren.
ie sketches zijn namelijk meestal niet zo groot en hebben er mooi wat uitleg bij staan.
Probeer die dan eens te combineren.
Let daarbij op de verschillende delen van de sketch die allemaal worden aangeduid met het woord void en dan een naam.
Shooter gaf aan dat er 3 van die delen zijn, maar tot nog toe heb jij in de sketches die je hebt laten zien telkens maar 2 van die delen getoond, namelijk void setup () en void loop(), en dat is wat je ook minimaal nodig hebt om een sketch te maken (anders zal je m ook niet kunnen compileren).
Wel heb je nog boven void setup () nog wat declaraties en includes staan.
Je moet dus de delen met dezelfde naam gaan samenvoegen.
Daarbij moet je dan uiteraard ook controleren of er bijvoorbeeld geen verschillende namen worden gegeven aan dezelfde pinnen en of er niet toevallig pinnen en/of namen dubbel gebruikt worden voor verschillende zaken.
Ben weer even bezig geweest met de 2 tempratuur meters .
Heb een andere lcd er achter met een ic dus inplaats van 13 draden naar het lcd heb ik nu maar 4 draden
int temp1 = 0;
int sensorPin1 = A0;
int temp2 = 1;
int sensorPin2 = A1;
int relay1 = 13;
int relay2 = 10;
// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified module
void setup()
{
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(LOW); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH
lcd.begin(16, 2);
lcd.clear();
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
}
void loop() {
temp1 = analogRead(sensorPin1);
temp1 = temp1 * 0.48828125;
int celsius1 = temp1;
lcd.setCursor(0,0);
lcd.print("binnentemp ");
lcd.setCursor(12,0);
lcd.print(celsius1, DEC );
lcd.print((char)223);
lcd.print("c");
als je omrekent wordt het getal een float en dat pak je niet goed op, op scherm kun je het een float laten en printen met %2.1f of het dus celsius wordt dan een float.
dus float celsius2!!!! = temp2 * 0.48828125;