Hoi pascal100,
Inderdaad, graag je code posten tussen [code] [/code]
tags, dat maakt het veel gemakkelijker je te helpen.
De IDE gaat voor het compileren, eerst controleren of alles wel klopt (voor zover dat te vinden is).
Bij de eerste de beste fout die de IDE tegen komt, gooit ie een foutmelding naar je, en stopt dan met de verdere afhandeling.
Die regel hierboven is ter voorbereiding voor je, want er is nog wel meer aan te merken op jouw sketch tot nog toe.
Wanneer ik de code die je gepost hebt, kopieer naar de IDE, dan kom ik bij de genoemde regels uit op dingen die je met tempPin wil doen.
Je begint er mee (regel 10) om tempPin te definiëren, en das goed.
Maar defines zijn geen onderdeel van je code, het zijn instructies voor de IDE.
Daarom moet je een define niet afsluiten met een puntkomma.
Met een define vertel je de IDE (specifiek in jouw code), dat elke keer wanneer je tempPin typt, je eigenlijk 14 bedoelt.
Direct daarna vertel je dat wanneer je tempPin typt, 15 bedoelt.
Met dat laatste zal de IDE geen probleem hebben, je hebt je schijnbaar bedacht en wil nu iets anders dan zojuist
Wanneer het een persoon zou zijn, zou ie tegen je roepen: "wat wil je nou, 14 of 15 ?"
Maar het zal in de IDE wel tot fouten leiden.
Een stukje verderop doe je ook nog iets met het getal 15 in verband met een sensor die je verder helemaal niet gebruikt (in de getoonde code).
Ook includes doe je om dezelfde redenen zonder ;
In regel 22 doe je iets raars want je probeert iets met tempPin wat niet te begrijpen is.
Dat komt omdat tempPin [spatie] 14 een heel andere betekenis heeft dan tempPin14 of tempPin_14.
Het slaat ook nergens op om tempPin14 te gebruiken. want dan ben je veel sneller klaar door alleen naar het getal 14 te wijzen.
Wat je werkelijk met deze 2 problemen zou moeten willen, is het gemakkelijker te maken je code lezen.
Daarom helpt het gebruik van tempPin erg weinig.
Dus kan ik me voorstellen dat je niet alleen een naam bedenkt die beschrijft dat de betreffende pin iets met temperatuur te maken heeft, maar dat je nog duidelijker maakt over welke temperatuur je het dan hebt.
Dus dhtPin en lmPin bijvoorbeeld (als dat klopt met wat je gebruiken wil).
Wanneer je dan een waarde gaat binnenhalen, doe je dit:
int temperature = analogRead(pin15);
Maar je hebt pin15 niet gedefinieerd, dus de IDE heeft er helemaal geen idee van dat je hiermee naar pin 15 wil verwijzen.
Met deze kleine wijziging zal ie dat veel beter gaan snappen:
int temperature = analogRead(15);
Alleen weet ik niet uit het hoofd of pin 15 wel een analoge pin is (of met ArdLab_Gent's woorden: Welke Arduino gebruik je ?).
Dan nog je LCD.
Je vergeet de LCD te initialiseren, dus of die ooit gaat werken weet ik niet.
Je hebt m wel verteld op welke pinnen de LCD is aangesloten, maar niet dat ie die ook moet gaan gebruiken en hoeveel regels en tekens per regel dat ding dan heeft.
Je vertelde dat je een 16,2 display gebruikt.
Das dus 2 regels van 16 karakters.
Maar je was schijnbaar vergeten dat het tellen niet bij 1, maar bij 0 begint.
Dus de eerste positie van je LCD is positie 0,0.
Wanneer je je LCD dus deze instructie geeft:
lcd.setCursor(15, 2);
Dan zet je de cursor op de laatste plaats van de 3e regel op je LCD met 2 regels.
Zou zomaar kunnen zijn dat dat wel werkt en de betreffende waarde uiteindelijk op 0,1 uitkomt.
Maar waarom wil je het zo moeilijk maken (ik geloof helemaal niet dat je dat wil hoor), terwijl het veel duidelijker kan ?
[edit]
Ik vergeet nog iets dat me opviel.
Dit stukje zal leiden tot verwarring van de IDE:
#include <DHT.h>;
.
.
DHT11 dht11;
Je probeert ogenschijnlijk DHT.h aan te roepen wanneer je dht11 typt.
Maar dan moet je niet als eerste DHT11 typen.
Verder moet je de library ook vertellen (klik ! voor het voorbeeld waar ik dat vandaan heb) welke DHT sensor je gebruikt
DHT dht(14, DHT11);
Je code bevat dus voldoende aanwijzingen om te concluderen dat je een DHT11 sensor wil gebruiken aan pin 14 van je Arduino.
[/edit]
Ik begrijp best dat je al een tijdje aan het stoeien bent met je sketch en dat je de laatste sketch die je gemaakt hebt hier hebt laten zien.
Daar denk ik ook sommige van de aangestipte problemen uit te kunnen verklaren.
Om dit soort problemen te voorkomen, sla ik zelf telkens als ik wat aan een code heb veranderd, de sketch op met een nieuwe naam.
Dus eerst sketch1.ino, dan sketch1.1.ino enzovoorts.
Zo word het dus vrij eenvoudig om aan versiebeheer te doen.
En kun je gemakkelijk een stap (of meer) terug wanneer het toch niet helemaal de goede kant op ging met je laatste inspanningen.
En ik probeer ook om problemen 1 voor 1 aan te pakken, maar das wel iets lastiger omdat sommige problemen pas naar voren komen als je verder bent met je sketch en/of iets wil uitbreiden.